python求解一个偏微分方程例子
时间: 2023-11-03 11:06:01 浏览: 26
以下是一个求解热传导方程的 Python 代码示例:
```python
import numpy as np
import matplotlib.pyplot as plt
# 定义常数和网格
L = 1 # 杆的长度
T = 0.1 # 总时间
N = 100 # 网格数量
M = 1000 # 时间步数
dx = L/N
dt = T/M
# 定义初始条件
u = np.zeros((N+1, M+1))
u[:, 0] = np.sin(np.pi*np.linspace(0, L, N+1)/L)
# 循环求解
for k in range(M):
for i in range(1, N):
u[i, k+1] = u[i, k] + dt/dx**2 * (u[i+1, k] - 2*u[i, k] + u[i-1, k])
# 绘制结果
x = np.linspace(0, L, N+1)
t = np.linspace(0, T, M+1)
X, T = np.meshgrid(x, t)
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
ax.plot_surface(X, T, u.T, cmap='plasma')
ax.set_xlabel('x')
ax.set_ylabel('t')
ax.set_zlabel('u')
plt.show()
```
这个例子中,我们求解的是热传导方程 $u_t = u_{xx}$,即杆内温度随时间的变化。我们使用差分方法来离散化方程,并使用三维图像来展示结果。