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

📄 mysor.m

📁 实现N阶线性方程组Ax=b逐次超松弛迭代法的通用程序
💻 M
字号:
function mySOR(A,b,w,e)
%结果写入并保存在mySOR_result.txt
    [n,n]=size(A); 
    x=zeros(1,n);
    x0=zeros(1,n);
    N=2000;  % 给定最大迭代次数
    
    k=1;
       while k<=N
        x(1)=(b(1)-A(1,2:n)*x0(2:n)')/A(1,1);
        for i=2:n
            s=0;
            for j=1:i-1
                s=s+A(i,j)*x(j)';
            end
            for j=i+1:n
                s=s+A(i,j)*x0(j)';
            end
            x(i)=(1-w)*x0(i)+w*(b(i)-s)/A(i,i);
        end
        
        p=wuqiongfanshu(x,x0);
        
        if p<=e
            txt = fopen('mySOR_result.txt', 'wt');
            fprintf(txt,'用SOR迭代求解线性方程组的输出结果:\n\n');
            fprintf(txt,'迭代次数: %d次\n\n',k);
            fprintf(txt,'迭代因子: %f\n\n',w);
            fprintf(txt,'x的值:\n\n');
            for i=1:n
                fprintf(txt, 'x(%d)=%f\n\n',i,x(i));
            end
            fclose(txt);
            break;
        end
        k=k+1;
        x0=x;
    end
    if k==N+1
      fid = fopen('mySOR_result.txt', 'wt');
      fprintf(txt,'\n用SOR迭代求解线性方程组的输出结果:\n\n');
      fprintf(txt,'迭代次数: %d次\n\n',k);
      fprintf(txt,'超过最大迭代次数,求解失败!');
      fclose(txt);
    end
    
    
function p=wuqiongfanshu(x,x0)
    y=x-x0;
    y=abs(y);
    p=max(y);
    
    

⌨️ 快捷键说明

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