C#矩阵求逆的运算方法

2025-11-19 04:57:33

1、双击运行visual studio 2015,文件-新建一个项目,可以是窗体也可以是控制台应用程序,看个人的编程题目要求而定。

C#矩阵求逆的运算方法

2、定义一个矩阵(数组)a,c#中都是用数组来存储矩阵的,下面就求矩阵a的逆:

 double[,] a = new double[3, 3] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };

C#矩阵求逆的运算方法

3、下面我们写一个类来实现矩阵的求逆(也可以写函数求逆),因为类只要调用就行了,而且不在主程序的代码中,可以简化我们的程序。创建方法如下:解决方案资源管理器-项目名称-添加-类。

C#矩阵求逆的运算方法

4、类的名称改为“qiuni”。

C#矩阵求逆的运算方法

5、在“求逆”类中添加矩阵求逆的代码(图片只截取了部分,全部代码如下):

 public static double[,] 求逆(double[,] A)

        {

            int n;

            n = A.GetLength(0);

            if (n != A.GetLength(1)) return null;

            double[,] C = new double[n, 2 * n];

            double[,] D = new double[n, n];

            for (int i = 0; i < n; i++)

                for (int j = 0; j < n; j++)

                    C[i, j] = A[i, j];

            for (int i = 0; i < n; i++)

                C[i, i + n] = 1;

            for (int k = 0; k < n; k++)

            {

                double max = Math.Abs(C[k, k]);

                int ii = k;

                for (int m = k + 1; m < n; m++)

                    if (max < Math.Abs(C[m, k]))

                    {

                        max = Math.Abs(C[m, k]);

                        ii = m;

                    }

                for (int m = k; m < 2 * n; m++)

                {

                    if (ii == k) break;

                    double c;

                    c = C[k, m];

                    C[k, m] = C[ii, m];

                    C[ii, m] = c;

                }

                if (C[k, k] != 1)

                {

                    double bs = C[k, k];

                    if (bs == 0)

                    {

                        Console.WriteLine("求逆错误!结果可能不正确!");

                        break;

                        //return null;

                    }

                    C[k, k] = 1;

                    for (int p = k + 1; p < n * 2; p++)

                    {

                        C[k, p] /= bs;

                    }

                }

                for (int q = k + 1; q < n; q++)

                {

                    double bs = C[q, k];

                    for (int p = k; p < n * 2; p++)

                    {

                        C[q, p] -= bs * C[k, p];

                    }

                }

            }

            for (int q = n - 1; q > 0; q--)

            {

                for (int k = q - 1; k > -1; k--)

                {

                    double bs = C[k, q];

                    for (int m = k + 1; m < 2 * n; m++)

                    {

                        C[k, m] -= bs * C[q, m];

                    }

                }

            }

            for (int i = 0; i < n; i++)

                for (int j = 0; j < n; j++)

                    D[i, j] = C[i, j + n];

            return D;

        }

C#矩阵求逆的运算方法

6、最后,回到主程序,定义矩阵(数组)b为a的逆矩阵,并调用我们的“求逆”类,就可以实现对矩阵的求逆运算了:

C#矩阵求逆的运算方法

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢