我正在尝试在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
还有其他评论吗?我在做什么错了?
答案 0 :(得分:0)
检查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
,“迭代没有取得良好的进展。”