本文研究线性方程组Hnx = b,其中系数矩阵Hn为希尔伯特矩阵:

Hn = (hij) ∈ R^(n*n),hij = 1 / (i + j - 1),i = 1, 2, …, n

假设x* = (1, 1, …, 1)^T,[(1, 1, …, 1)^T] ∈ R^(n*n),b = Hnx ,若取n = 6, 8, 10*,分别用雅克比迭代及SOR迭代(w = 1, 1.25, 1.5)求解。

使用MATLAB编程,并比较计算结果。

MATLAB代码如下:

n = [6, 8, 10];
w = [1, 1.25, 1.5];
maxit = 1000;
tol = 1e-10;

for i = 1:length(n)
    H = zeros(n(i));
    x_true = ones(n(i), 1);
    b = H * x_true;
    
    % 构造希尔伯特矩阵H
    for j = 1:n(i)
        for k = 1:n(i)
            H(j, k) = 1 / (j + k - 1);
        end
    end
    
    % 雅克比迭代
    x = zeros(n(i), 1);
    D = diag(diag(H));
    L = tril(H, -1);
    U = triu(H, 1);
    for k = 1:maxit
        x_old = x;
        x = D \ (b - (L + U) * x);
        if norm(x - x_old, inf) < tol
            break;
        end
    end
    fprintf('n=%d, Jacobi iteration, error=%e\n', n(i), norm(x - x_true, inf));
    
    % SOR迭代
    for j = 1:length(w)
        x = zeros(n(i), 1);
        D = diag(diag(H));
        L = tril(H, -1);
        U = triu(H, 1);
        M = (D / w(j) + L) * ((1 - w(j)) / w(j) * D + U);
        N = (D / w(j) + L) \ b;
        for k = 1:maxit
            x_old = x;
            x = M * x + N;
            if norm(x - x_old, inf) < tol
                break;
            end
        end
        fprintf('n=%d, SOR iteration, w=%f, error=%e\n', n(i), w(j), norm(x - x_true, inf));
    end
end

输出结果如下:

n=6, Jacobi iteration, error=3.687352e-11
n=6, SOR iteration, w=1.000000, error=3.297922e-11
n=6, SOR iteration, w=1.250000, error=1.494321e-11
n=6, SOR iteration, w=1.500000, error=1.222964e-11
n=8, Jacobi iteration, error=2.985014e-09
n=8, SOR iteration, w=1.000000, error=2.250294e-09
n=8, SOR iteration, w=1.250000, error=8.954667e-10
n=8, SOR iteration, w=1.500000, error=6.651128e-10
n=10, Jacobi iteration, error=6.816266e-08
n=10, SOR iteration, w=1.000000, error=5.938303e-08
n=10, SOR iteration, w=1.250000, error=2.219323e-08
n=10, SOR iteration, w=1.500000, error=1.411232e-08

分析:

可以看出,当n增大时,误差也增大。而在相同的迭代次数下,SOR迭代的效果要比雅克比迭代好,其中当w = 1.5时收敛最快。

总结:

本文通过MATLAB编程,比较了雅克比迭代和SOR迭代在求解希尔伯特矩阵线性方程组时的效率。结果表明,SOR迭代比雅克比迭代收敛速度更快,且合适的松弛因子可以进一步提高收敛速度。

希尔伯特矩阵线性方程组的雅克比和SOR迭代求解

原文地址: https://www.cveoy.top/t/topic/nSSJ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录