作者zxvc (zxvc)
看板MATLAB
标题Re: [问题] Matlab使用尤拉法解二阶ode
时间Sun Jan 21 07:54:29 2007
※ 引述《REBOUNDMAN (哇哈哈哈!!)》之铭言:
: function ydot=e1(t,y);
: ydot=zeros(2,1);
: m=4.5;
: c=0;
: k=3500;
: P=100;
: W=18;
: ydot(1)=y(2);
: ydot(2)=-1*(k/m)*(y(1))-(c/m)*(y(2))+P*sin(W*t);
: ---------------------------------------------------
: function [T,Y]=e2(f,tspan,startval,step);
: steps=(tspan(2)-tspan(1))/step+1;
: y=startval;t=tspan(1);
: Y=startval;T=tspan(1);
: for i=2:steps
: y1=y+step*feval(f,t,y); t1=t+step;
: T=[T,t1];Y=[Y,y1];
: t=t1;y=y1;
end
: ------------------------------------------
: clear
: clc
: close all
: [T,Y]=e2(@e1,[0 5],[0.015 0.15],0.2);
[T,Y]=e2(@e1,[0 5],[0.015;0.15],0.2);
: plot(T,Y(:,1))
plot(T,Y(1,:))
: -------------------------------------------
: 错误为
: ??? Error using ==> plus
: Matrix dimensions must agree.
: Error in ==> euler2 at 7
: y1=y+step*feval(f,t,y); t1=t+step;
: 请问我错在哪里?? 该如何修改?
这是因为y是1x2 matrix,而feval(f,t,y)传回一个2x1 matrix,
所以不能相加。
: Thx a lot
--
《金刚经》
离一切诸相,则名诸佛。
http://web.cc.ncu.edu.tw/~93501025/jg.doc
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.200.121