正面教材分享 http://blog.sciencenet.cn/u/wdlang 70%的以色列人是无神论者,不过他们都相信上帝给了他们那块土地。这个世界经不起思考

博文

计算方法6:实时演示阻尼振子的运动

已有 3254 次阅读 2016-12-21 16:13 |个人分类:计算方法|系统分类:教学心得

各位同学:这个利用matlab做电影的技术不作要求。但是求解运动方程的算法作要求。

程序如下

% damped harmonic oscillator;2016.12.20

clear all; close all; clc;


omega = 1;

gamma = 0.05;

dt = 0.02;

N = 1e4;  step = 10;

Tmax = dt*N;

tlist = dt*(0:N-1);

xlist = zeros(2, N);

x0 = [0.5;0.5];         % initial position and velocity

xlist(:,1) = x0;

M = [0, 1; -omega^2, -gamma];

[VV,DD] = eig(M);

invVV = inv(VV);

dd = diag(DD);


h1= plot(nan);

hold on

plot(tlist, zeros(1,N),':');

hold on

xlim([0 Tmax])

ylim([-1 1])

xlabel('t','fontsize',20)

ylabel('x','fontsize',20)

str = strcat('gamma=',num2str(gamma));

title(str,'fontsize',20)


for s = 2: N

   time = dt*(s-1);

   xlist(:,s) = VV*diag(exp(time*dd))*invVV*x0;

   if mod(s,step)==0

       set(h1,'XData',tlist(1,1:s),'YData',xlist(1,1:s))

       drawnow

       pause(0.00)

       mov(s/step) = getframe;

   end

end


str=strcat('Omega=',num2str(omega),'_gamma=',num2str(gamma),'.avi');

movie2avi(mov, str, 'compression', 'None','fps',15);


电影如下(横轴时间,纵轴位置):





https://wap.sciencenet.cn/blog-100379-1022252.html

上一篇:计算方法5:4阶Runge-Kutta法研究Kepler运动
下一篇:计算方法7:利用幅角原理确定一个整函数在给定区域内的零点数
收藏 IP: 125.77.120.*| 热度|

3 徐令予 杨正瓴 刘全慧

该博文允许注册用户评论 请点击登录 评论 (4 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-19 17:13

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部