用集算器解多元一次方程组

给出一个多元一次方程组,对于n个未知数,方程组中需要包含n个方程,如:

3x+4y+5z=26

5x+6y+10z=47

4x+8y+7z=41

那么,如何用集算器来求解这个多元一次方程组呢?首先,需要将方程组整理为标准形式,并把参数填入一个文本文件中,同一行的参数之间用Tab分隔,如下:


如何用编程的方式求解多元一次方程组?常用的方法就是加减消元法,如下面的方程组:

a11x1+a12x2+a13x3+…+a1nxn=a10

a21x1+a22x2+a23x3+…+a2nxn=a20

a31x1+a32x2+a33x3+…+a3nxn=a30

……

an1x1+an2x2+an3x3+…+annxn=an0

当a11不为0时,将第1个方程各项同时乘以a21/a11,并用第2个方程减去,就可以把第2个方程中x1的系数消为0。如果a11等于0,则需要找到1个x1的系数不为0的方程,将其移到第一个。用同样的方法,可以消去第1个之后所有方程式中,x1的系数,如下:

a11x1+a12x2+a13x3+…+a1nxn=a10

0+b22x2+b23x3+…+b2nxn=b20

0+b32x2+b33x3+…+b3nxn=b30

……

0+bn2x2+bn3x3+…+bnnxn=bn0

此时,继续再来考察b22的情况,用类似的方法,继续消去第2个之后的所有方程式中,x2的系数……这样执行下去,直到消去第n个方程式中xn-1的系数为止。此时的方程组已经变为下面的形式:

a11x1+a12x2+a13x3+…+a1nxn=a10

0+b22x2+b23x3+…+b2nxn=b20

0+0+c33x3+…+c3nxn=c30

……

0+0+0+…+mnnxn=mn0

现在,就可以从第n个方程开始,一步一步求解了:

xn=mn0/mnn

……

x3=(c30-…-c3nxn)/c33

x2=(c30-b23x3-…-b2nxn)/b22

x1=(c30-a12x2-a13x3-…-a1nxn)/a11

如果在计算中,a11,b22,c33等参数中出现0,则说明方程组无解或有无穷解。

用集算器求解多元一次方程组的解法如下:


在B1中,从文本文件中读取数据,并在A2中将方程组参数转换为序列组:


在C1中求出方程组的方程数,在A3中循环,用加减消元法逐步消除xn的系数。首先,在B4的循环中,从第k个方程式起,寻找xk的系数不为0的第1个方程式,如果未找到,则说明该项无法消元。在第7行的代码中,将xk的系数不为0的方程式移到第k行。在第8、9行,将k+1行起的方程式中,xk的系数消去。

各步消元执行完毕后,在A10中,就可以从最后一个方程起,逐步求解。其中,用序列result来存储解。如果出现无解或无穷解的情况,返回Error。考虑到双精度数在计算中可能存在误差,求解时保留4位小数。

计算完成后,在A13中,可以查看到结果:


如果需要求解新的方程组:

7x1+2x2+9x3-x4=0

2x1+9x2-x4=0

9x1+11x3-x4=0

x1+x2+x3 =1

只需要修改文件EquInput.txt:


用同样的程序就可以计算,计算后,可以在A13中读取结果:


另外,参数列表也可以不用文件读入,而是直接填写在集算器中,计算过程是类似的。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值