分类: Mathematic

线性方程组 解的判别 与 解的结构

Github地址 https://github.com/tianzhenyun/formula

一.线性方程组求解定理

1.线性方程组有解判别定理 线性方程组
a11 x1 + a12 x2 + … + a1n x n = b1 ,
a21 x1 + a22 x2 + … + a2n x n = b2 ,
......................................................
as1 x1 + as2 x2 + … + asn x n = bs
有解的充分必要条件是 : 它的系数矩阵与增广矩阵有相同的秩.

2.齐次线性方程组 a11 x1 + a12 x2 + … + a1n x n = 0 ,
a21 x1 + a22 x2 + … + a2n x n = 0 ,
......................................................
as1 x1 + as2 x2 + … + asn x n = 0
有非零解的充分必要条件是: 它的系数矩阵的秩 r 小于未知量个数 n.

齐次线性方程组求解一般步骤:

  • 把系数矩阵通过初等变换,变换成阶梯形矩阵.
  • 判断阶梯形矩阵中非零行的个数秩(r),以及计算自由元个数m=n-r.
  • 确定自由元位置,然后以次为它们赋值1,0...
  • 求解出方程组的基础解系.
  • 用基础解系表示出方程全解.

非齐次线性方程组求解,与齐次线性方程组求解过程基本一致,只需要再求出一个特解。

继续阅读

矩阵的逆 C 语言 算法一

一.求解步骤

  • 矩阵必须是方阵(即矩阵的行列相等)
  • 矩阵可逆的充分必要条件是其行列式的值不为零
  • 求出矩阵的伴随矩阵
  • 逆矩阵=行列式值的倒数*伴随矩阵

二.算法

#include <stdio.h>
#include <stdlib.h>

void main()
{
    int i,j;
    int dimension;
    double deterValue=1;
    double **array,**deterArray, **companionMatrix, *temp;

    //声明函数
    void printfDouble2Dimension(int s, int n, double **array);
    double deter(int dimension, double **array);
    void copyDouble2Dimension(int s, int n, double **source, double **dest);
    void getCompanionMatrix(int dimension, double **array, double **companionMatrix);
    ......

继续阅读

矩阵的逆 C 语言 算法二

一.初等变换法

如果矩阵A和B互逆,则AB=BA=E。由条件AB=BA以及矩阵乘法的定义可知,矩阵A和B都是方阵。再由条件AB=E以及定理“两个矩阵的乘积的行列式等于这两个矩阵的行列式的乘积”可知,这两个矩阵的行列式都不为0。也就是说,这两个矩阵的秩等于它们的级数(或称为阶,也就是说,A与B都是方阵,且rank(A) = rank(B) = n)。换句话说,这两个矩阵可以只经由初等行变换,或者只经由初等列变换,变为单位矩阵。
因为对矩阵A施以初等行变换(初等列变换)就相当于在A的左边(右边)乘以相应的初等矩阵,所以我们可以同时对A和E施以相同的初等行变换(初等列变换)。这样,当矩阵A被变为E时,E就被变为A的逆阵B。

继续阅读