用Python求解矩阵形式的非线性方程组

2024-05-16 07:48:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图解一个非线性方程组,形式为AX=X,其中

A=M乘M矩阵

X=M×1矩阵

因此,我总共有M(=200)个方程(和M个未知数)。在

更具体地说

A=[f11(x,y)f12(x,y)。。。。1米(x,y)

 f21(x,y) f22(x,y) .....f2m(x,y),

 ..        ..           ..

 fm1(x,y) fm2(x,y) .... fmm(x,y)]

X=[V1

^{pr2}$

因此,X有M-2未知(V1,V2。。。Vm-1)和A有两个(x和y)。A的元素是x和y的线性函数

我做了家庭作业scipy.F溶剂以及sympy.n保存但他们似乎不接受矩阵格式的方程式。另外,由于有200个方程,而且每个方程都有所有未知量,因此逐个消除变量是不切实际的。在

我对python比较陌生,所以非常感谢您的帮助。在

谢谢


Tags: 矩阵ax形式v1方程fmm线性方程组pr2
1条回答
网友
1楼 · 发布于 2024-05-16 07:48:49

设fij(x,y)=aix+bjy。设a=(a1,…,am),b=(b1,…,bm),v=(v1。。。Vm-2,1/3,1/3)为实列向量。那么

A=[fij(x,y)]m×m =[aix+bjy]m×m =[aix]m×1[bjy]1×m =([ai]m×1x)([bj]1×my)

你的方程是Av=v,或者Av=Iv(其中I是m×m的单位矩阵),所以你要解(A-I)v=0。这让人想起特征值问题。这个特征值问题的characteristic equation是0=det(A-I)=det(([AI]m×1x)([bj]1×my)-I),其中det是行列式(我将特征值固定在1)。在

一种可能的方法是数值求解x和y的det(([Ai]m×1x)([bj]1×my)-i)=0(使用寻根算法,如Newton's method),得到一个常数矩阵A

下一步,返回并使用线性方程解算器求解(a-I)v=0,使用数值求解的常数矩阵a求出v1,v2,…,vm-2。不幸的是,这并不能在v的底部保留1/3常数,所以您必须返回并重复上一步几次,直到得到最后两个值的近似于1/3的矩阵a。在


另一种解决方案是把整个问题都放在非线性方程求解器中。这种方法比我上面解释的方法要慢。在

相关问题 更多 >