system: [SYSTEM]

user: 3. 数值算例 在此部分中，我们展示了用此数值方法得到的数值结果，从而求出下面例子的近似解。 例1 我们考虑以下具有不连续源项的奇异摄动抛物型反应扩散问题 [ 8 ] ： { ∂ u ∂ t − ε 1 ∂ 2 u ∂ x 2 + 5 u − t v = f 1 ( x ， t ) ， ∂ v ∂ t − ε 2 ∂ 2 v ∂ x 2 − t u + 5 ( 1 + x t ) v − r = f 2 ( x ， t ) ， ∂ r ∂ t − ε 3 ∂ 2 r ∂ x 2 − 2 u − ( 1 + x 2 ) v + ( 7 + x t ) r = f 3 ( x ， t ) ， (13) 具有初始边界条件： u ( 0 ， t ) = v ( 0 ， t ) = r ( 0 ， t ) = 0 ， u ( 1 ， t ) = v ( 1 ， t ) = r ( 1 ， t ) = 0 ， u ( x ， 0 ) = v ( x ， 0 ) = r ( x ， 0 ) = 0 ， (14) 其中 f 1 ( x ， t ) = { 2 + x + t ，               0 ≤ x ≤ 0.5 ， 1 ，                                   0.5 < x ≤ 1 ， f 2 ( x ， t ) = { 2                   0 ≤ x ≤ 0.5 ， t ，                 0.5 < x ≤ 1 ， (15) 和 f 3 ( x ， t ) = { 1 + x ，                   0 ≤ x ≤ 0.5 ， x 2 + t ，               0.5 < x ≤ 1. 图1和图2分别给出了选取不同的节点M和N时得到的数值解。表1给出了参数N变为2倍时的数值结果，在表2中，得到了参数N除以2，参数 Δ t 除以2时的数值结果。在这种情况下，观察到一阶均匀收敛。 ε 的值越大，结果越小，当 ε 的值达到某一值时，数值结果是稳定的。从表1和表2我们可以看出，此方法比以前的方法具有更高的精度，我们推断，时间离散化的误差控制了数值格式的全局误差。 图1. 例1的数值解图当 ε 1 = 10 − 9 ， ε 2 = 10 − 5 ， ε 3 = 10 − 3 和 N = 256 ， M = 8 图2. 例1的数值解图当 ε 1 = 10 − 9 ， ε 2 = 10 − 5 ， ε 3 = 10 − 3 和 N = 128 ， M = 2 Table 1 Comparison of maximum point-wise errors and ε 1 ， ε 2 ， ε 3 uniform rate of convergence for the example Ref. [ 8 ] Present method ε 1 = 10 − j N = 128 M = 2 N = 256 M = 8 N = 512 M = 32 N = 1024 M = 128 N = 128 M = 2 N = 256 M = 8 N = 512 M = 32 N = 1024 M = 128 j = 1 3.22E−02 1.71E−02 5.92E−03 1.63E−03 2.33E−04 1.27E−06 4.27E−08 3.73E−10 j = 2 3.84E−02 1.84E−02 5.88E−03 1.59E−03 2.45E−04 1.34E−06 4.34E−08 3.91E−10 j = 3 4.00E−02 1.90E−02 6.05E−03 1.63E−03 3.05E−04 2.08E−06 5.02E−08 4.21E−10 j = 4 4.24E−02 1.98E−02 6.31E−03 1.70E−03 3.78E−04 2.57E−06 5.17E−08 4.59E−10 j = 5 4.42E−02 2.24E−02 8.90E−03 2.84E−03 4.02E−04 2.96E−06 5.63E−08 5.10E−10 j = 8 4.42E−02 2.24E−02 8.90E−03 2.84E−03 4.28E−04 3.03E−06 6.12E−08 5.33E−10 j = 10 4.42E−02 2.24E−02 8.90E−03 2.84E−03 4.28E−04 3.03E−06 6.12E−08 5.33E−10 j = 12 4.42E−02 2.42E−02 8.90E−03 2.84E−03 4.28E−04 3.03E−06 6.12E−08 5.33E−10 表1. 例1最大点积误差与 ε 1 ， ε 2 ， ε 3 均匀收敛速度的比较 Table 2 Comparison of maximum point-wise errors and ε 1 ， ε 2 ， ε 3 uniform rate of convergence for the Example Ref. [ 8 ] Present method ε 1 = 10 − j N = 128 M = 2 N = 256 M = 8 N = 512 M = 32 N = 1024 M = 128 N = 128 M = 2 N = 256 M = 8 N = 512 M = 32 N = 1024 M = 128 j = 1 3.22E−02 2.68E−02 1.71E−02 1.06E−02 2.33E−04 2.02E−05 4.01E−07 3.21E−09 j = 2 3.84E−02 2.89E−02 1.84E−02 1.07E−02 2.45E−04 2.31E−05 4.21E−07 3.33E−09 j = 3 4.00E−02 2.98E−02 1.90E−02 1.09E−02 3.05E−04 2.76E−05 4.83E−07 3.89E−09 j = 4 4.24E−02 3.05E−02 1.93E−02 1.11E−02 3.78E−04 3.03E−05 5.21E−07 4.15E−09 j = 5 4.42E−02 3.25E−02 2.01E−02 1.14E−02 4.02E−04 3.28E−05 5.38E−07 4.27E−09 j = 8 4.42E−02 3.25E−02 2.01E−02 1.15E−02 4.28E−04 3.56E−05 5.92E−07 4.83E−09 j = 10 4.42E−02 3.25E−02 2.01E−02 1.15E−02 4.28E−04 3.56E−05 5.92E−07 4.83E−09 j = 12 4.42E−02 3.25E−02 2.01E−02 1.15E−02 4.28E−04 3.56E−05 5.92E−07 4.83E−09 表2. 例1最大点积误差与 ε 1 ， ε 2 ， ε 3 均匀收敛速度的比较 表3例举了当 ε ，N和t选取不同的值时，实例1的算法所需的迭代次数。可以观察到，当 ε 较大时，迭代次数随着N略微减小；但对于取值小的 ε ，只需要一次迭代。 Table 3 Number of iterations required by the algorithm for Example Ref. [ 8 ] Present method ε 1 = 10 − j N = 128 M = 2 N = 256 M = 8 N = 512 M = 32 N = 1024 M = 128 N = 2048 M = 512 j = 1 5 4 3 3 2 j = 2 2 2 2 1 1 j = 3 1 1 1 1 1 j = 4 1 1 1 1 1 j = 5 1 1 1 1 1 j = 6 1 1 1 1 1 j = 7 1 1 1 1 1 j = 8 1 1 1 1 1 表3. 例1算法所需的迭代次数 例2：我们考虑以下的时间延迟奇异摄动反应扩散问题 [ 9 ] ： { ∂ u ∂ t − ε 1 ∂ 2 u ∂ x 2 + 2.1 u − ( 1 − x ) v − ( 1 + x ) r = 16 x 2 ( 1 − x ) 2 ， ∂ v ∂ t − ε 2 ∂ 2 v ∂ x 2 − x u + ( 1.1 + x ) v − x r = t 2 ， ∂ r ∂ t − ε 3 ∂ 2 r ∂ x 2 − ( 2 + x ) u − ( 1 − x ) v − ( 3.1 + x ) r = − 16 x 2 ( 1 − x ) 2 ， (16) 具有初始边界条件 u ( 0 ， t ) = v ( 0 ， t ) = r ( 0 ， t ) = 0 ，     u ( 1 ， t ) = v ( 1 ， t ) = r ( 1 ， t ) = 0. 我们计算了对不同 ε 值的最大误差，图3和表4展现了相应的结果。与Shishkin的方法相比，通过本方法获得的最大误差更小。这表明此方法具有更高的精确度，可以看到，随着 ε 值的增加，误差变小。 图3. 对 ε 1 = 10 − 1 ， ε 2 = 10 − 2 ， ε 3 = 10 − 3 和 N = 64 ， M = 8 时例2的数值解 Table 4 Comparison of maximum point-wise errors and convergence rate for the Example Ref. [ 9 ] Present method ε 1 = 10 − j N = 32 t = 0.1 N = 64 t = 0.1 / 4 N = 128 t = 0.1 / 4 2 N = 256 t = 0.1 / 4 3 N = 32 t = 0.1 N = 64 t = 0.1 / 4 N = 128 t = 0.1 / 4 2 N = 256 t = 0.1 / 4 3 j = 0 8.01E−02 2.90E−02 9.95E−03 2.75E−03 3.03E−03 1.08E−03 3.27E−04 2.08E−06 j = 1 1.70E−01 6.88E−02 1.99E−02 5.19E−03 3.17E−03 1.27E−03 3.62E−04 2.16E−06 j = 2 2.44E−01 9.34E−02 2.65E−02 6.86E−03 3.58E−03 2.45E−03 3.76E−04 2.53E−06 j = 3 2.57E−01 9.77E−02 2.77E−02 7.16E−03 4.02E−03 2.87E−03 4.05E−04 3.21E−06 j = 4 2.59E−01 9.81E−02 2.78E−02 7.17E−03 4.55E−03 2.99E−03 4.16E−04 3.45E−06 j = 5 2.59E−01 9.81E−02 2.78E−02 7.17E−03 4.55E−03 2.99E−03 4.16E−04 3.45E−06 j = 6 2.59E−01 9.81E−02 2.78E−02 7.17E−03 4.55E−03 2.99E−03 4.16E−04 3.45E−06 表4. 比较例2的最大点误差和收敛速度 例3： { ∂ u ∂ t − ε 1 ∂ 2 u ∂ x 2 + ( 5 + x t ) u − ( x 2 + t 2 ) v − ( 2 + x t ) r = 2 ( 1 − e − t ) + 5 t cos ( x t ) ， ∂ v ∂ t − ε 2 ∂ 2 v ∂ x 2 − 5 x t e − x u + ( 6 + cos ( x t ) ) v − cos ( x t ) r = ( 10 x + 1 ) t ( x 2 + t 2 − 5 sin ( x t ) ) ， ∂ r ∂ t − ε 3 ∂ 2 r ∂ x 2 − 3 x e − t u − ( x t + sin ( x + t ) ) v + ( 5 + ( x + 1 ) e − x t ) r = − 3 t cos ( x + t ) . u ( 0 ， t ) = u ( 1 ， t ) = 0 ， t ∈ [ 0 ， 1 ] ， u ( x ， 0 ) = 0 ， x ∈ [ 0 ， 1 ] . (17) 我们选取参数 ε 1 = 10 − 8 ， ε 2 = 10 − 6 ， ε 3 = 10 − 4 和 N = 60 ， M = 64 ，初始条件 u ( x ， 0 ) = v ( x ， 0 ) = r ( x ， 0 ) = 0 ，边界条件 u ( 0 ， y ) = v ( 0 ， y ) = r ( 0 ， y ) = 0 。图4显示了方程组的数值近似值，为了将我们的算法与另一种经典的方法比较，表5显示了与之前相同的 ε 1 ， ε 2 ， ε 3 值的最大误差。从中可以看出，在这种情况下，最大误差的大小与表中相似，但小于表中所示的误差。根据所考虑的问题，使用重心插值配点法得到的误差有时会更好，有时会更差点。 图4. 当 ε 1 = 10 − 8 ， ε 2 = 10 − 6 ， ε 3 = 10 − 4 时例3的数值解 Table 5 Comparison of maximum errors and orders of convergence of Example Present method Ref. [ 5 ] ε 3 N = 366 M = 16 N = 144 M = 64 N = 288 M = 128 N = 5766 M = 256 N = 366 M = 16 N = 144 M = 64 N = 288 M = 128 N = 5766 M = 256 2 − 5 0.574E−1 0.332E−1 0.160E−1 0.406E−2 0.895E−1 0.392E−1 0.188E−1 0.567E−2 0.184 1.071 1.352 1.456 0.571 1.060 1.728 1.731 2 − 7 0.573E−1 0.221E−1 0.088E−1 0.466E−2 0.901E−1 0.392E−1 0.188E−1 0.568E−2 0.188 0.998 1.453 1.624 0.528 1.060 1.726 1.729 2 − 9 0.874E−1 0.208E−1 0.074E−1 0.367E−2 0.947E−1 0.390E−1 0.187E−1 0.567E−2 0.435 0.932 1.533 1.756 0.595 1.062 1.722 1.726 2 − 11 0.084E−1 0.321E−1 0.096E−1 0.427E−2 0.109E−1 0.423E−1 0.186E−1 0.563E−2 0.430 1.045 1.629 1.834 0.530 1.186 1.723 1.727 d 1 N ， M 0.403E−1 0.314E−1 0.091E−1 0.513E−2 0.109E+0 0.425E−1 0.188E−1 0.691E−2 p 1 u n i 0.228 1.048 1.032 1.425 0.529 1.175 1.444 1.525 表5. 比较例3的最大误差和收敛阶数 为了比较两种算法的计算成本，我们在表6中显示了几个N和M值所需的CPU时间，选择固定值 ( ε 1 = 10 − 8 ， ε 2 = 10 − 6 ， ε 3 = 10 − 4 ) 作为扩散参数。相对于与经典的方法比较，当n值增加时，我们的方法产生了一个加速。 Table 6 Comparison of CPU time for Example Method N = 72 M = 32 N = 144 M = 64 N = 288 M = 128 N = 576 M = 256 N = 1152 M = 512 Present method 0.00566 0.00796 0.12430 0.32683 1.68447 Ref. [ 5 ] 0.03120 0.09360 0.32760 1.21681 4.83603 表6. 例3的CPU时间比较 例4：我们考虑以下二维时间延迟奇异摄动反应扩散问题 { ∂ u ∂ t − ε 1 ∂ 2 u ∂ x 2 + ( 1 + 0.5 x y ) ∂ u ∂ x + e x 2 y ∂ u ∂ y + e x + y ( 1 + t ) u − t ( x + y ) v − t x r = 10 t 2 sin ( x + y ) ， ∂ v ∂ t − ε 2 ∂ 2 v ∂ x 2 + ( 5 + x 2 y ) ∂ u ∂ x + ( 3 + sin ( x + y ) ) ∂ u ∂ y − ( x + y ) u + ( 1 + t ) ( 3 + x + y ) v − t sin ( y ) r = − 5 ( 1 − e − t ) ( x 2 + y 2 ) ， ∂ r ∂ t − ε 3 ∂ 2 r ∂ x 2 + ( 3 − x y ) ∂ u ∂ x + ( 1 + x + y ) ∂ u ∂ y − x y 2 u − t ( sin x + sin y ) v + e t ( 2 + cos ( x + y ) ) r = − 4 t e t cos ( x y ) ， 具有初始边界条件 u ( 0 ， y ， t ) = 4 y sin ( t ) ， u ( x ， 0 ， t ) = 4 x sin ( t ) ， v ( 0 ， y ， t ) = 0 ， v ( x ， 0 ， t ) = 0 ， r ( 0 ， y ， t ) = 3 ( 1 − e t ) ， r ( x ， 0 ， t ) = 3 ( 1 − e t ) ， u ( x ， y ， 0 ) = v ( x ， y ， 0 ) = r ( x ， y ， 0 ) = 0 ， u ( 1 ， y ， t ) = 4 ( 1 + y ) sin ( t ) ， u ( x ， 1 ， t ) = 4 ( x + 1 ) sin ( t ) ， v ( 1 ， y ， t ) = y t 2 ， v ( x ， 1 ， t ) = x t 2 ， r ( 1 ， y ， t ) = 3 e y ( 1 − e t ) ， r ( x ， 1 ， t ) = 3 e x ( 1 − e t ) . 为了获得数值解，我们运用相同的思想来分割具有更多元素的系统。 图5显示了当 ε = 10 − 4 时例3的数值解，表7分别为第一，第二，第三分量 ε 值的结果。我们可以看到， ε 的值越小，最大误差也越小。由此可见，本文方法具有较好的精度。 图5. 在T = 1， N = 32 ， M = 32 时例4的数值解 Table 7 Comparison of maximum errors and orders of convergence in Example 4 for Ref. [ 11 ] Present method ε 1 = 10 − j N = 16 M = 8 N = 32 M = 16 N = 64 M = 32 N = 128 M = 64 N = 16 M = 8 N = 32 M = 16 N = 64 M = 32 N = 128 M = 64 2 − 6 6.6804E−2 5.7987E−2 3.9483E−2 2.4603E−2 7.8068E−4 5.6213E−4 4.27E−08 3.6216E−5 0.2042 0.5545 0.6824 0.7396 0.1083 0.4545 0.5532 0.6842 2 − 8 6.8721E−2 5.8378E−2 4.0315E−2 2.5349E−2 7.9731E−4 5.7897E−4 8.3764E−5 3.8716E−5 0.2353 0.5341 0.6694 0.7285 0.1527 0.4721 0.5872 0.7011 2 − 10 7.1566E−2 5.8489E−2 4.0574E−2 2.5602E−2 8.0124E−04 5.8849E−4 8.6019E−5 3.9663E−5 0.2911 0.5276 0.6643 0.7252 0.2352 0.4920 0.6013 0.7834 2 − 12 7.2293E−2 5.8520E−2 4.0643E−2 2.5668E−2 8.2236E−4 5.9013E−4 8.3456E−5 4.0021E−5 0.3049 0.5259 0.6630 0.7242 0.2901 0.4971 0.6725 0.7991 表7. 例4中对v的最大误差和收敛阶数的比较