登录论坛

查看完整版本 : [MATLAB基础] 【原创】matlab动画演示数学摆


meichengguang
2009-07-09, 19:32
出于对matlab和物理问题的喜爱,无聊时编了一个动画程序,供大家分享。

本人也是初学matlab,程序中是用极坐标画的图像,我想把坐标去掉,但是用axis off又不行,怎么解决呢?

还有,动画看起来显得很不连续,应该是点取少了。matlab的函数ode45能不能设置步长呢?如果可以,就可以取更多的点,使动画连续感更强。

上面两个问题,还请高人指教........

程序如下:
function danbai(a,b)
%a 初始角度
%b初始角速度
%当参数为0 时,默认a为pi,b为0
%当参数为1时,默认b为0
if nargin>2
disp('error');
elseif nargin==1
b=0;
elseif nargin==0
a=pi;b=0;
else
end

[x,y]=ode45(@danbai0,[0,200],[a;b]);
m=length(y(:,1));
line([0 0],[-10 10]);
hold on
for j=1:m
hold off
polar([0 y(j,1)],[0,9.8]);
hold on
polar(y(j,1),9.8,'*r');
view(270,100)
pause(0.05)
end
function dy=danbai0(t,y)
%大角度单摆问题 D2y-g/l*sin(y)=0 的微风方程 用于ode45 求数值解 这里g=l=9.8
g=9.8;l=9.8;
dy=zeros(2,1);
dy(1)=y(2);
dy(2)=-g/l*sin(y(1));