Bo Zhang's Homepage
..The universe is unfolding as it should..

2007-3-24

一阶波动方程数值解

归档于: 基础科学, 数理科学 @ 10:45 pm

第一次做数值模拟,计算天文的课程作业——数值求解一阶波动方程。这个是标准的一阶线性双曲型方程,其实计算过程不复杂,不过为交作业方便起见要生成动画,这动画做得可真是……这么说吧,100张图片用Windows Movie Maker叠加(注:已使用GIMP重新叠图为gif文件),麻烦得一塌糊涂。谁让我不会用其他软件呢……

具体计算采用的是迎风格式,换句话说就是迎着波的传播方向求解。差分方程形式可以参考任何计算流体力学的书籍,就不在此废话了。

初始取三角波,其他初始条件请见动画开始的介绍。计算得出的演化行为是随着时间推进,一边扩散一边向右行进。实际上方程中没有耗散项,是差分法引入了数值解的耗散现象。

其他初始条件演化行为类似,因为动画实在麻烦,就不做了,干脆画个曲面图就好了。

delta函数:

方波:

IDL程序见下,其实很简单:

;simulation of one-order wave equation written by Bo Zhang
pro wave_test

u = fltarr(100,100)
delta_x = 1
delta_t = 0.5
c = 1

;initial condition
u(0:9,0) = findgen(10)
u(10:19,0) = 9-findgen(10)

;boundary condition
u(0,*) = 0
u(99,*) = 0

;up-wind scheme
for n=0,98,1 do begin
for i=1,98,1 do begin
u(i,n+1) = u(i,n)-c*delta_t*(u(i,n)-u(i-1,n))/delta_x
endfor
endfor

window,1
shade_surf,u

window,2
contour,u

window,3
plot,u(*,99),yrange=[0,10]

end

No Comments

No comments yet.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

首页 | 天文 | 科学 | 摄影 | 模型 | CV | 版权声明 | 联系站长
京ICP备05002854号-2 Powered by WordPress Version 2.0.6
Licensed under Creative Commons Licenses

porno izle