精華區beta MATLAB 關於我們 聯絡資訊
※ 引述《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