作业帮 > 综合 > 作业

求matlab高手帮忙

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/21 12:30:56
求matlab高手帮忙
函数
function dx=myfun2(t,x)
dx(1)=(104022*(0.8-x(1)-x(2))/(1-x(1)-x(2))-66814.3)*x(1)^2+(104022*(0.8-x(1)-x(2))/(1-x(1)-x(2))-75105-37552.5*(0.8-x(1))/x(2))*x(1)*x(2)+(66814.3-104022*(0.8-x(1)-x(2))/(1-x(1)-x(2)))*x(1);
dx(2)=(104022*(0.8-x(1)-x(2))/(1-x(1)-x(2))-75105-37552.5*(0.8-x(1))/x(2))*x(2)^2+(104022*(0.8-x(1)-x(2))/(1-x(1)-x(2))-66814.3)*x(1)*x(2)+(75105+37552.5*(0.8-x(1))/x(2)-104022*(0.8-x(1)-x(2))/(1-x(1)-x(2))*x(2);
dx=dx(:);
主程序
x0=[0.7,0.2];
t0=0.001:0.001:20;
[t,x]=ode45('myfun2',[0.001,20],x0); %ode45会自动调整步长
plot(t,x)
legend('x','y')
运行会出现以下错误:
Error:File:myfun2.m Line:3 Column:227
Unbalanced or unexpected parenthesis or bracket.
Error using ==> nargin
Error:File:myfun2.m Line:3 Column:212
Unbalanced or unexpected parenthesis or bracket.
Error in ==> odearguments at 81
if (nargin(ode) == 2)
Error in ==> ode45 at 173
[neq,tspan,ntspan,next,t0,tfinal,tdir,y0,f0,odeArgs,odeFcn,...
Error in ==> zhuchengxu at 3
[t,x]=ode45('myfun2',[0.001,20],x0); %ode45会自动调整步长
请高手帮我找出到底错在哪了,该怎么修改呢?
function dx=myfun2(t,x)
dx(1)=(104022*(0.8-x(1)-x(2))/(1-x(1)-x(2))-66814.3)*x(1)^2+(104022*(0.8-x(1)-x(2))/(1-x(1)-x(2))-75105-37552.5*(0.8-x(1))/x(2))*x(1)*x(2)+(66814.3-104022*(0.8-x(1)-x(2))/(1-x(1)-x(2)))*x(1);
dx(2)=(104022*(0.8-x(1)-x(2))/(1-x(1)-x(2))-75105-37552.5*(0.8-x(1))/x(2))*x(2)^2+(104022*(0.8-x(1)-x(2))/(1-x(1)-x(2))-66814.3)*x(1)*x(2)+(75105+37552.5*(0.8-x(1))/x(2)-104022*(0.8-x(1)-x(2))/(1-x(1)-x(2))*x(2));%%这里最后加一个括号
dx=dx(:);
end
楼主要仔细啊,细节决定成败
再问: 为什么最后还要加一个括号呢,前面的括号我仔细检查过本来就是平衡的啊?
再答: 你再看一遍就发现不平衡了,仔细啊,兄弟
再问: 我还是没能找出最后加的括号对应前面的哪个括号? dy=(104022*(0.8-x-y)/(1-x-y)-75105-37552.5*(0.8-x)/y)*y^2+(104022*(0.8-x-y)/(1-x-y)-66814.3)*x*y+(75105+37552.5*(0.8-x)/y-104022*(0.8-x-y)/(1-x-y)*y; 这是我的原始式子,通过y=x(2),x=x(1)进行替换,如果在最后加个括号,那式子本身的结果就得变化了啊。
再答: +(75105+37552.5*(0.8-x)/y-104022*(0.8-x-y)/(1-x-y)*y; 原始式子有问题,你看一下,第一个括号就不平衡
再问: dy=(104022*(0.8-x-y)/(1-x-y)-75105-37552.5*(0.8-x)/y)*y^2+(104022*(0.8-x-y)/(1-x-y)-66814.3)*x*y+(75105+37552.5*(0.8-x)/y-104022*(0.8-x-y)/(1-x-y))*y; 刚才少打了个括号,这下应该对了。