matlab模拟摆锤,matlab-双摆仿真

在物理学和数学中,在动力系统领域,双摆是一个摆锤,另一个摆锤连接在其末端,是一个简单的物理系统,具有丰富的动态特性,对初始条件双摆的运动由一组耦合的常微分方程控制并且是混沌的。

20181229214842581733.gif

由于双摆运动涉及到二阶微分方程组,在matlab中对双摆的仿真需要用到ode45求其数值解。

20181229214842811210.png

clear all;

%控制r1 r2两个角位移 就可改变双摆初状态

r1=0.8;

r2=0.8;

m1=1;

m2=1;

L1=1;

L2=1;

g=9.8;

Da=inline([‘[x(3);x(4);‘,...

‘inv([(m1+m2)*L1,m2*L2*cos(x(1)-x(2));‘,...

‘m1*L1*cos(x(1)-x(2)),m1*L2])*‘...

‘[m2*L2*x(4)^2*sin(x(2)-x(1))-(m1+m2)*g*sin(x(1));‘,...

‘m2*L1*x(3)^2*sin(x(1)-x(2))-m2*g*sin(x(2))]]‘],‘t‘,‘x‘,...

‘flag‘,‘m1‘,‘m2‘,‘L1‘,‘L2‘,‘g‘);

set(gcf,‘DoubleBuffer‘,‘on‘);

[t,x]=ode45(Da,[0,20],[r1,r2,0,0],[],m1,m2,L1,L2,g);

axis([-(L1+L2),(L1+L2),-(L1+L2)*1.8,1]);

axis square;hold on;

gh1=plot([0,L1*exp(i*(x(1)-pi/2))],‘r-‘);

set(gh1,‘linewidth‘,2,‘markersize‘,6,‘marker‘,‘o‘);

gh2=plot([L1*exp(i*(x(1)-pi/2)),L1*exp(i*(x(1)-pi/2))+L2*exp(i*(x(2)-pi/2))],‘b-‘);

set(gh2,‘linewidth‘,2,‘markersize‘,6,‘marker‘,‘o‘);

for k=2:size(x,1);

C1=[0,L1*exp(i*(x(k,1)-pi/2))];

C2=[L1*exp(i*(x(k,1)-pi/2)),L1*exp(i*(x(k,1)-pi/2))+L2*exp(i*(x(k,2)-pi/2))];

set(gh1,‘xdata‘,real(C1),‘ydata‘,imag(C1));

set(gh2,‘xdata‘,real(C2),‘ydata‘,imag(C2));

title([‘t=‘,num2str(t(k))],‘fontsize‘,12);

pause(0.1);

end

% figure;

% subplot(2 ,3 ,1);plot(t,x(:,1));title(‘t-\theta_1‘);

% xlabel(‘t‘);ylabel(‘\theta_1‘);

% subplot(2 ,3 ,2);plot(t,x(:,2));title(‘t-\theta_2‘);

% xlabel(‘t‘);ylabel(‘\theta_2‘);

% subplot(2 ,3 ,3);plot(t,x(:,3));title(‘t-\omega_1‘);

% xlabel(‘t‘);ylabel(‘\omega_1‘);

% subplot(2,3,4);plot(t,x(:,4));title(‘t-\omega_2‘);

% xlabel(‘t‘);ylabel(‘\omega_2‘);

% subplot(2,3,5);plot(x(:,1),x(:,3));title(‘\theta_1-\omega_1‘);

% xlabel(‘\theta_1‘);ylabel(‘\omega_1‘);

% subplot(2,3,6);plot(x(:,2),x(:,4));title(‘\theta_2-\omega_2‘);

效果图和上图差不多,放一张截图

20181229214842867847.png

另外,科学网上也有对双摆的模拟程序

原文:https://www.cnblogs.com/hyb965149985/p/10197879.html

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值