Python-解三元一次方程

需要解的方程组为:

x + y + z = 26
x - y = 1
2x - y + z = 18

 

下面进入代码实现:

1.导入数学计算库 numpy

import numpy as np

 

2.生成未知数系数的三维数组,注意📢位置对应

W = np.array([[1,1,1],[1,-1,0],[2,-1,1]])

 

3.由方程组的值形成数组

result = np.array([26,1,18])

 

4.求得W逆矩阵W_inv

W_inv = np.linalg.inv(W)

 

5.

由方程未知数(x,y,z)形成的数组:vxyz = np.array([x,y,z]),

得到以上方程式的矩阵乘法等式:W * vxyz = result,

让等式两边点乘W的逆矩阵,

得到等式:np.dot(Winv,W*vxyz) = np.dot( W_inv,result),

其中W_inv式W的逆矩阵,np.dot()是矩阵点乘函数,

由于矩阵与其逆矩阵相乘得1,进一步推导出 vxyz = np.dot( W_inv, result),

求得 vxyz 的值,即求得该方程组的解

vxyz = np.dot(W_inv,result)

 

6.打印出求得的系数

v = list(vxyz)
print("得到的值:")
print("x=%d" %v[0])
print("y=%d" %v[1])
print("z=%d" %v[2])

 

7.运行结果

x = 10
y = 9
z = 7

这个程序可以进一步扩展,例如增加未知数的个数,随着未知数不断增多,会逐渐感受到程序解方程的效率。

 

结束语:

最近真是

 

                    to be continued...

posted @   莲(LIT)  阅读(3109)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示