如何用矩阵求解线性方程组

如何用矩阵求解线性方程组,第1张

矩阵求解线性方程组

当然就是把线性方程组

表示为矩阵的形式

然后使用初等行变换的方法

得到最简型矩阵之后

得到各个未知数之间的关系

于是解出来线性方程组

首先

E-A=

1 -1 0

1 0 -1

1 0 -2

再用初等行变化求矩阵的逆矩阵的时候,

即用行变换把矩阵(E-A,E)化成(E,B)的形式,那么B就等于E-A的逆

在这里

(E-A,E)=

1 -1 0 1 0 0

1 0 -1 0 1 0

1 0 -2 0 0 1 第3行减去第2行,第2行减去第1行

1 -1 0 1 0 0

0 1 -1 -1 1 0

0 0 -1 0 -1 1 第3行乘以-1,第2行加上第3行

1 -1 0 1 0 0

0 1 0 -1 2 -1

0 0 1 0 1 -1 第1行加上第2行

1 0 0 0 2 -1

0 1 0 -1 2 -1

0 0 1 0 1 -1

这样就已经通过初等行变换把(E-A,E)~(E,B)

于是得到了原矩阵E-A的逆矩阵就是

0 2 -1

-1 2 -1

0 1 -1

//作品:多元一次方程组的计算

//作者:与你看日出

//日期:2009年4月25日 星期六

//说明:输出值只能是小数(最多六位),如x=1876546

//Han: 初始设的最多未知数的个数,运行程序后只能比它的个数小

//hang:计算中途中自己改变的未知数的个数

//JUZHEN:初始的示例矩阵

#include <stdioh>

#include <mathh>

#define Han 200//(可自设)多元一次方程组有n行n+1列(多的一列是等号右边的值),给出行数就能确定矩阵,

#define JUZHEN {1,1,1,1,5},{1,2,-1,4,-2},{2,-3,-1,-5,-2},{3,1,2,11,0}//示例一个

main()

{

int i,j,k,m,n,t,cf,hang=4;

float temp;

float AA[Han][Han+1]={JUZHEN};//定义所要计算的数组

do//判断是否重试

{

for(i=0;i<hang;i++)//输出所定义的数组

{

printf("\n");

for(j=0;j<hang+1;j++)

{

printf("%g\t",AA[i][j]);

}

}

printf("\n");

printf("是否自己输入?是:1;否:0");

scanf("%d",&t);

if(t==1)//判断是否自己输入数组

{

printf("输入未知数的个数");

scanf("%d",&hang);

for(i=0;i<hang;i++)//输入所定义的数组

{

for(j=0;j<hang+1;j++)

{

printf("第%d行第%d列的数为:",i+1,j+1);

scanf("%f",&AA[i][j]);

}

}

}

for(k=0;k<hang;k++)//这个大循环将数组的左下角转化为0

{

while(AA[k][k]==0)//如果第K行K列的那个数为0,则加和重组一行。

{

for(m=k+1;m<hang;m++)

for(n=k;n<hang+1;n++)

{

AA[k][n]+=AA[m][n];

}

}

for(i=k;i<hang;i++)//将第K列下面变为1

{

temp=AA[i][k];

for(j=k;j<hang+1;j++)//将每列变为1

{

AA[i][j]/=temp;

}

}

for(i=k+1;i<hang;i++)//将下面的数列与上面的数列相减使其下面为0

{

for(j=0;j<hang+1;j++)

{

AA[i][j]-=AA[k][j];

}

}

}

for(k=hang-2;k>=0;k--)//这个大循环将数组的右上角转化为0

{

for(i=k+1;i<hang+1-1;i++)//将第i列上面变为0

{

AA[k][hang+1-1]-=AA[k][i]AA[i][hang+1-1];

AA[k][i]=0;

}

}

for(i=0;i<hang;i++)//输出该矩阵(也就是多元一次方程组)的解

{

printf("\n");

for(j=0;j<hang+1;j++)

{

printf("%g\t",AA[i][j]);

}

}

printf("\n未知数的值为:\n");

for(i=0;i<hang;i++)//输出该矩阵(也就是多元一次方程组)的解

{

printf("x(%d)=\t%g\n",i+1,AA[i][hang+1-1]);

}

printf("\n");

printf("是否再试一次?是:1;否:0");

scanf("%d",&cf);

}

while(cf==1);//判断是否重试

}

a=[1 0;0 2];

b=[1;3];

syms x1 x2;

y=a[x1;x2]+b;

s=solve(y(1),y(2),'x1','x2');

sx1 %w2值

sx2 %w2值

以上就是关于如何用矩阵求解线性方程组全部的内容,包括:如何用矩阵求解线性方程组、求解矩阵方程 求过程、C语言用矩阵求解方程组等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/10103872.html

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

发表评论

登录后才能评论

评论列表(0条)

保存