如何用matlab解多元非线性方程组?

2024-11-08 12:10:54
有1个网友回答
网友(1):

使用solve函数。

举个例子,解非线性方程组 x^2+y^3=10 x^3-y^2=1 其中x,y为方程组的未知量 在Matlab的命名窗口中输入: 

syms x y  [x y]=solve('x^2+y=10','x^2-y^2=1','x','y')  即可  输出计算结果为: 

x =       (37^(1/2)/2 + 21/2)^(1/2)     (21/2 - 37^(1/2)/2)^(1/2)  -(21/2 - 1/2*37^(1/2))^(1/2)  -(1/2*37^(1/2) + 21/2)^(1/2)   

y =    - 37^(1/2)/2 - 1/2    37^(1/2)/2 - 1/2    37^(1/2)/2 - 1/2  - 37^(1/2)/2 - 1/2 

具体solve函数的使用方法,通过输入help solve来学习。

20世纪60年代中期以后,发展了两种求解非线性方程组(1)的新方法。

一种称为区间迭代法或称区间牛顿法,它用区间变量代替点变量进行区间迭代,每迭代一步都可判断在所给区间解的存在惟一性或者是无解。这是区间迭代法的主要优点,其缺点是计算量大。

另一种方法称为不动点算法或称单纯形法,它对求解域进行单纯形剖分,对剖分的顶点给一种恰当标号,并用一种有规则的搜索方法找到全标号单纯形,从而得到方程(1)的近似解。

这种方法优点是,不要求f(□)的导数存在,也不用求逆,且具有大范围收敛性,缺点是计算量大。