Re: [問題] Matlab使用尤拉法解二階ode
※ 引述《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
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章