作业帮 > 数学 > 作业

matlab 用fsolve解方程组的问题

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/08/23 22:35:34
matlab 用fsolve解方程组的问题
我需要解一个方程组,编了一个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{:});
我实在不知道这和元素个数不对应有什么关系啊?
fsolve函数是用于求解非线性方程的,但是在你的程序里没看到非线性方程
在你所给的求根初值[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要把初值带入求解,所以导致的上面的错误,那我该怎么改进呢?我需要求偏导呀~~谢谢你了!我多给你财富值!