You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Octave中用fsolve求解联立方程仅得一个解,如何获取全部根?

问题原因与解决办法

为什么只得到(0,0)这个解

fsolve是迭代式的数值求解器,它从你给定的初始猜测值出发,寻找附近的局部解。你把初始值设为[0;0],它自然就收敛到离这个点最近的(0,0)解,不会主动去寻找其他可能的解。

如何得到另外两个解

要找到(1,-1)和(-1,1),你需要给fsolve设置更接近这两个解的初始猜测值:

比如找(1,-1):

fsolve("f", [1; -1])

运行后会输出:

x =

   1.0000
  -1.0000

找(-1,1):

fsolve("f", [-1; 1])

运行后会输出:

x =

  -1.0000
   1.0000

补充说明

对于这种多解的非线性方程组,数值求解器无法一次性找出所有解,必须通过设置不同的初始点,去定位不同的解。如果不确定初始点范围,也可以先通过代数方法分析方程的解的分布,再针对性设置初始值。比如你的方程组可以先从y2=0推出x2=-x1,代入y1=0得到:-x1 + 2x1³ -x1 = 0 → 2x1³ -2x1=0 → 2x1(x1²-1)=0,直接就能算出x1=0、1、-1,对应x2=0、-1、1,这样也能提前知道解的位置,再用数值方法验证。

内容的提问来源于stack exchange,提问作者sumit_singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 03:16:08