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

📄 sor.m

📁 SOR法
💻 M
字号:
%function [x,k,flag]=SOR(A,b,ep,w,max1)
%SOR迭代法
%A为方程组的系数矩阵
%b为方程组的右端项
%delta为精度要求,缺省值为1e-5
%max1为最大迭代次数,缺省值为100
%x为方程组的解
%k为迭代次数
%w为超松弛因子,缺省值为1
%flag为指标变量 flag='OK'表示迭代收敛到指标要求
%              flag='fail'表示迭代失败 

clc;
clear;
for i=1:14
    A(1+i,i)=-1;
    A(i,1+i)=-1;
    A(i,i)=4;
end
A(15,15)=4;

b=[3,2,2,2,2,2,2,2,2,2,2,2,2,2,3]';

delta=10^(-6);

X=zeros(15,1);

max1=40;

w=1.1;
%function X=cscdd (A,b,X,w,delta,max1)
D=diag(diag(A));
U=-triu(A,1);
L=-tril(A,-1); 
jX=A\b;
[n m]=size(A); 
iD=inv(D-w*L); 
B2=iD*(w*U+(1-w)*D); 
H=eig(B2);
mH=norm(H,inf);
for k=1:max1
    iD=inv(D-w*L); 
    B2=iD*(w*U+(1-w)*D); 
    f2= w*iD*b; 
    X1= B2*X+f2;
    X=X1;
    djwcX=norm(X1-jX,inf);
    xdwcX=djwcX/(norm(X,inf)+eps);
    if (djwcX<delta)|(xdwcX<delta)
%         disp('谱半径mH,A的分解矩阵D,U,L和方程组的精确解jX,迭代次数i如下: ')  
%         mH,D,U,L,jX=jX', i=k-1,
        k
        break;
%         if i> max1
%             disp('迭代次数已经超过最大迭代次数max1,谱半径mH,方程组的精确解jX,迭代次数i如下: ')
%             mH,D,U,L,jX=jX', i=k-1,
%         end
    end
end
if mH>=1
    disp('请注意:因为谱半径不小于1,所以超松弛迭代序列发散')
%    disp('谱半径mH,A的分解矩阵D,U,L和方程组的精确解jX,迭代次数i和迭代序列X如下:')
%    i=k-1,mH,D,U,L,jX,
else
	disp('因为谱半径小于1,所以超松弛迭代序列收敛 ')
end

⌨️ 快捷键说明

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