雅可比迭代法、高斯-赛德尔迭代法、超松弛迭代法 matlab 实现

雅可比迭代法、高斯-赛德尔迭代法、超松弛迭代法 matlab 实现

一、雅可比迭代法

  程序代码:

function y = Jacobi(A,b,e,M)
% input: A 的对角线元素均不为 0	e: 精度	M: 最大计算次数
% output: y: 方程的解n = length(A);
x0 = zeros(n,1);
y = zeros(n,1);[l,w] = size(A);
if (l ~= w) && (l ~= length(b))disp('输入错误');
end% ---------------------------
% 矩阵形式
% D = diag(diag(A),0);
% U = triu(-A,1); %上三角矩阵
% L = tril(-A,-1); %下三角矩阵
% B = inv(D)*(L+U);
% f = inv(D)*b;
% for i = 1:M
%     y = B*x0+f;
%     d = abs(x0-y);
%     if(max(d)

  矩阵形式和多项式形式分别是算法的两种实现,且两种方法等价,选择一种运行即可!
  测试:

在这里插入图片描述

在这里插入图片描述

二、高斯-塞德尔迭代法

  程序代码:

function y = G_S(A,b,e,M)
% input: A 的对角线元素均不为 0	e: 精度	M: 最大计算次数
% output: y: 方程的解n = length(A);
x0 = zeros(n,1);
y = zeros(n,1);[l,w] = size(A);
if (l ~= w) && (l ~= length(b))disp('输入错误');
end% ---------------------------
% 矩阵形式
% D = diag(diag(A),0);
% U = triu(-A,1); %上三角矩阵
% L = tril(-A,-1); %下三角矩阵
% B = inv(D-L)*U;
% f = inv(D-L)*b;
% for i = 1:M
%     y = B*x0+f;
%     d = abs(x0-y);
%     if(max(d)

  矩阵形式和多项式形式分别是算法的两种实现,且两种方法等价,选择一种运行即可!
  测试:

在这里插入图片描述

三、超松弛迭代法

  程序代码:

function y = SOR(A,b,r,e,M)
% input: A 的对角线元素均不为 0	r: 松弛因子	e: 精度	M: 最大计算次数
% output: y: 方程的解n = length(A);
x0 = zeros(n,1);
y = zeros(n,1);
y_bar = zeros(n,1);[l,w] = size(A);
if (l ~= w) && (l ~= length(b))disp('输入错误');
end% ---------------------------
% 矩阵形式
% D = diag(diag(A),0);
% U = triu(-A,1); %上三角矩阵
% L = tril(-A,-1); %下三角矩阵
% B = inv(D-r*L)*((1-r)*D+r*U);
% f = r*inv(D-L)*b;
% for i = 1:M
%     y = B*x0+f;
%     d = abs(x0-y);
%     if(max(d)

  矩阵形式和多项式形式分别是算法的两种实现,且两种方法等价,选择一种运行即可!
  测试:

在这里插入图片描述
在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章