给出线性方程组 Hn*x = b,其中系数矩阵Hn为希尔伯特矩阵:
假设 x ∗ =(1, 1, . . . , 1)T,b = Hnx ∗。若取 n = 6,8, 10,分别用 Jacobi
迭代法及 SOR迭代(ω = 1, 1:25,1:5)求解,比较计算结果。
MATLAB源码如下,运行Demo_Jacobi_SOR.m文件,附件包含另外两个函数文件,分别为:Jacobi.m与SOR.m。
Demo_Jacobi_SOR.m
clear all
clc
n=[6 8 10];
for i=1:length(n)
H{i}=hilb(n(i));
size_H{i}=size(H{i},1);
x_true{i}=ones(1,size_H{i});
b{i}=x_true{i}*H{i};
x_ini{i}=zeros(1,size_H{i});
%accuracy=5*(10^-6);
accuracy=0.01;
end
%Jacobi
disp('Jacobi');
for i=1:length(n)
fprintf('The dimension is %d\n',n(i))
[x{i},k{i}]=Jacobi(H{i},b{i},x_ini{i},accuracy,x_true{i});
end
%SOR
disp('SOR');
w=1;
disp('SOR w=1');
for i=