数值分析8 - 算法加速 Aitken加速法、超松弛SOR加速法(matlab实现)

当系数矩阵A为正定对称阵时w取大于1小于2,算法阿苏有效否则无法加速,反而变慢。

代码:

close all; clear all; clc;
A = [2,  -1, 0;
     -1, 2, -1;
     -0, -1, 2];%方程系数矩阵
 
b = [1; 0; 1.8];    %方程右端常数项
D = diag(diag(A));  %对角线
L = -( tril(A) - diag(diag(A)) ); %下三角矩阵
U = -( triu(A) - diag(diag(A)) ); %上三角矩阵
B = inv(D-L)*U;
f = inv(D-L)*b;
C = norm(B,2) / (1 - norm(B,2)); 

%传统高斯塞勒尔迭代法
Out = 1;
i = 0;
X = [0;0;0];
X_New = [0;0;0];
while Out>=0.0001
    X_New = B*X + f;
    Out = C*norm(X_New-X,2);
    X = X_New;
    i = i+1;
end
X %输出线性方程组的解
i %输出循环次数


%当A为正定对称阵时,使用SOR超松弛方法做算法加速
Out = 1;
i = 0;
X = [0;0;0];
X_New = [0;0;0];
while Out>=0.0001
    X_New = -0.4*X+1.4*(B*X + f);
    Out = C*norm(X_New-X,2);
    X = X_New;
    i = i+1;
end
i %输出循环次数

结果,高斯塞勒尔迭代法 i = 17 , SOR加速 i = 16  。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值