用python解方程组

作为个人学习笔记,分享给大家看看!

一,正定方程组求解

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.        ]
 [0.33333333]]
 
     

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.
如果学到了更好的求解方法会持续更新的!

猜你喜欢

转载自blog.csdn.net/jayloncheng/article/details/80003182