马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
第一个微分方程:x''+g/l*x=0
function xd=danbai(t,x,flag,g,l)
xd=[x(2);-g/l*x(1)];
第二个微分方程:x''+g/l*sinx=0
function xd=hundun(t,x,flag,g,l)
xd=[x(2);-g/l*sin(x(1))];
调用程序部分:
g=input('重力加速度g='); l=input('摆长l= ');
theta1=input('小角度振动初位置的摆角theta1=');
theta2=input('大角度振动初位置的摆角theta2=');
t_final=10; %定义仿真终止时间
[t,x1]=ode45('danbai',[0,t_final],[theta1;0],[],g,l); %求解出小角度振动的时间向量t及与t对应的状态向量x1
[t,x2]=ode45('hundun',[0,t_final],[theta2;0],[],g,l); %求解出大角度振动的时间向量t及与t对应的状态向量x2
subplot(221);plot(t,x1(:,1)); %在图像窗口分配绘图区域并绘制小角度振动的摆角与时间的曲线
subplot(222);plot(x1(:,1),x1(:,2)); %在图像窗口分配绘图区域并绘制小角度振动的相图(摆角与角速度之间的曲线)
subplot(223);plot(t,x2(:,1)); %在图像窗口分配绘图区域并绘制大角度振动的摆角与时间的曲线
subplot(224);plot(x2(:,1),x2(:,2)); %在图像窗口分配绘图区域并绘制大角度振动的相图(摆角与角速度之间的曲线)
输入初始数据(g=9.8,l=1不变),但小的角度和大的角度,加入输入0.04和0.4,0.05和0.5,0.06和0.6这些组合可以,假如是0.07和0.7,0.08和0.8,0.02和0.6就会出错,出错的提示都一样:
??? Error using ==> plot
Vectors must be the same lengths.
Error in ==> danbai_hundun at 8
subplot(221);plot(t,x1(:,1)); %在图像窗口分配绘图区域并绘制小角度振动的摆角与时间的曲线
[ 本帖最后由 ChaChing 于 2010-6-14 09:48 编辑 ] |