我试图解一个非线性方程组,形式为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比较陌生,所以非常感谢您的帮助。在
谢谢
设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。在
另一种解决方案是把整个问题都放在非线性方程求解器中。这种方法比我上面解释的方法要慢。在
相关问题 更多 >
编程相关推荐