最简显格式
对于如下热传导方程:
$$ \begin{cases} \frac{\partial u}{\partial t} =\frac{\partial ^2 u}{\partial t} \quad 0首先对时间及空间进行划分,将时间划分为$m-1$份,将空间划分为$n-1$份,则$\tau=\frac{0.03}{m-1},h=\frac{1}{n-1}$。 根据最简显格式可以得到:
$$ u_j^{i+1}=\frac{\tau}{h^2}(u_{j+1}^{i}-2u_j^i+u_{j-1}^i)+u_j^{i}, $$其中$i=0,1,\cdots,m-1$,$j=0,1,\cdots,n-1$。
编程实现
根据理论推导,用python编写程序如下:
|
|
结果分析
当取$m=320,n=64$时,得到数值解$[u]$如下图所示:
精确解$u$如下图所示:
精确解与数值解之差的绝对值$||u-[u]||$如下图所示:
当取不同的$\tau,h$时,计算得到的误差如下表所示。
$\tau$ | $h$ | 误差$e$ | $e_i/e_{i+1}$ |
---|---|---|---|
$\frac{1}{10}$ | $\frac{1}{10}$ | 0.0428079643162558 | |
$\frac{1}{40}$ | $\frac{1}{20}$ | 0.00951825176096948 | 4.4975 |
$\frac{1}{160}$ | $\frac{1}{40}$ | 0.00244056613219328 | 3.9000 |
$\frac{1}{640}$ | $\frac{1}{80}$ | 0.000606385251482932 | 4.0248 |
$\frac{1}{2560}$ | $\frac{1}{160}$ | 0.000151362159712509 | 4.0062 |
我们知道最简显格式的误差为$||[u]^k-u^k||=O(\tau + h^2)$,设$e_i=C \times (\tau_i + h_i^2)$, 取$\tau_{i+1}=\frac{1}{4} \tau_i$,$h_{i+1}=\frac{1}{2}h_i$,可以得到$\frac{e_i}{e_{i+1}} =4$,与上表结果相符,从而也验证了最简显格式的误差阶数为$O(\tau + h^2)$.