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 @ 2022-04-16 16:19  莲(LIT)  阅读(3069)  评论(0编辑  收藏  举报