1 问题
进入大学,我们接触了线性代数,利用线性代数解方程组比高中慢慢计算会好了许多,快捷许多,我们作为编程人员,有没有用python解决解方程组的办法呢?
2 方法
我们提出使用python的numpy解方程。
找到用于解方程组的系数和常数数据;
将数据按照线性代数的方法进行排列;
利用numpy和相关函数、库进行运算;
通过实验、实践等证明提出的方法是有效的,是能够解决开头提出的问题。
代码清单 1
import numpy as np # A = np.mat([[10, -1, -2], [-1, 10, -2], [-1, -1, 5]]) # A为系数矩阵 # b = np.mat([[72], [83], [42]]) # b为常数列 A = np.mat("10, -1, -2; -1, 10, -2; -1, -1, 5") # A为系数矩阵 b = np.mat("72;83;42") # b为常数列 inv_A = np.linalg.inv(A) # A的逆矩阵 inv_A = A.I # A的逆矩阵 # x = inv_A.dot(b) # A的逆矩阵与b做点积运算 x = np.linalg.solve(A, b) print(x) |
我们可以输出:
[[11.]
[12.]
[13.]]
3 结语
针对这一问题,提出使用numpy库、solve()函数等方法运用该方程组的系数矩阵和常数矩阵进行计算求得逆矩阵,最终得出结果求得未知数。通过实验,证明该方法是有效的。其中对于正则表达式的书写方法还不够熟练,对于函数solve()的使用还存在很多未知,由于知识和技术上存在问题以上代码暂时只用于三阶及以下和部分高阶的方程组,我们相信通过不断地学习与练习,我们能进一步优化方法,最终达成目的。