一维热传导方程差分方法的 MATLAB 编程实现。
一维热传导方程
其中 $a$ 是正常数,$f(x,t)$、$\phi(x)$、$\alpha(x)$ 和 $\beta(x)$ 为已知函数。$u(x, 0)=\phi(x)$ 为初始条件,$u(0,t)=\alpha(t)$ 和 $u(1,t)=\beta(t)$ 为边界条件。
向前差分格式
以空间步长 $h=1/M$、时间步长 $\tau=T/N$ 分别将 $x$ 轴上区间 $[0,1]$、$t$ 轴上区间 $[0,T]$ 分成 $M$、$N$ 等分,可得
一维热传导方程的向前差分格式
其中 $j=1,2, \cdots, M-1$,$n=0,1, \cdots, N-1$. 以 $r=a \tau/h^{2}$ 表示网比。
以上格式可改写差分格式
先取 $n=0$,利用 $u_{j}^{0}$ 和边值 $u_{0}^{n}=u_{M}^{n}=0$ 算出第一层值 $u_j^1$,再取 $n=2$ ,利用 $u_j^1$ 和边值便可算出 $u_j^2$。如此下去,便可求出所有 $u_j^n$。
设 $\boldsymbol{u}^{n}=(u_{1}^{n}, u_{2}^{n}, \cdots, u_{M-2}^{n}, u_{M-1}^{n})^{\mathrm{T}}, \quad 0 \leqslant n \leqslant N.$
差分格式写成矩阵的形式:
其中矩阵 $\boldsymbol{A}$、向量 $\boldsymbol{f}^n$ 的定义如下,注意向量 $\boldsymbol{f}^n$ 的首尾元素已包含了边界条件。
数值例子
方程的真解:$u(x,t)=\mathrm{e}^{x+t}$.
计算数值解
1 | % fdm_heat.m |
输出结果
1 | Error = |