⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jacobi_gs_sor.m

📁 数值分析, 同济大学教材<<现代数值数学和计算>>数值分析课程所有算法的matlab代码,所有例程均经过测试,私家珍藏
💻 M
字号:

%gauss迭代
%author:skysmiler
%create date:2007-12-1
%调用格式:gauss(a,b,x0,eps)
%a为系数矩阵,b为方程组常数向量,x0为初值,eps为精度。
function res=gauss(a,b,x0,eps) 
D=diag(diag(a));%求矩阵对角阵
L=-tril(a,-1);%求严格下三角矩阵
U=-triu(a,1);%求严格上三角矩阵
C=inv(D-L);
B=C*U;
if max(abs(eig(B)))>=1
    fprintf('B的谱半径>=1.');
    max(abs(eig(B)))
    return; 
end 
g=C*b;
res=B*x0+g;
n=1;
while norm(res-x0)>=eps 
    x0=res;
    res=B*x0+g;
    n=n+1;
end 
n

%jacobi迭代
%author:skysmiler
%create date:2007-12-1
%调用格式:jacobi(a,b,x0,eps)
%a为系数矩阵,b为方程组常数向量,x0为初值,eps为精度。
function res=jacobi(a,b,x0,eps) 
D=diag(diag(a));%求矩阵对角阵
D=inv(D);
L=-tril(a,-1);%求严格下三角矩阵
U=-triu(a,1);%求严格上三角矩阵
B=D*(L+U); 
if max(abs(eig(B)))>=1
    fprintf('B的谱半径>=1.');
    max(abs(eig(B)))
    return; 
end 
g=D*b; 
res=B*x0+g;
n=1;
while norm(res-x0)>=eps 
    x0=res; 
    res=B*x0+g; 
    n=n+1;
end  
n

%sor迭代
%author:skysmiler
%create date:2007-12-1
%调用格式:sor(a,b,x0,eps)
%a为系数矩阵,b为方程组常数向量,x0为初值,w为松弛因子,eps为精度。
function res=sor(a,b,x0,w,eps) 
D=diag(diag(a));%求矩阵对角阵
L=-tril(a,-1);%求严格下三角矩阵
U=-triu(a,1);%求严格上三角矩阵
C=inv(D-w.*L);
B=C*((1-w).*D+w.*U);
if max(abs(eig(B)))>=1
    fprintf('B的谱半径>=1.');
    max(abs(eig(B)))
    return; 
end 
g=w.*C*b;
res=B*x0+g;
n=1;
while norm(res-x0)>=eps 
    x0=res;
    res=B*x0+g;
    n=n+1;
end 
n


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -