实验二
解线性方程组的迭代法
【作业内容】:应用雅可比迭代和高斯-塞德尔迭代算法解线性方程组:
【作业要求】:
用Matlab语言编写雅可比(Jacobi)迭代法程序,如若使误差不超过0.0001,应该迭代多少次?按照所预测的迭代次数进行计算,观察输出结果(要求显示每次迭代的中间结果);
用Matlab语言编写高斯-塞德尔(Gauss-Seidel)迭代法程序,如若使误差不超过0.0001,应该迭代多少次?按照所预测的迭代次数进行计算。观察输出结果(要求显示每次迭代的中间结果)。
雅可比(Jacobi)迭代法
本题的系数矩阵为:
分解矩阵:$A = D - L -U$
$B = D^{-1}(L+U)$
利用matlab求解:
1 | A = [8,-3,2,1;4,11,-1,2;7,1,12,2;1,3,-5,15]; |
求得 $q = norm(B,2)=0.7462$
取 $x^{(0)}=\{0,0,0,0\}’$,计算得: $x^{(1)}=\{1,\frac{16}{11},\frac{11}{6},\frac{14}{15} \}’$
利用matlab求得:$norm((x^{(1)}-x^{0}),2) = 2.7107$
所以有:
如若使误差不超过0.0001,即:
解得:
所以应该迭代40次
matlab代码如下
1 | % Jacobi.m |
高斯-塞德尔(Gauss-Seidel)迭代法
本题的系数矩阵为:
分解矩阵:$A = D - L -U$
$G = (D-L)^{-1}*U$
利用matlab求解
1 | A = [8,-3,2,1;4,11,-1,2;7,1,12,2;1,3,-5,15]; |
算得norm(G,inf) = 0.75
取 $x^{(0)}=\{0,0,0,0\}’$,计算得: $x^{(1)}=\{1,\frac{12}{11},\frac{51}{44},\frac{683}{660} \}’$
利用matlab求得:$norm((x^{(1)}-x^{0}),2) = 2.1458$
所以有:
如若使误差不超过0.0001,即:
解得:
所以应该迭代40次
matlab代码如下
1 | % Gauss_Seidel.m |