matlab 用fsolve解方程组的问题

我需要解一个方程组,编了一个cs.m函数文件,然后通过fsolve('cs',[1,1,1,1,1])语句求解,可是总是提示出错,不知道错在哪了,求大神解答!!cs.m函... 我需要解一个方程组,编了一个cs.m函数文件,然后通过fsolve('cs',[1,1,1,1,1])语句求解,可是总是提示出错,不知道错在哪了,求大神解答!!
cs.m函数文件代码如下:
function f=cs(uu)

b1=uu(1);
b2=uu(2);
b3=uu(3);
b4=uu(4);
m=uu(5);

fff=(b1*m.^3+b2*m.^2+b3*m.^6+b4-m).^2+(b1*m.^3+b2*m.^2+b3*m.^6+b4-m).^2+(b1*2*m.^3+b2*2*m.^2+b3*2*m.^6+b4-2*m.^2).^2+(b1*4*m.^3+b2*4*m.^2+b3*4*m.^6+b4-4*m).^2;

f(1)=diff(fff,b1);
f(2)=diff(fff,b2);
f(3)=diff(fff,b3);
f(4)=diff(fff,b4);
f(5)=b1*m.^3+b2*m.^2+b3*m.^6+b4-2;

很简单的五个方程,不知道哪里有问题,错误提示如下:

??? In an assignment A(I) = B, the number of elements in B and
I must be the same.

Error in ==> cs at 12
f(1)=diff(fff,b1);

Error in ==> fsolve at 180
fuser = feval(funfcn{3},x,varargin{:});

我实在不知道这和元素个数不对应有什么关系啊?求大神解答!
展开
樊士庆CS
2013-07-27 · TA获得超过337个赞
知道答主
回答量:23
采纳率:0%
帮助的人:39.5万
展开全部
  1. fsolve函数是用于求解非线性方程的,但是在你的程序里没看到非线性方程

  2. 在你所给的求根初值[1,1,1,1,1]下,你所定义的变量 fff 的值为124,而函数diff(X,n)表示求向量X的前后两项之差并重复n次,例如diff(X,2)就相当于 diff(diff(X)),在你的程序中有如下语句:

    f(1)=diff(fff,b1);

    式子右侧的fff,b1均为一个数,则diff(fff,b1)的计算结果为 [ ],将一个空的结果赋值给f(1)从而导致如下错误(赋值符号左右维数不匹配):

    In an assignment  A(I) = B, the number of elements in B and I must be the same.

        你先把上面的问题解决吧,如果还不可以,麻烦把你的方程贴出来 :)

追问
哇,大神,你解答的太到位了,确实是这样,看来是我对fsolve的解方程过程不太了解!我的方程是多次多项式,是非线性方程吧?我的方程的五个未知数就是b1,b2,b3,b4,m,五个方程就是上面表述的那样子啊,因为我不知道fsolve要把初值带入求解,所以导致的上面的错误,那我该怎么改进呢?我需要求偏导呀~~谢谢你了!我多给你财富值!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式