作为个人学习笔记,分享给大家看看!
1,解线性方程组
example:
2x + 3y = 5
x + 3y = 3
求解代码及结果如下 :
解得 x=2,y=1/3.
import numpy as np from numpy.linalg import solve a=np.mat([[2,3],[1,3]]) #系数矩阵 b=np.mat([5,3]).T #常数项列矩阵 x=solve(a,b) #方程的解 print(x)
2,解非线性方程组
example:
x*x + 2y = 5
x + y = 1
求解代码及结果如下:
x=3,y=-2 ;
x=-1,y=2.
from scipy.optimize import fsolve def func(paramlist): x,y=paramlist[0],paramlist[1] return [ x**2+2*y-5, x+y-1 ] s=fsolve(func,[0,0]) print(s) [-1. 2.]
解析:
函数func是我们要求解的非线性方程组,其形式为右端等于零的等式的左端式子。
paramlist是方程组的未知数初始值列表,可以任意选取。
注意:
fsolve方法只能得到局部解,没有得到全部解。
如上,只得到了一组解x=-1和y=2.
如果学到了更好的求解方法会持续更新的!