当前位置: 首页 > 计算模拟 >MATLAB求解代数方程组问题,请帮忙

MATLAB求解代数方程组问题,请帮忙

作者 月只蓝
来源: 小木虫 450 9 举报帖子
+关注

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])

请问,这个程序到底什么地方有问题呢?如果可以请您给出正确的程序。谢谢! 返回小木虫查看更多

今日热帖
  • 精华评论
  • xinghair

    把初值设成向量,像这样应该可以
    function ff = test(x)
    f1 = x(1) + x(2);
    f2 = x(1) - x(2);
    ff = [f1; f2];
    end
    看一下fsolve的帮助就知道怎么用了

  • 月只蓝

    引用回帖:
    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),怎么实现呢?

  • 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楼: 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)的就要出问题

  • gangbs

    help里规定这个自变量是个向量的形式

  • shydyhlei

    正如 gangbs 据说,fsolve(fun, x0)的第二个参数是要传给 test(x) 的参数,二者类型必须一致。
    你代码里面fsolve 的第二个参数是向量,所以函数 test(x) 也要是向量。你写成
    test(x,y), matlab可能只将 x0  传给了 x,y 则没有定义。

  • 月只蓝

    引用回帖:
    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 ,是吗?

猜你喜欢