在 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
而不是 x
和 y
,具有 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."
我正在尝试在 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
而不是 x
和 y
,具有 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."