导读:matlab 用fsolve解方程组的问题 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);...
matlab 用fsolve解方程组的问题
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{:});
我实在不知道这和元素个数不对应有什么关系啊?
20004
1年前他留下的回答
已收到1个回答
西风碧树2004
网友
该名网友总共回答了20个问题,此问答他的回答如下:采纳率:85%
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.
你先把上面的问题解决吧,如果还不可以,麻烦把你的方程贴出来 :)
1年前他留下的回答
追问
3
20004
哇,大神,你解答的太到位了,确实是这样,看来是我对fsolve的解方程过程不太了解!我的方程是多次多项式,是非线性方程吧?我的方程的五个未知数就是b1,b2,b3,b4,m,五个方程就是上面表述的那样子啊,因为我不知道fsolve要把初值带入求解,所以导致的上面的错误,那我该怎么改进呢?我需要求偏导呀~~谢谢你了!我多给你财富值!
以上就是小编为大家介绍的matlab 用fsolve解方程组的问题 的全部内容,如果大家还对相关的内容感兴趣,请持续关注上海建站网!
标签:
内容声明:网站所展示的内容均由第三方用户投稿提供,内容的真实性、准确性和合法性均由发布用户负责。上海建站网对此不承担任何相关连带责任。上海建站网遵循相关法律法规严格审核相关关内容,如您发现页面有任何违法或侵权信息,欢迎向网站举报并提供有效线索,我们将认真核查、及时处理。感谢您的参与和支持!