7.3 Excel模板的制作
本节以求解一个四元线性方程组的正确解和数值解为例介绍模板的制作过程。
例7.1 求解下列线性方程组

的正确解和数值解。
首先打开一个Excel工作簿,在这个工作簿中打开4个工作表,分别命名为正确解、雅克比迭代法、高斯-赛德尔迭代法和逐次超松弛迭代法。在每一个工作表内完成相应的操作。
1.制作确定正确解的模板
下面的所有制作过程以图7.1为参考。

图7.1 正确解
第一步,输入系数矩阵和常数项。在单元格区域A2:D5中输入系数矩阵的元素;在单元格区域F2:F5中输入常数项的元素。
第二步,生成矩阵Ai(i=1,2,…,n)。选中单元格区域A8:A11并输入“=F2:F5”,同时按“Ctrl+Shift+Enter”键确认;选中单元格区域B8:D11并输入“=B2:D5”,同时按“Ctrl+Shift+Enter”键确认,完成A1的生成。选中单元格区域F8:F11并输入“=A2:A5”,同时按“Ctrl+Shift+Enter”键确认;选中单元格区域G7:G11输入“=F2:F5”,同时按“Ctrl+Shift+Enter”键确认;选中单元格区域H8:I11输入“=C2:D5”,同时按“Ctrl+Shift+Enter”键确认,完成A2的生成。用类似的方法生成A3和A4。
第三步,计算矩阵的行列式。在单元格E2、E8、J8、E13和J13中分别输入“=MDETERM(A2:D5)”“=MDETERM(A8:D11)”“=MDETERM(F8:I11)”“=MDETERM(A13:D16)”和“=MDETERM(F13:I16)”。
第四步,确定方程组的解。在单元格F20、G20、H20和I20中分别输入“=E8/E2”“=J8/E2”“=E13/E2”和“=J13/E2”,以此得到方程的正确解。
第五步,求系数矩阵的逆矩阵。选中单元格区域A19:D22并输入“=MINVERSE(A2:D5)”,同时按“Ctrl+Shift+Enter”键确认,得到系数矩阵的逆矩阵。
第六步,确定方程组的解。选中单元格区域F22:I22并输入“=TRANSPOSE(MMULT(A19:D22,F2:F5))”,同时按“Ctrl+Shift+Enter”键确认,得到方程的正确解。
在本模板中只要系数矩阵的行列式不为零,对模板中的系数矩阵和常数项进行相应地修改,就可以得出相应方程的解。
2.制作确定数值解的模板
在这个数值计算中计算停止的标准统一为![]()
(1)雅可比迭代法
下面的所有制作过程以图7.2为参考。

图7.2 用雅可比迭代法所得的数值解(https://www.daowen.com)
第一步,输入系数矩阵、常数项和初始值。在单元格区域B2:E5中输入系数矩阵的元素;在单元格区域F2:F5中输入常数项的元素;在单元格区域B8:E8中输入初始值。
第二步,输入迭代公式和迭代停止控制选项。在单元格A9中输入“A9+1”;在单元格B9、C9、D9和E9中用式(7.7)分别输入“=($G$2-$C$2*C8-$D$2*D8-$E$2*E8)/$B$2”“=($G$3-$B$3*B9-$D$3*D8-$E$3*E8)/$C$3”“=($G$4-$B$4*B9-$C$4*C9-$E$4*E8)/$D$4”和“=($G$5-$B$5*B9-$C$5*C9-$D$5*D9)/$E$5”;在单元格F9中输入误差计算公式“=MAX(ABS(B8:E8-B9:E9))”同时按“Ctrl+Shift+Enter”键确认;在单元格G9中输入迭代控制公式“=IF(F9>0.00001,"继续","停止")”。
第三步,确定数值解。选中单元格区域A9:G9,把鼠标指针移动到单元格G9的右下角,待其变为填充柄(“
”符号)时,按住鼠标左键向下拖动到单元格列G上出现“停止”为止,此时出现“停止”所对应的单元格区域B:E内的值满足所要求的精度的数值解。
(2)高斯-赛德尔迭代法
下面的所有制作过程以图7.3为参考。
第一步,输入系数矩阵、常数项和初始值。在单元格区域B2:E5和G2:G5中分别输入系数矩阵和常数项的元素。
第二步,输入迭代公式和迭代停止控制选项。在单元格A9中输入“A9+1”;在单元格B9、C9、D9和E9中用式(7.10)分别输入“=($G$2-$C$2*C8-$D$2*D8-$E$2*E8)/$B$2”“=($G$3-$B$3*B8-$D$3*D8-$E$3*E8)/$C$3”“=($G$4-$B$4*B8-$C$4*C8-$E$4*E8)/$D$4”和“=($G$5-$B$5*B8-$C$5*C8-$D$5*D8)/$E$5”;在单元格F9中输入误差计算公式“=MAX(ABS(B8:E8-B9:E9))”,同时按“Ctrl+Shift+Enter”键确认;在单元格G9中输入迭代控制公式“=IF(F9>0.00001,"继续","停止")”。
第三步,确定数值解。选中单元格区域A9:G9,把鼠标指针移动到单元格G9的右下角,待其变为填充柄(“
”符号)时,按住鼠标左键向下拖动到单元格列G上出现“停止”为止,此时出现“停止”所对应的单元格区域B:E内的值满足所要求的精度的数值解。

图7.3 用高斯-赛德尔迭代法所得的数值解
(3)逐次超松弛迭代法
下面的所有制作过程以图7.4为参考。
第一步,输入系数矩阵、常数项和初始值。在单元格区域B2:E5和F2:F5中分别输入系数矩阵和常数项的元素,在单元格G2中输入超松弛系数。
第二步,输入迭代公式和迭代停止控制选项。在单元格A9中输入“A9+1”;在单元格B9、C9、D9和E9中用式(7.14)分别输入“=B8+($F$2-$B$2*B8-$C$2*C8-$D$2*D8-$E$2*E8)*$G$2/$B$2”“=C8+($F$3-$B$3*B9-$C$3*C8-$D$3*D8-$E$3*E8)*$G$2/$C$3”“=D8+($F$4-$B$4*B9-$C$4*C9-$D$4*D8-$E$4*E8)*$G$2/$D$4”和“=E8+($F$5-$B$5*B9-$C$5*C9-$D$5*D9-$E$5*E8)*$G$2/$E$5”;在单元格F9中输入计算误差公式“=MAX(ABS(B8:E8-B9:E9))”,同时按“Ctrl+Shift+Enter”键确认;在单元格G9中输入迭代控制公式“=IF(F9>0.00001,"继续","停止")”。
第三步,确定数值解。选中单元格区域A9:G9,把鼠标指针移动到单元格G9的右下角,待其变为填充柄(“
”符号)时,按住鼠标左键,向下拖动到在单元格列G上出现“停止”为止,此时单元格区域B:E内的值就是满足精度要求
<0.00001的数值解。

图7.4 用逐次超松弛迭代法所得的数值解
(4)收敛速度比较图的绘制
在直角坐标系内绘制3种迭代法的收敛速度比较图,横坐标为迭代次数,纵坐标为误差,如图7.5所示。

图7.5 3种迭代法的收敛速度比较