24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1782  |  回复: 9

月只蓝

主管区长 (职业作家)

[求助] 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])

请问,这个程序到底什么地方有问题呢?如果可以请您给出正确的程序。谢谢!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xinghair

木虫 (初入文坛)

【答案】应助回帖


感谢参与,应助指数 +1
csgt0: 金币+1, 多谢应助 2012-07-31 09:45:14
把初值设成向量,像这样应该可以
function ff = test(x)
f1 = x(1) + x(2);
f2 = x(1) - x(2);
ff = [f1; f2];
end
看一下fsolve的帮助就知道怎么用了
2楼2012-07-30 20:14:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

引用回帖:
2楼: Originally posted by xinghair at 2012-07-30 20:14:40
把初值设成向量,像这样应该可以
function ff = test(x)
f1 = x(1) + x(2);
f2 = x(1) - x(2);
ff = ;
end
看一下fsolve的帮助就知道怎么用了

谢谢您的回复,您这样是把ff定义为x的一元函数了,而我就是希望定义出一个二元函数:ff(x,y),怎么实现呢?
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
3楼2012-07-31 11:04:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xinghair

木虫 (初入文坛)

引用回帖:
3楼: Originally posted by 月只蓝 at 2012-07-31 11:04:33
谢谢您的回复,您这样是把ff定义为x的一元函数了,而我就是希望定义出一个二元函数:ff(x,y),怎么实现呢?...

不太懂你的意思,x是向量,f(x1,x2)和f(x,y)不是一样的吗

最好举个具体的例子看看
4楼2012-07-31 11:46:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

引用回帖:
4楼: Originally posted by xinghair at 2012-07-31 11:46:01
不太懂你的意思,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)的就要出问题?
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
5楼2012-08-01 19:22:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

gangbs

新虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
csgt0: 金币+1, 多谢交流 2012-08-01 23:17:29
月只蓝: 金币+5 2012-09-14 10:12:19
help里规定这个自变量是个向量的形式
6楼2012-08-01 22:17:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shydyhlei

铜虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★
贺仪: 金币+1, 谢谢交流 2012-08-03 21:58:31
月只蓝: 金币+5, ★★★很有帮助 2012-09-14 10:12:12
正如 gangbs 据说,fsolve(fun, x0)的第二个参数是要传给 test(x) 的参数,二者类型必须一致。
你代码里面fsolve 的第二个参数是向量,所以函数 test(x) 也要是向量。你写成
test(x,y), matlab可能只将 x0  传给了 x,y 则没有定义。
二两
7楼2012-08-03 21:43:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

月只蓝

主管区长 (职业作家)

引用回帖:
7楼: Originally posted by shydyhlei at 2012-08-03 21:43:21
正如 gangbs 据说,fsolve(fun, x0)的第二个参数是要传给 test(x) 的参数,二者类型必须一致。
你代码里面fsolve 的第二个参数是向量,所以函数 test(x) 也要是向量。你写成
test(x,y), matlab可能只将 x0  传给 ...

也就是说,为了用fsolve(fun,x0)的形式来求解方程,test函数不能定义成(x,y)的形式,而只能是test(x)的形式,shydyhlei ,是吗?
MATLAB、MS小问题、普通问题请发帖求助!时间精力有限,恕不接受无偿私信求助。
8楼2012-08-04 11:01:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shydyhlei

铜虫 (小有名气)

引用回帖:
8楼: Originally posted by 月只蓝 at 2012-08-04 11:01:55
也就是说,为了用fsolve(fun,x0)的形式来求解方程,test函数不能定义成(x,y)的形式,而只能是test(x)的形式,shydyhlei ,是吗?...

恩恩恩恩
二两
9楼2012-08-06 11:03:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shydyhlei

铜虫 (小有名气)

引用回帖:
8楼: Originally posted by 月只蓝 at 2012-08-04 11:01:55
也就是说,为了用fsolve(fun,x0)的形式来求解方程,test函数不能定义成(x,y)的形式,而只能是test(x)的形式,shydyhlei ,是吗?...

Exactly!
二两
10楼2013-04-01 10:58:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 月只蓝 的主题更新
信息提示
请填处理意见