热方程与波动方程

热方程与波动方程

讲课内容

一、热方程的求解

热方程描述了物体内热量的分布随时间变化的过程,广泛应用于热传导问题。热方程的标准形式为:
∂ u ∂ t = α ∇ 2 u \frac{\partial u}{\partial t} = \alpha \nabla^2 u tu=α2u
其中, u ( x , t ) u(x, t) u(x,t) 是温度分布, α \alpha α 是热扩散系数, ∇ 2 \nabla^2 2 是拉普拉斯算子。

1.1 一维热方程

一维热方程的标准形式为:
∂ u ∂ t = α ∂ 2 u ∂ x 2 \frac{\partial u}{\partial t} = \alpha \frac{\partial^2 u}{\partial x^2} tu=αx22u
解决这个方程的方法通常是分离变量法,假设解可以写成空间部分与时间部分的乘积,即 u ( x , t ) = X ( x ) T ( t ) u(x, t) = X(x) T(t) u(x,t)=X(x)T(t)

代入热方程后,可以得到两个独立的常微分方程:
T ′ ( t ) T ( t ) = α X ′ ′ ( x ) X ( x ) = − λ \frac{T'(t)}{T(t)} = \alpha \frac{X''(x)}{X(x)} = -\lambda T(t)T(t)=αX(x)X′′(x)=λ
这是一个分离常数的标准形式。

例子: 求解以下一维热方程:
∂ u ∂ t = α ∂ 2 u ∂ x 2 \frac{\partial u}{\partial t} = \alpha \frac{\partial^2 u}{\partial x^2} tu=αx22u
初始条件: u ( x , 0 ) = sin ⁡ ( π x ) u(x, 0) = \sin(\pi x) u(x,0)=sin(πx),边界条件: u ( 0 , t ) = 0 u(0, t) = 0 u(0,t)=0 u ( 1 , t ) = 0 u(1, t) = 0 u(1,t)=0

  1. 使用分离变量法,假设解为 u ( x , t ) = X ( x ) T ( t ) u(x, t) = X(x) T(t) u(x,t)=X(x)T(t)
  2. 代入热方程,得到两个独立的常微分方程:
    X ′ ′ ( x ) + λ X ( x ) = 0 , T ′ ( t ) = − α λ T ( t ) X''(x) + \lambda X(x) = 0, \quad T'(t) = -\alpha \lambda T(t) X′′(x)+λX(x)=0,T(t)=αλT(t)
  3. 解得 X ( x ) = sin ⁡ ( n π x ) X(x) = \sin(n\pi x) X(x)=sin(x),其中 λ = ( n π ) 2 \lambda = (n\pi)^2 λ=()2
  4. 对时间部分,解得 T ( t ) = e − α ( n π ) 2 t T(t) = e^{-\alpha (n\pi)^2 t} T(t)=eα()2t
  5. 总解为:
    u ( x , t ) = ∑ n = 1 ∞ B n sin ⁡ ( n π x ) e − α ( n π ) 2 t u(x, t) = \sum_{n=1}^{\infty} B_n \sin(n\pi x) e^{-\alpha (n\pi)^2 t} u(x,t)=n=1Bnsin(x)eα()2t
  6. 使用初始条件确定常数 B n B_n Bn,最终得到解。
1.2 多维热方程

多维热方程是热方程的扩展,适用于描述二维或三维空间中温度的分布。它的标准形式为:
∂ u ∂ t = α ∇ 2 u \frac{\partial u}{\partial t} = \alpha \nabla^2 u tu=α2u
其中 ∇ 2 \nabla^2 2 是拉普拉斯算子,在二维空间中为:
∇ 2 u = ∂ 2 u ∂ x 2 + ∂ 2 u ∂ y 2 \nabla^2 u = \frac{\partial^2 u}{\partial x^2} + \frac{\partial^2 u}{\partial y^2} 2u=x22u+y22u
求解过程与一维热方程类似,可以通过分离变量法进行解答。


二、波动方程的求解

波动方程描述了波的传播,广泛应用于声学、光学、机械振动等领域。波动方程的标准形式为:
∂ 2 u ∂ t 2 = c 2 ∇ 2 u \frac{\partial^2 u}{\partial t^2} = c^2 \nabla^2 u t22u=c22u
其中, u ( x , t ) u(x, t) u(x,t) 是位移, c c c 是波速, ∇ 2 \nabla^2 2 是拉普拉斯算子。

2.1 一维波动方程

一维波动方程的标准形式为:
∂ 2 u ∂ t 2 = c 2 ∂ 2 u ∂ x 2 \frac{\partial^2 u}{\partial t^2} = c^2 \frac{\partial^2 u}{\partial x^2} t22u=c2x22u
我们也可以使用分离变量法来求解。

假设解为 u ( x , t ) = X ( x ) T ( t ) u(x, t) = X(x) T(t) u(x,t)=X(x)T(t),代入波动方程得到:
T ′ ′ ( t ) T ( t ) = c 2 X ′ ′ ( x ) X ( x ) = − λ \frac{T''(t)}{T(t)} = c^2 \frac{X''(x)}{X(x)} = -\lambda T(t)T′′(t)=c2X(x)X′′(x)=λ
解得空间部分 X ( x ) = A sin ⁡ ( k x ) + B cos ⁡ ( k x ) X(x) = A \sin(kx) + B \cos(kx) X(x)=Asin(kx)+Bcos(kx),时间部分 T ( t ) = C cos ⁡ ( ω t ) + D sin ⁡ ( ω t ) T(t) = C \cos(\omega t) + D \sin(\omega t) T(t)=Ccos(ωt)+Dsin(ωt),其中 ω = c k \omega = ck ω=ck

例子: 求解一维波动方程:
∂ 2 u ∂ t 2 = c 2 ∂ 2 u ∂ x 2 \frac{\partial^2 u}{\partial t^2} = c^2 \frac{\partial^2 u}{\partial x^2} t22u=c2x22u
初始条件: u ( x , 0 ) = 0 u(x, 0) = 0 u(x,0)=0 ∂ u ∂ t ( x , 0 ) = sin ⁡ ( π x ) \frac{\partial u}{\partial t}(x, 0) = \sin(\pi x) tu(x,0)=sin(πx),边界条件: u ( 0 , t ) = 0 u(0, t) = 0 u(0,t)=0 u ( 1 , t ) = 0 u(1, t) = 0 u(1,t)=0

  1. 假设解为 u ( x , t ) = X ( x ) T ( t ) u(x, t) = X(x) T(t) u(x,t)=X(x)T(t)
  2. 代入波动方程,得到两个常微分方程。
  3. 解得空间部分 X ( x ) = sin ⁡ ( n π x ) X(x) = \sin(n\pi x) X(x)=sin(x),时间部分 T ( t ) = sin ⁡ ( n π c t ) T(t) = \sin(n\pi ct) T(t)=sin(ct)
  4. 总解为:
    u ( x , t ) = ∑ n = 1 ∞ B n sin ⁡ ( n π x ) sin ⁡ ( n π c t ) u(x, t) = \sum_{n=1}^{\infty} B_n \sin(n\pi x) \sin(n\pi ct) u(x,t)=n=1Bnsin(x)sin(ct)
  5. 使用初始条件确定常数 B n B_n Bn,最终得到解。

三、初值问题与边值问题

初值问题和边值问题是偏微分方程求解中的两个重要组成部分。初值问题涉及时间或空间的初始状态,而边值问题涉及边界上的条件。

3.1 初值问题

初值问题是指给定初始时刻(通常是 t = 0 t = 0 t=0)的状态,要求解方程在该时刻后的解。通常用于描述时间变化的问题,如热方程、波动方程等。

3.2 边值问题

边值问题是指给定某一时刻或空间上的边界条件,要求解方程在该边界条件下的解。边值问题通常出现在空间问题中,如拉普拉斯方程、静电场问题等。

3.3 经典的初值与边值问题
  • 热方程: 给定初始温度分布和边界上的温度条件。
  • 波动方程: 给定初始位移和初始速度,以及边界上的位移条件。
  • 拉普拉斯方程: 给定静态场的边界条件。

课堂活动

活动 1:通过具体例子,计算热方程和波动方程的解,并讨论物理意义

任务:

  1. 使用分离变量法求解一维热方程和波动方程,比较解的形式和物理意义。
  2. 学生根据给定的初始条件和边界条件,计算并讨论解的变化。

例子:

  • 热方程: 给定一个一维杆的初始温度分布和两端的边界条件,求解温度随时间的变化。
  • 波动方程: 给定一个弦的初始位移和速度,求解其振动过程。
活动 2:让学生计算波动方程的解

任务:

  1. 给定初始位移 u ( x , 0 ) = sin ⁡ ( π x ) u(x, 0) = \sin(\pi x) u(x,0)=sin(πx),初始速度 ∂ u ∂ t ( x , 0 ) = 0 \frac{\partial u}{\partial t}(x, 0) = 0 tu(x,0)=0,边界条件 u ( 0 , t ) = 0 u(0, t) = 0 u(0,t)=0 u ( 1 , t ) = 0 u(1, t) = 0 u(1,t)=0,让学生计算波动方程的解。
  2. 让学生用分离变量法求解,并绘制结果图。

Python 代码实现示例

1. 解一维热方程
import numpy as np
import matplotlib.pyplot as plt

# 定义参数
L = 1  # 长度
T = 1  # 时间
Nx = 50  # 空间分割数
Nt = 100  # 时间分割数
alpha = 0.01  # 扩散系数
dx = L / (Nx - 1)  # 空间步长
dt = T / Nt  # 时间步长

# 初始化温度分布
u = np.zeros((Nx, Nt))
x = np.linspace(0, L, Nx)
u[:, 0] = np.sin(np.pi * x / L)  # 初始温度分布

# 使用显式差分法进行求解
for n in range(0, Nt - 1):
    for i in range(1, Nx - 1):
        u[i, n + 1] = u[i, n] + alpha * dt / dx**2 * (u[i + 1, n] - 2*u[i, n] + u[i - 1, n])

# 绘制结果
plt.imshow(u, extent=[0, T, 0, L], origin='lower', aspect='auto')
plt.colorbar(label='Temperature')
plt.xlabel('Time')
plt.ylabel('Position')
plt.title('Heat Equation Solution')
plt.show()
2. 解一维波动方程
# 波动方程的解
def wave_solution(x, t, L, c):
    return np.sin(np.pi * x / L) * np.cos(np.pi * c * t / L)

# 时间和空间网格
T = 1  # 总时间
Nx = 50  # 空间分割点数
Nt = 100  # 时间分割点数
x = np.linspace(0, 1, Nx)
t = np.linspace(0, T, Nt)
X, T_grid = np.meshgrid(x, t)

# 计算波动方程解
c = 1
U = wave_solution(X, T_grid, 1, c)

# 绘制结果
plt.imshow(U, extent=[0, T, 0, 1], origin='lower', aspect='auto')
plt.colorbar(label='Displacement')
plt.xlabel('Time')
plt.ylabel('Position')
plt.title('Wave Equation Solution')
plt.show()

总结

  • 热方程描述了温度分布随时间变化的过程,常通过分离变量法求解,适用于热传导等问题。
  • 波动方程描述了波的传播,常用分离变量法求解,适用于振动、声波传播等问题。
  • 通过编程练习可以更好地理解这些方程的物理意义,并熟悉如何用数值方法求解这些经典的偏微分方程。

你可能感兴趣的:(线性代数,算法)