zoukankan      html  css  js  c++  java
  • Matlab-8:松弛迭代法(SOR)

     1 function [x,n,flag]=sor(A,b,eps,M,max1)
     2 %sor函数为用松弛迭代法求解线性方程组
     3 %A为线性方程组的系数矩阵
     4 %b为线性方程组的常数向量
     5 %eps为精度要求
     6 %M为超弛因子
     7 %max1为最大迭代次数
     8 %u为线性方程组的解
     9 %n为迭代次数
    10 %flag为指标变量,flag='OK!'表示迭代收敛达到指标要求
    11 %flag='fail!'表示迭代失败
    12 if nargin<5
    13     max1=10000;
    14 end
    15 if nargin<4
    16     M=1;
    17 end
    18 if nargin<3
    19     eps=1e-11;
    20 end
    21 k=length(A);
    22 n=0;
    23 x=zeros(k,1);
    24 y=zeros(k,1);
    25 flag='OK!';
    26 while 1
    27     y=x;
    28     for i=1:k
    29         z=b(i);
    30         for j=1:k
    31             if j~=i
    32                 z=z-A(i,j)*x(j);
    33             end
    34         end
    35         if abs(A(i,i))<1e-10 | n==max1
    36             flag='fail!';
    37             return;
    38         end
    39         z=z/A(i,i);
    40         x(i)=(1-M)*x(i)+M*z;
    41     end
    42     if norm(y-x,inf)<eps
    43         break;
    44     end
    45     n=n+1;
    46 end

    算法推导: 

  • 相关阅读:
    欧拉函数
    uva10870 矩阵
    poj3233 矩阵等比数列求和 二分
    hdu4990 矩阵
    hdu4549 矩阵快速幂 + 欧拉降幂
    补矩阵的题目
    CodeForces 450B 矩阵
    hoj2662 状态压缩dp
    poj3254 状态压缩dp
    zoj2770 差分约束系统
  • 原文地址:https://www.cnblogs.com/xtu-hudongdong/p/6506988.html
Copyright © 2011-2022 走看看