在 SciLab 中求解非线性方程组

Solving a non-linear System of Equations in SciLab

我正在尝试在 SciLab 中求解以下方程组:

  x^2 + y^2 = 0
  x^4 + y^4 - 10 = 0

我在 SciLab 中定义了以下函数:

function y=f3(x,y)
    y = [x^2+y^2,x^4+y^4-10]
endfunction

这似乎奏效了。我发现 f3(1,1) 是:2. -8. 所以我然后 运行 以下内容:

fsolve([0,0], f3)

我得到了:

fsolve: exception caught in 'fct' subroutine.
at line     2 of function f3
in builtin                fsolve

Undefined variable: y

然后我定义函数fct如下:

function y=fct(x,y)
    y = [2*x+2*y, 4*x^3+4*y^3]
endfunction

然后我运行命令:

fsolve([0,0], f3, fct)

并产生以下消息:

fsolve: exception caught in 'jac' subroutine.
at line     2 of function f3
in builtin                fsolve

Undefined variable: y

还有什么意见吗?我做错了什么?

检查 help fsolve,您会看到 fsolve 适用于单个参数的函数。这意味着您的 f3 应该收到向量 v 而不是 xy,具有 x = v(1)y = v(2)。所以你的函数应该是:

function y = f3(v)
    y = [v(1)^2 + v(2)^2,...
         v(1)^4 + v(2)^4-10]
endfunction

这将解决无法运行fsolve的问题。 但是,一个更严重的问题是你的系统没有单一的解决方案,因为曲线x^2 + y^2 = x^4 + y^4 - 10中的任何点(x,y)都是你系统的解决方案。因此,fsolve将根本无法找到任何解决方案:

--> [y,val,info]=fsolve([0,0],f3)
 info  = 
   4.
 val  = 
   0.  -10.
 y  = 
   0.   0.

帮助页面说 info == 4、"iteration is not making good progress."