MATLAB求解代数方程组问题,请帮忙
function ff=test(x,y)
f1=x+y;
f2=x-y;
ff=[f1;f2];
---------------------------------------
clear all;clc
[x,y]=fsolve(@test,[1;1])
运行结果:
??? Input argument "y" is undefined.
Error in ==> test at 2
f1=x+y;
Error in ==> fsolve at 195
fuser = feval(funfcn{3},x,varargin{:});
Error in ==> testsolve at 2
[x,y]=fsolve(@test,[1;1])
请问,这个程序到底什么地方有问题呢?如果可以请您给出正确的程序。谢谢!
返回小木虫查看更多
今日热帖
京公网安备 11010802022153号
把初值设成向量,像这样应该可以
function ff = test(x)
f1 = x(1) + x(2);
f2 = x(1) - x(2);
ff = [f1; f2];
end
看一下fsolve的帮助就知道怎么用了
谢谢您的回复,您这样是把ff定义为x的一元函数了,而我就是希望定义出一个二元函数:ff(x,y),怎么实现呢?
不太懂你的意思,x是向量,f(x1,x2)和f(x,y)不是一样的吗
最好举个具体的例子看看
就用这个题的例子吧
function ff=test(x,y)
f1=x(1)+y(1);
f2=x(1)-y(1);
ff=[f1;f2];
--------------------------------
[x,y]=fsolve(@test,[1,1])
就说把ff定义为x和y的二元函数
会出问题,说y没有定义
但是按照下面的程序,就可以解
function ff=test(x)
f1=x(1)+x(2);
f2=x(1)-x(2);
ff=[f1;f2];
--------------------------------
[x,y]=fsolve(@test,[1,1])
我想问的就是,为什么ff表示成(x,y)的就要出问题
,
help里规定这个自变量是个向量的形式
正如 gangbs 据说,fsolve(fun, x0)的第二个参数是要传给 test(x) 的参数,二者类型必须一致。
你代码里面fsolve 的第二个参数是向量,所以函数 test(x) 也要是向量。你写成
test(x,y), matlab可能只将 x0 传给了 x,y 则没有定义。
也就是说,为了用fsolve(fun,x0)的形式来求解方程,test函数不能定义成(x,y)的形式,而只能是test(x)的形式,shydyhlei ,是吗?