不是方阵的矩阵怎么求逆矩阵?比如[1 2 3 4]

不是方阵的矩阵怎么求逆矩阵?比如[1 2 3 4],第1张

不是方阵矩阵没有逆矩阵的概念,逆矩阵只对方阵定义的。

逆矩阵的定义:假设A是数域上的一个n阶矩阵,若在相同数域上存在另一个n阶矩阵B,他能够使得AB=BA=E ,则我们称B是A的逆矩阵,而A则被称为可逆矩阵。注:E为单位矩阵。

如果矩阵A和B互逆,则AB=BA=I。由条件AB=BA以及矩阵乘法的定义可知,矩阵A和B都是方阵。再由条件AB=I以及定理“两个矩阵的乘积的行列式等于这两个矩阵的行列式的乘积”可知,这两个矩阵的行列式都不为0。

扩展资料:

对矩阵A施以初等行变换(初等列变换)就相当于在A的左边(右边)乘以相应的初等矩阵,所以可以同时对A和B施以相同的初等行变换(初等列变换)。这样,当矩阵A被变为时,就被变为A的逆矩阵。

广义逆阵(Generalized inverse)又称伪逆,一种对逆阵的推广。一般所说的伪逆是指摩尔-彭若斯广义逆,它是由E H Moore和Roger Penrose分别独立提出的。伪逆在求解线性最小二乘问题中有重要应用。

参考资料来源:百度百科——逆矩阵

public static double[,] Inverse(double[,] Array){
    int m = 0;int n = 0;
    m = ArrayGetLength(0); //获取矩阵的行数
    n = ArrayGetLength(1); //获取矩阵的列数
    //有正常的逆矩阵必须断言m=n,下面都假设m和n是一样的
    //为什么要去2m+1行和列?
    //其实应该是m行2n列就好了啊,为什么呢,看下面。
    double[,] array=new double[2m+1,2n+1];     //疑为[m,2n]
    /
    行变换求逆矩阵首先要做的就是把A和I并列放在一起[A|I]
    也就是这个形式:
    a00,a01,a02,,ann,1,0,0,0,,0
    a10,a11,a12,,a1n,0,1,0,0,,0
    a20,a21,a22,,a2n,0,0,1,0,,0
    
    
    an0,an1,an2,,ann,0,0,0,0,,1
    下面三个for做的就是这件事
    /
    //初始化全0
    for (int k = 0; k < 2  m + 1; k++){      //疑为k<m
        for (int t = 0; t < 2  n + 1; t++){     //疑为t<2n
           array[k, t] = 000000000;
        }
    }
    //初始化左面的A
    for (int i = 0; i < m; i++){
        for (int j = 0; j < n; j++){
            array[i, j] = Array[i, j];
        }
    }
    //初始化右面的I
    for (int k = 0; k < m; k++){
        for (int t = n; t <= 2  n; t++){
            if ((t - k) == m){
                array[k, t] = 10;
            }else{
                array[k, t] = 0;
            }
        }
    }
    //得到逆矩阵
    //这样把A经过行变化变成I,那么右面的I就会变为A逆
    for (int k = 0; k < m; k++){
    //把对角元素变为1
        if (array[k, k] != 1){
            double bs = array[k, k];
            array[k, k] = 1;
            for (int p = k + 1; p < 2  n; p++){
                array[k, p] /= bs;
            }
        }
        //全部其他行减第k行,使第k列只有[k,k]元素是1,其余是0。   
        for (int q = 0; q < m; q++){
            if (q != k){
                double bs = array[q, k];
                for (int p = 0; p < 2  n; p++){
                    array[q, p] -= bs  array[k, p];
                }
            }else{
                continue;
            }
        }
     }
     //通过上面的变化
     /
     [A|I]变为[I|A逆]
     所以右面的那一半就是A逆
     下面就是把它拿粗来
     /
    double[,] NI = new double[m, n];
    for (int x = 0; x < m; x++){
        for (int y = n; y < 2  n; y++){
            NI[x, y - n] = array[x, y];
        }
    }
    return NI;
}

压力角的渐开线函数,记作inv
渐开线函数的公式为:invα=tgα-α
等号右边第一项的 α是角度值, 而第二项, α是弧度值
也可以按照下面公式,其实一样:
invα=tgα- απ/180
可得25度的渐开线函数等于:0029975345


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10529214.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-09
下一篇 2023-05-09

发表评论

登录后才能评论

评论列表(0条)

保存