system: [SYSTEM]

user: 2. 利用显式差分格式法进行数值求解 2.1. 数值解和误差分析 现给出一个双曲型波动方程问题，如下所示： ∂ 2 u ∂ t 2 − ∂ 2 u ∂ x 2 = 0 ， 0 < x < 1 ， 0 < t ≤ 1 u ( x ，   0 ) = e x ， ∂ u ∂ t ( x ，   0 ) = e x ， 0 < x < 1 u ( 0 ，   t ) = e t ， u ( 1 ，   t ) = e 1 + t ， 0 < t ≤ 1 该问题精确解为 u ( x ， t ) = e x + t 。 首先，利用显式差分格式的方法求解其数值解，并求出此数值解的误差的绝对值。具体做法是：取空间步长h为1/100，时间步长 τ 为1/200，此时的步长比s为1/2，计算固定 x = 0.5 时，时间从0.1到1秒的数值解以及数值解和精确解之差的绝对值(误差)，结果如表1所示。再次取空间步长和时间步长分别为1/100和1/100，结果如表2所示。第三次取他们的值分别为1/100和1/50，此时计算结果如表3所示。 Table 1 Exact solution， numerical solution and absolute error at some nodes ( h = 1 / 100 ， τ = 1 / 200 (x， t) 数值解 精确解 误差 (0.5， 0.1) 1.822118166 1.822118800 6.347874e−07 (0.5， 0.2) 2.013751546 2.013752707 1.161856e−06 (0.5， 0.3) 2.225539354 2.225540928 1.574483e−06 (0.5， 0.4) 2.459601248 2.459603111 1.863540e−06 (0.5， 0.5) 2.718279878 2.718281828 1.950804e−06 (0.5， 0.6) 3.004165434 3.004166024 5.895138e−07 (0.5， 0.7) 3.320117694 3.320116923 7.712292e−07 (0.5， 0.8) 3.669298711 3.669296668 2.042968e−06 (0.5， 0.9) 4.055203232 4.055199967 3.264843e−06 (0.5， 1.0) 4.481693496 4.481689070 4.426127e−06 表1. 部分节点处精确解、数值解和误差绝对值 ( h = 1 / 100 ， τ = 1 / 200 ) Table 2 Exact solution， numerical solution and absolute error at some nodes ( h = 1 / 100 ， τ = 1 / 100 (x， t) 数值解 精确解 误差 (0.5， 0.1) 1.822116048 1.822118800 2.752419e−06 (0.5， 0.2) 2.013747175 2.013752707 5.532384e−06 (0.5， 0.3) 2.225532561 2.225540928 8.367720e−06 (0.5， 0.4) 2.459591824 2.459603111 1.128680e−05 (0.5， 0.5) 2.718267510 2.718281828 1.431885e−05 (0.5， 0.6) 3.004154737 3.004166024 1.128680e−05 (0.5， 0.7) 3.320108555 3.320116923 8.367720e−06 (0.5， 0.8) 3.669291135 3.669296668 5.532385e−06 (0.5， 0.9) 4.055197214 4.055199967 2.752419e−06 (0.5， 1.0) 4.481689070 4.481689070 1.421085e−14 表2. 部分节点处精确解、数值解和误差绝对值 ( h = 1 / 100 ， τ = 1 / 100 ) Table 3 Exact solution， numerical solution and absolute error at some nodes ( h = 1 / 100 ， τ = 1 / 50 (x， t) 数值解 精确解 误差 (0.5， 0.1) 1.822107578 1.822118800 1.122231e−05 (0.5， 0.2) 2.013729376 2.013752707 2.333121e−05 (0.5， 0.3) 2.41268389 2.225540928 1.871430e+01 (0.5， 0.4) −8.865401847e+04 2.459603111 8.865648e+04 (0.5， 0.5) 3.950775415e+10 2.718281828 3.950775e+10 (0.5， 0.6) −1.641415244e+16 3.004166024 1.641415e+16 (0.5， 0.7) 6.038232892e+21 3.320116923 6.038233e+21 (0.5， 0.8) −1.689514915e+27 3.669296668 1.689515e+27 (0.5， 0.9) 6.910972393e+31 4.055199967 6.910972e+31 (0.5， 1.0) 4.011360911e+38 4.481689070 4.011361e+38 表3. 部分节点处精确解、数值解和误差绝对值 ( h = 1 / 100 ， τ = 1 / 50 ) 由表1、表2、表3中的数据可以看出，当取空间步长和时间步长分别为1/100和1/200时，有效数字位数可以达到6位；当取空间步长和时间步长分别为1/100和1/100时，有效数字位数可以达到5位，他们都很好的逼近了精确解。然而，当空间步长和时间步长分别为1/100和1/50时误差非常大，此时显式差分格式方法也不收敛。 进一步，我们绘制出了空间步长和时间步长分别为1/10和1/20，1/20和1/40，1/40和1/80时，在某一时刻的误差曲线和整体的误差曲面图，如图1和图2所示。由这两个图可以看出，当空间步长和时间步长取1/10和1/20时数值解的误差较大，随着步长减小，每个坐标的误差均减小。 图1. t = 1时不同步长时对应的误差曲线 图2. 不同步长时对应的误差曲面 为分析不同步长下显式差分格式的准确程度，我们固定步长比为1/2，依次取空间步长为1/10、1/20一直到1/1280，计算在 x = 0.5 处的最大误差，以及步长细分时最大误差的比值。结果如表4所示。 Table 4 Maximum error of asynchronous long time numerical solutio h τ E ∞ ( h ， τ ) E ∞ ( 2 h ， 2 τ ) / E ∞ ( h ， τ ) 1/10 1/20 4.369783e−04 * 1/20 1/40 1.106462e−04 3.9493 1/40 1/80 2.771186e−05 3.9927 1/80 1/160 6.926296e−06 4.0010 1/160 1/320 1.732371e−06 3.9982 1/320 1/640 4.330753e−07 4.0002 1/640 1/1280 1.082610e−07 4.0003 1/1280 1/2560 2.706447e−08 4.0001 表4. 取不同步长时数值解的最大误差 根据表4可知，当时间步长从1/10变化到1/1280时，最大误差从 4.37 × 10 − 4 减小到 2.71 × 10 − 8 ，误差大幅度减小，说明步长越小，数值解的误差越小。同时，当时间步长与空间步长同时缩小为原来的1/2时，最大误差缩小为原来1/4。 2.2. 显式差分格式的计算时间 程序的运行时间反应了算法的复杂程度和计算效率，因此下面计算当步长比固定为1/2时不同步长情况下的显式差分格式的程序运行时间。考虑计算机运行的不稳定性，5次重复运行，取时间的平均值，结果如表5，平均时间变化图如图3所示。 从表5可以看出，当空间步长和时间步长为1/10和1/20时，程序运行的时间约为0.001秒，而当空间步长和时间步长为1/5120和1/10，240，运行时间约为0.8秒，时间的变化非常大。从图3可以看出，当步长减小时，程序的运行时间逐渐增加，并且增加速度越来越快。 Table 5 Calculation time of explicit difference scheme with different step siz 次数 第一次 第二次 第三次 第四次 第五次 均值 空间步长 1/10 0.0047938 0.0002119 0.0001499 0.0002869 0.0002791 0.00114432 1/20 0.0020701 0.0003073 0.0002474 0.0003799 0.0002699 0.00065492 1/40 0.00131 0.0008426 0.000534 0.0008998 0.0005666 0.0008306 1/80 0.0017145 0.0017343 0.0011322 0.0019457 0.0015674 0.00161882 1/160 0.0055483 0.0035192 0.0030814 0.0046287 0.0048612 0.00432776 1/320 0.0059902 0.0087562 0.0080683 0.0074664 0.0091803 0.00789228 1/640 0.0167173 0.0210556 0.0145226 0.0205995 0.022362 0.0190514 1/1280 0.056834 0.049551 0.0543222 0.0576309 0.0643534 0.0565383 1/2560 0.2265084 0.2034202 0.2008477 0.2072619 0.2111032 0.20982828 1/5120 0.7837198 0.7825685 0.796066 0.8442899 0.8129564 0.80392012 表5. 不同步长下的显式差分格式计算时间 图3. 显式差分格式不同步长下的时间均值