波動方程數值模擬

2021-09-24 03:55:34 字數 3214 閱讀 9109

在實際工作中,經常涉及求解常微分方程邊值問題、偏微分方程邊值問題。通常,方程的精確解難以求解,而只能得到求解區域內某些點處解的近似值,即數值解。在數學上,二階線性偏微分方程分為雙曲型、拋物型、橢圓型三種,其中雙曲型方程的典型代表是波動方程。當滿足合適的邊界條件和初始條件時,波動方程是可以求解的。常用的求解方法有分離變數法、行波法、格林函式法、積分變換法等等。其中最為常用的是分離變數法。而當所討論的問題的邊界條件較為複雜時,分離變數法將不再便於計算。因此,對於不易求解解析解的波動方程的數值解的研究和發展具有重要意義。有限差分法是一種較為成熟的數值解法,它的主要思想是將連續的問題離散化。是將每一處導數由有限差分近似公式代替,從而把求解偏微分方程的問題轉換成求解代數方程的問題的方法。本文在介紹了有限差分法的基礎知識後給出了波動方程及其初始、邊界條件的差分格式,列舉了一些不同定解條件下的波動方程的數值求解方法及影象。本文將著重**波動方程的數值解法

波動方程可表述如下,並給出在定解條件下的方程組組

有限差分法是在採用數值計算方法求解偏微分方程時,將每一處導數由有限差分近似公式代替,從而把求解偏微分方程的問題轉換成求解代數方程的問題的方法。有限差分法首先用差分代替微分方程中的微分,將連續變化的變數離散化,從而得到差分方程組的數學形式;繼而再求解差分方程組。

其總的思想是用差商代替微商,可用下面的式子表示

d f(

x)dx

=f(x

+h)−

f(x)

h(向前

差商)\frac = \frac(向前差商)

dxdf(x

)​=h

f(x+

h)−f

(x)​

(向前差

商)上面的十字僅僅表示一階差商同樣二階差商也可以進行類似的表述

∂ 2f

(x,y

)∂y2

=f(x

,y+δ

y)−f

(x,y

−δy)

−2f(

x,y)

(δy)

2\frac = \frac

∂y2∂2f

(x,y

)​=(

δy)2

f(x,

y+δy

)−f(

x,y−

δy)−

2f(x

,y)​

那麼波動方程可表示為

∂ u(

x,t)

∂t∣t

=0=1

τ(ui

1−ui

0)\frac|_=\frac(u^1_i-u^0_i)

∂t∂u(x

,t)​

∣t=0

​=τ1

​(ui

1​−u

i0​)

則初始條件為

u i0

=r1(

xi)u^0_i = r_1(x_i)

ui0​=r

1​(x

i​)ui1

=r2(

xi)u^1_i = r_2(x_i)

ui1​=r

2​(x

i​)邊界條件為

u n=

2hc2

+4bn

+1−b

2un+

22ha

2+3b

2u_n = \frac - b_2u_}

un​=2h

a2​+

3b2​

2hc2

​+4b

n+1​

−b2​

un+2

​​

import numpy as np 

import matplotlib.pyplot as plt

# 初始化

delta_t =

0.02 # 時間步長

delta_x =

0.02 # 控制項步長

c =1 # 波速

tao = c * delta_t / delta_x

u = np.

zeros((

51,80)

)# 初始條件

for i in

range(0

,51):

u[i][0

]= np.

sin(i * delta_x * np.pi)

; u[i][1

]= np.

sin(i * delta_x * np.pi)

;# 邊界條件u[0

,:]=

0u[50,

:]=0

# 迭代

for t in

range(1

,79):

for x in

range(1

,50):

u[x]

[t +1]

=2*(

1- tao **2)

* u[x]

[t]- u[x]

[t -1]

+ tao **2*

(u[x -1]

[t]+ u[x +1]

[t])

# 畫圖

x = np.

arange(0

,1.02

,0.02

)for t in

range(0

,80,2

):plt.

plot

(x, u[

:, t]

, color=

"r", linewidth=

0.8)

plt.

xlabel

("x/cm"

)plt.

ylabel

("u/cm"

)plt.

show

()

結果如下可以看出是非常典型的駐波

在此主要總結一下本次的心得體會。**並不複雜,畢竟計算機只是一種工具,在編寫的過程中,頻繁的錯誤結果,往往是因為沒有正確的把握理論。比如,簡單粗暴的套公式,不僅沒有真正理解差分方法的本質,而且**錯誤率極高。之後返回去理解差分方法之後,效率有所提公升,並且也獲得了比較滿意的結果。「磨刀不誤砍柴工」說的就是這個道理了。

方程的Python數值解法

import numpy as np result np.roots a a是方程的係數向量 a an,a n 1,a1,a 0 a a a a a a an an 1 a 1 a 0 代表求解方程 a nx n an 1xn 1 a 1x a 0 0a x a x a x a 0 an xn an...

2020 11 數值模擬

02 記錄生活 03 理性思考 04 期盼開學 05 畢業 06 畢業 07 留校 08 回家 09 研究生 10 水文年鑑 工作 數位化 學習 看圖論 連通性。工作 領取創新論壇日程安排和摘要集。學習 上午,參加2020年江蘇省研究生 水科學前沿與技術 學術創新論壇開幕式,聽四位特邀報告人做報告。...

RF 波動光學模組內建方程解析推導

comsol multiphysics多場耦合 技術與應用 線上大綱 comsol軟體入門 框架建立及軟體基本操作 1 初識comsol 以多個具體的案例建立comsol 框架,熟悉軟體的使用方法 2 comsol軟體基本操作 2.1 引數及變數設定方法 2.2 幾何建模 2.3基本函式設定方法,如...