精华内容
下载资源
问答
  • 2021-04-20 02:02:39

    %---高斯—赛德尔迭代法-----

    %---Gauss - Seidel iteration method

    clear;clc;

    % A=[10,-1,-2;-1,10,-2;-1,-1,5];

    % b=[7.2,8.3,4.2]';

    A=[10,-1,-2;-1,10,-2;-1,-1,5];

    b=[7.2,8.3,4.2]';

    N=length(b); %解向量的维数

    fprintf('库函数计算结果:');

    x=inv(A)*b %库函数计算结果

    x=zeros(N,1);%迭代初始值

    %-----(A=D-E-F)------

    D=diag(diag(A));

    E=-tril(A,-1);%下三角

    F=-triu(A,1);%上三角

    B=inv(D-E)*F;g=inv(D-E)*b;

    eps=0.0001;%相邻解的距离小于该数时,结束迭代

    %--------开始迭代-------

    for k=1:100 %最大迭代次数为100

    fprintf('第%d次迭代:',k);

    y=B*x+g;

    fprintf('\n与上次计算结果的距离(2范数):%f \n',norm(x-y)^2); if norm(x-y)

    break;

    end

    x=y

    end

    x

    更多相关内容
  • MATLAB实现高斯赛德尔迭代MATLAB实现高斯赛德尔迭代
  • 基于 matlab实现高斯-赛德尔潮流计算 电力系统稳态分析 课 程 姓 名 学 号 老 师 2012年 12月 3日 摘要 潮流计算就是要通过数值仿真的方法把电力系统的详细运行状态呈现给运 行和工作人员以便研究系统在给定条件下的...
  • 数值分析实验内容,用matlab写程序实现高斯-赛德尔(Gauss-Seidel)迭代法。 迭代法解线性方程组的基本思想是构造一串收敛到解的序列,即建立一种从已有近似解计算新的近似解的规则,有不同的计算规则得到不同的迭代...
  • 已知方程组Ax=b使用高斯赛德尔迭代法要求精度达到0.0001迭代初始向量[0 0 0 0 0 0 0 0 0]最大限制迭代50次---------------------------------------------------------分--割--线----------------------------------...

    已知方程组

    Ax=b

    81d3d76525427022cde621fb9506f947.png

    使用高斯赛德尔迭代法

    要求精度达到0.0001

    迭代初始向量[0 0 0 0 0 0 0 0 0]

    最大限制迭代50次

    ---------------------------------------------------------分--割--线---------------------------------------------------------

    function[x]=GS(A,b,xi,eps,N)

    %x为方程组的解A为系数矩阵b为常数项x0为迭代初值eps为误差N是限定的迭代次数

    %首先要将A分解为上下三角矩阵

    L=triu(A)-A;

    U=tril(A)-A;

    D=A+L+U;

    Bs=inv((D-L))*U;

    fs=inv((D-L))*b;

    %得到迭代格式Bs为迭代阵fs为常向量

    i=0;con=0;

    %其中con是用来记录计算结果是否收敛

    while i

    i=i+1;

    x=Bs*xi+fs;

    for

    j=1:length(b)

    il(i,j)=x(j);

    end

    if

    norm(x-xi)

    con=1;

    break

    end

    xi=x;

    end

    %以下是将迭代过程写入txt文档文件名为iteration.txt

    fid=fopen('iteration.txt','w');

    fprintf(fid,'iteration');

    for j=1:length(b)

    fprintf(fid,' x%d',j);

    end

    for j=1:i

    fprintf(fid,'\n%6d ',j);

    for

    k=1:length(b)

    fprintf(fid,'

    %10.6f',il(j,k));

    end

    end

    if con==1

    fprintf(fid,'\n计算结果收敛!');

    end

    if con==0

    fprintf(fid,'\n迭代步数过多可能不收敛!');

    end

    fclose(fid);

    x=xi

    ---------------------------------------------------------分--割--线---------------------------------------------------------

    运行结果:

    x =

    2.9999

    2.0000

    1.0000

    2.9999

    2.0000

    1.0000

    3.0001

    1.9999

    0.9997

    ---------------------------------------------------------分--割--线---------------------------------------------------------

    在iteration.txt可看到迭代过程

    iteration x1 x2 x3 x4 x5 x6 x7 x8 x9

    1 2.000000 3.090909 1.977273 3.625000 1.681818 0.767045 3.375000 1.772727 -1.750000

    2 5.017045 1.253099 0.084452 2.798295 2.052169 1.087810 3.596333 1.533152 -1.700695

    ......

    32 2.999845 2.000006 1.000027 2.999932 2.000028 1.000027 3.000146 1.999896 0.999577

    33 2.999884 2.000005 1.000020 2.999949 2.000021 1.000020 3.000110 1.999922 0.999683

    34 2.999913 2.000004 1.000015 2.999962 2.000016 1.000015 3.000082 1.999941 0.999762

    计算结果收敛!

    展开全文
  • 基于MATLAB实现高斯赛德尔迭代潮流计算基于matlab 实现高斯-赛德尔潮流计算课 程: 电力系统稳态分析姓 名:学 号:老 师:2012 年12 月3 日摘要潮流计算就是要通过数值仿真的方法把电力系统的详细运行状态呈现给...

    基于MATLAB实现高斯赛德尔迭代潮流计算

    基于matlab 实现高斯-赛德尔潮流计算

    课 程: 电力系统稳态分析

    姓 名:

    学 号:

    老 师:

    2012 年12 月3 日

    摘要

    潮流计算就是要通过数值仿真的方法把电力系统的详细运行状态呈现给运

    行和工作人员,以便研究系统在给定条件下的稳定运行特点。潮流计算时电力系

    统分析中最基本、最重要的计算,是电力系统运行、规划以及安全性、可靠性分

    析和优化的基础,也是各种电磁暂态和机电暂态分析的基础和出发点。

    20 世纪50 年代中期,随着电子计算机的发展,人们开始在计算机上用数学

    模拟的方法进行潮流计算。最初在计算机上实现的潮流计算方法是以导纳矩阵为

    基础的高斯迭代法(Gauss 法)。这种方法内存需求小,但收敛性差。牛顿-拉夫

    逊方法是解非线性代数方程组的一种基本方法,在潮流计算中也得到了应用。20

    世纪60 年代中后期,系数矩阵技术和编号优化技术的提出使牛顿-拉夫逊的解题

    规模和计算效率进一步提高,至今仍是潮流计算中的广泛采用的优秀算法。20

    世纪 70 年代中期,Stott 在大量计算实践的基础上提出了潮流计算的快速分解

    法,是潮流计算的速度大大提高,可以应用于在线,但是直至20 世纪80 年代末

    期才对快速分解法潮流的收敛性给出了比较满意的解释。

    由于潮流计算在电力系统中的特殊地位和作用,对其计算方法有如下较高的

    要求:

    (1)要有可靠的收敛性,对不同的系统及不同的运行条件都能收敛;

    (2)占用内存小、计算速度快;

    (3)调整和修改容易,使用灵活方便。

    报告利用matlab 软件,编程实现书中例题7.1 的潮流计算仿真,采用高斯-

    赛德尔迭代法。报告的内容主要包括:

    (1)高斯-赛德尔迭代法的原理及数学模型;

    (2)网络节点导纳矩阵的计算;

    (3)程序设计;

    (4)运行结果及分析。

    正文

    1、以高斯迭代法为基础的潮流计算方法

    1.1 高斯迭代法

    对于N 个节点的电力网络(地作为参考节点不包括在内),如果网络结构和

    元件参数已知,则网络方程可表示为

     

    Y V I (7-1)

     

    式中, 为N N 阶节点导纳矩阵; 为N 1维节点电压例矢量; 为N 1

    Y V I

    维节点注入电流矢量。如果不计网络元件的非线性,也不考虑移相变压器,则Y

    为对称矩阵。

    考察基于节点导纳矩阵的高斯迭代法。在网络方程(7-1)中,将平衡点 s

    排在最后,并将导纳矩阵写成分块的形式,取出前n 个方程有

      

    Y V Y V I (7-2)

    n n s s n

     

    平衡节点s 的电压 给定,n 个节点的注入电流矢量 已知,则有

    V

    展开全文
  • ○1高斯-赛德尔迭代法比雅克比的迭代次数少一半多,说明高斯-赛德尔迭代法优于雅克比迭代法,收敛速度更快,效率更高。但也不绝对,有时也会出现雅克比迭代法收敛而高斯-赛德尔迭代法不收敛的情况。 ○2SOR法的迭代...
  • 基于高斯-赛德尔迭代法及MATLAB软件的电路方程组求解方法.pdf
  • 高斯赛德尔迭代法求解方程组可执行C代码
  • 文章目录前言一、解线性方程组的方法二、解线性方程组的迭代法及其代码实现1. 迭代法的收敛性2....并按要求使用MATLAB对这三种迭代方法进行了仿真设计。通过仿真设计也对这三种迭代法有了一定的认识


    前言

    近期在上南方科技大学何炳生老师的数值分析课程时,学习了解线性方程组的三种迭代方法,即:雅克比(Jacobi)迭代;高斯-塞德尔(Gauss-Seidel)迭代以及超松弛(SOR)迭代。并按要求使用MATLAB对这三种迭代方法进行了仿真设计。通过仿真设计也对这三种迭代法有了一定的认识,希望通过此贴以通俗的形式分享自己对于这类方法的理解,文中一些不够准确或错误的表达,还望大家指证。


    一、解线性方程组的方法

    求解线性方程组在很多工程领域都是很重要的内容,无论是机器学习也好亦或是其他的工程优化也好。通常来说,对于一个线性方程组 A X = b AX=b AX=b,对其的数值解法一般有两类:直接法和迭代法。

    • 直接法实际就是通过使用各种线性代数知识在有限步算数运算,计算出该线性方程组精确解的办法(在计算过程中没有舍入误差的情况下),例如本科线性代数中的克拉默法则以及考研线性代数大题最常用的高斯消去法
    • 迭代法则是用某种极限过程去逐步逼近线性方程组的精确解的方法,也就是最后得到的是一个无限逼近与精确解的近似解,这个解只有在迭代无穷次下可以看做是精确解(一般有限步内得不到精确解)。

    对于熟悉直接法的人而言,可以发现这种方法的求解过程在计算机下编程实际是较为复杂的,例如:高斯消去法常规的求解过程就要求先构建增广矩阵,而后做初等行变换消元将系数矩阵化为一个上三角矩阵,然后再回代求解出解向量 X X X,并且从计算量而言也是较为复杂的,尽管之后变形出了例如三角分解(LU分解)这样的变形解法,但从编程的角度考虑依然是不直观的。
    迭代法,其基本思想是将线性方程组转化为便于迭代的等价方程组,然后基于初始 X X X值即 X = x i ( 0 ) = 0 ( i = 1 , 2 , 3 , . . . n ) X = x_{i}^{(0)} = 0 (i = 1,2,3,...n) X=xi(0)=0(i=1,2,3,...n),然后按照一定的计算规则,不断地修正得到新的解 X X X,最终得到满足精度要求的方程组的近似解。这显然是更加直观且易于编程设计的一种方法。而这其中就有三种最常见的迭代方式,即:

    1. 雅克比(Jacobi)迭代
    2. 高斯-塞德尔(Gauss-Seidel)迭代
    3. 超松弛(SOR)迭代

    二、解线性方程组的迭代法及其代码实现

    1. 迭代法的收敛性

    在直接引入三种迭代法及其MATLAB实现之前,需要先提到一点就是迭代法的收敛性,简单的理解其实就是迭代法并不适用于所有线性方程组,即对于一类方程组迭代时会收敛,近似解会不断逼近精确解,但是对于另外一类方程组则会发散,近似解不断远离精确解。而决定迭代法是否收敛,是否可用于该方程组,主要需要考虑的其实就是系数矩阵 A A A。这里直接给出使上述三种迭代法收敛的充分条件系数矩阵 A A A按行(或列)严格对角占优或满足弱对角占优不可约。

    (由于本人能力有限,具体的关于于迭代法收敛的充要条件,请参照清华大学出版,李庆阳、王能超、易大义老师编的《数值分析》第五版内容)

    2. 基本参数设置

    基本参数:矩阵阶数,计算误差,最大迭代次数。其中计算误差和最大迭代次数是迭代终止的判断要求,达到精度或者迭代到最大次数时停止迭代并输出结果。此处对计算误差进行说明,当计算精度满足 m a x 1 ⩽ i ⩽ n ∣ x i ( k + 1 ) − x i ( k ) ∣ < e p s \mathop{max}\limits_{1\leqslant i\leqslant n}\left | x_{i}^{(k+1)} - x_{i}^{(k)}\right | < eps 1inmaxxi(k+1)xi(k)<eps 时结束迭代。

    %==基本参数
    %矩阵阶数n
    n = 4;
    %计算误差
    eps = 0.000005;
    %最大迭代次数
    Nmax = 10000;
    

    矩阵设置:由于以下三种迭代法收敛的充分条件为系数矩阵A满足严格对角占优或按行(或列)满足若对角占优不可约,故在参数设置上设计了两种方法,为方便对比计算结果,之后采用的均是方法一所设置的矩阵
    方法一:手动输入系数矩阵 A A A及结果向量 b b b

     % 方法一 : 自行设置矩阵
     A = [-4,1,1,1;
     1,-4,1,1;
     1,1,-4,1;
     1,1,1,-4];
     B = [1,1,1,1];
    

    方法二:根据设置的矩阵阶数,自动生成强对角占优矩阵

     % 方法二:随机生成矩阵
     % 系数矩阵(默认生成一个对角占优矩阵)
     A = 100 * rand(n) - 50;
     for i=1:n
     A(i,i) = sum(abs(A(i,:)))+25 * rand(1); 
     end
     %结果向量
     B = 100 * rand([n 1]);
    

    3. 雅克比(Jacobi)迭代

    雅克比迭代实际是将系数矩阵A分解为了三个矩阵的组合,如下图
    在这里插入图片描述
    将其记做 A = D − L − U A = D-L-U A=DLU,则原方程组 A X = b AX=b AX=b 等价于 ( D − L − U ) X = b (D-L-U)X = b (DLU)X=b,即
    D X = ( L + U ) X + b DX = (L+U)X+b DX=(L+U)X+b
    因为 a i i ≠ 0 ( i = 1 , 2 , . . . n ) a_{ii}\neq 0 (i = 1,2,...n) aii=0(i=1,2,...n),故
    X = D − 1 ( L + U ) X + D − 1 b X = D^{-1}(L+U)X+D^{-1}b X=D1(L+U)X+D1b
    由此便可以得到一个迭代公式
    X ( k + 1 ) = D − 1 ( L + U ) X ( k ) + D − 1 b X^{(k+1)}=D^{-1}(L+U)X^{(k)}+D^{-1}b X(k+1)=D1(L+U)X(k)+D1b
    B = D − 1 ( L + U ) B = D^{-1}(L+U) B=D1(L+U) f = D − 1 b f = D^{-1}b f=D1b,即可得到雅克比迭代公式
    X ( k + 1 ) = B X ( k ) + f X^{(k+1)}=BX^{(k)}+f X(k+1)=BX(k)+f
    写成便于编程理解的形式即:
    X i ( k + 1 ) = 1 a i i ( b i − ∑ j = 1 j ≠ i n a i j X j ( k ) ) X_{i}^{(k+1)}=\frac{1}{a_{ii}}(b_{i} - \sum\limits_{\mathop{j=1}\limits_{j\neq i}}^{n}a_{ij}X_{j}^{(k)}) Xi(k+1)=aii1(bij=ij=1naijXj(k))
    代码:

    x = zeros(1,n);
    y = zeros(1,n);
    count = 1;
    
    while(1)
         for i = 1:n
            for j = 1:n
                %j≠k时
                if i ~= j
                    y(i) = y(i) + A(i,j)*x(j);
                end
            end
            y(i)=( B(i) - y(i))/A(i,i);
        end
        if max(abs(x-y)) < eps
            %c为将结果回带到方程组中求解的结果向量,以确认结果无误
            c = A * y';
            fprintf('迭代结束,次数%d,最终结果:\n',count);
            disp(y);
            disp(c);
            break;
        else
            fprintf('第%d次迭代结果:\n',count);
            disp(y)
        end
        if count == Nmax
            c = A * y';
            fprintf('超过最大迭代次数,迭代结束,最终结果:\n');
            disp(y);
            disp(c);
            break; 
        end
        count = count + 1;
        x = y;
        y(1: n) = 0;
    end
    

    仿真结果:
    雅克比(Jacobi)迭代结果

    4. 高斯-塞德尔(Gauss-Seidel)迭代

    在雅克比迭代中,我们可以看出,每一次迭代得到的新的解向量 X ( k + 1 ) X^{(k+1)} X(k+1)中的每一个元素均是由上一个解向量 X ( k ) X^{(k)} X(k)的所有元素计算得出,但实际上计算新的解向量 X ( k + 1 ) X^{(k+1)} X(k+1)的一个元素时,其前面的元素实际已经计算得出了,所以高斯-塞德尔(Gauss-Seidel)迭代的核心思想即:将本次迭代中前面已经计算出来的元素加入到迭代公式中,替代掉相对应的上一个解向量中的元素,从而实现加速收敛

    高斯-塞德尔(Gauss-Seidel)迭代迭代公式可以写作
    X i ( k + 1 ) = 1 a i i ( b i − ∑ j = 1 i − 1 a i j X j ( k + 1 ) − ∑ j = i + 1 n a i j X j ( k ) ) X_{i}^{(k+1)}=\frac{1}{a_{ii}}(b_{i} - \sum\limits_{j = 1}^{i - 1}a_{ij}X_{j}^{(k+1)} - \sum\limits_{\mathop{j=i+1}}^{n}a_{ij}X_{j}^{(k)}) Xi(k+1)=aii1(bij=1i1aijXj(k+1)j=i+1naijXj(k))
    代码:

    x = zeros(1,n);
    y = zeros(1,n);
    count = 1;
    %中间变量
    x1 = zeros(1,n);
    x2 = zeros(1,n);
    
    while(1)
        x1(1:n) = 0;
        x2(1:n) = 0;
         for i = 1:n
            for j = 1: i-1
                x1(i) =x1(i) + A(i,j) * y(j);
            end
            for k = i + 1 : n
               x2(i) = x2(i) + A(i,k) * x(k); 
            end
            y(i)=(B(i) - x1(i) - x2(i))/A(i,i);
        end
        if max(abs(x-y)) < eps
            c = A * y';
            fprintf('迭代结束,次数%d,最终结果:\n',count);
            disp(y);
            disp(c);
            break;
        else
            fprintf('第%d次迭代结果:\n',count);
            disp(y)
        end
        if count == Nmax
            c = A * y';
            fprintf('超过最大迭代次数,迭代结束,最终结果:\n');
            disp(y);
            disp(c);
            break; 
        end
        count = count + 1;
        x = y;
    end
    

    仿真结果:
    在这里插入图片描述

    5. 超松弛(SOR)迭代

    超松弛迭代法实际是在高斯-塞德尔迭代的基础上的一个加速方法,可以看做是带参数的高斯-塞德尔迭代,是求解大型稀疏矩阵方程组的有效方法,有着很广泛的应用,其核心思想为将高斯-塞德尔迭代求解出的新的解向量元素与上一个解向量中相对应的元素,做加权平均组合成一个全新的解向量的元素,这个全新的解向量即为超松弛迭代法的解,其中的权重被称为松弛因子

    其具体计算公式如下:

    1. 用高斯-塞德尔迭代公式定义一个辅助量
      X ~ i ( k + 1 ) = 1 a i i ( b i − ∑ j = 1 i − 1 a i j X j ( k + 1 ) − ∑ j = i + 1 n a i j X j ( k ) ) \widetilde{X}_{i}^{(k+1)}=\frac{1}{a_{ii}}(b_{i} - \sum\limits_{j = 1}^{i - 1}a_{ij}X_{j}^{(k+1)} - \sum\limits_{\mathop{j=i+1}}^{n}a_{ij}X_{j}^{(k)}) X i(k+1)=aii1(bij=1i1aijXj(k+1)j=i+1naijXj(k))
    2. X i ( k + 1 ) X_{i}^{(k+1)} Xi(k+1)取做 X ~ i ( k + 1 ) \widetilde{X}_{i}^{(k+1)} X i(k+1) X i ( k ) X_{i}^{(k)} Xi(k)的加权平均
      X i ( k + 1 ) = ( 1 − ω ) X i ( k ) + ω X ~ i ( k + 1 ) X_{i}^{(k+1)}=(1-\omega )X_{i}^{(k)} + \omega\widetilde{X}_{i}^{(k+1)} Xi(k+1)=(1ω)Xi(k)+ωX i(k+1)

      X i ( k + 1 ) = ( 1 − ω ) X i ( k ) + ω a i i ( b i − ∑ j = 1 i − 1 a i j X j ( k + 1 ) − ∑ j = i + 1 n a i j X j ( k ) ) X_{i}^{(k+1)}=(1-\omega )X_{i}^{(k)} + \frac{\omega}{a_{ii}}(b_{i} - \sum\limits_{j = 1}^{i - 1}a_{ij}X_{j}^{(k+1)} - \sum\limits_{\mathop{j=i+1}}^{n}a_{ij}X_{j}^{(k)}) Xi(k+1)=(1ω)Xi(k)+aiiω(bij=1i1aijXj(k+1)j=i+1naijXj(k))
      式中的系数 ω \omega ω被称为松弛因子,当 ω = 1 \omega = 1 ω=1时即为高斯-塞德尔迭代,为了保证迭代过程收敛,要求 0 < ω < 2 0 < \omega<2 0<ω<2
      0 < ω < 1 0 < \omega<1 0<ω<1时,是低松弛法
      1 < ω < 2 1 < \omega<2 1<ω<2时,是超松弛法

    代码:

    x = zeros(1,n);
    y = zeros(1,n);
    count = 1;
    %中间变量
    x1 = zeros(1,n);
    x2 = zeros(1,n);
    %松弛因子w
    w = 1.3;
    
    while(1)
        x1(1:n) = 0;
        x2(1:n) = 0;
         for i = 1:n
            for j = 1: i-1
                x1(i) =x1(i) + A(i,j) * y(j);
            end
            for k = i + 1 : n
               x2(i) = x2(i) + A(i,k) * x(k); 
            end
            temp = (B(i) - x1(i) - x2(i))/A(i,i);
            y(i) = (1 - w)* x(i) + w * temp;
        end
        if max(abs(x-y)) < eps
            c = A * y';
            fprintf('迭代结束,次数%d,最终结果:\n',count);
            disp(y);
            disp(c);
            break;
        else
            fprintf('第%d次迭代结果:\n',count);
            disp(y)
        end
        if count == Nmax
            c = A * y';
            fprintf('超过最大迭代次数,迭代结束,最终结果:\n');
            disp(y);
            disp(c);
            break; 
        end
        count = count + 1;
        x = y;
    end
    

    仿真结果:
    在这里插入图片描述

    总结

    从结果上来看,对于所设置的系数矩阵A,要满足小数点后6位的精度要求,雅克比迭代法迭代次数39次;高斯赛德尔迭代法迭代次数22次;松弛因子为1.3时的SOR超松弛迭代法迭代12次。可见SOR迭代法是三种迭代法中收敛最快的。
    除此之外,在测试SOR超松弛迭代法时还发现尽管其作为一种高斯赛德尔迭代法的加速,但有时,对于某些矩阵而言,松弛因子 w > 1 w>1 w>1反而会有反作用,此时使用 w = 1 w=1 w=1(即高斯赛德尔迭代法)效果会更好,个人认为关于 w w w的取值值得思考和探究。

    展开全文
  • clear; A=[1,0.4,0.4;0.4,1,0.8;0.4,0.8,1]; b=[1;2;3]; [m,n]=size(A); L=-tril(A,-1); U=-triu(A,1); D=diag(diag(A)); B=(D-L)\U; f=(D-L)\b; e=1e-3; x0=zeros(m,1); x1=B*x0+f; while(max(abs(x0-x1))&...disp(x0)
  • 本项目利用高斯赛德尔迭代法。通过已知某区域边界的电势分布,可以求出内部电势及电场分布。下面写出代码供大家学习。
  • 包含代码和文档 分别用雅克比迭代法和高斯-赛德尔迭代法求解方程组,精确到小数点后6位,分别就 给出相应的计算结果
  • MATLAB迭代法收敛判断

    2021-01-04 13:24:04
    包括雅可比迭代,高斯赛德尔迭代,松弛法迭代
  • 高斯消去法 function x = gauss(A,b) n = length(b); x = zeros(n,1); for i = 1:n-1 if A(i,i) == 0 fprintf("error"); return; end for k = (i+1:n) m = -A(k,k)/A(i,i); A(k,i:n) = A(k,i:n) + m * A(i,i...
  • matlab数值分析 线性方程组的迭代解法高斯-赛德尔迭代法 Function [x,iter]=gs(A,b,tol) D=diag(diag(A)); L=D-tril(A); U=D-triu(A); x=zeros(size(b)); %从x=[0;0…]T开始 for iter=1:500 x=(D-L)\(b+U*x); %...
  • 高斯赛德尔方法求解线性系统的函数。 考虑线性系统模型: A*x=b ,函数 sintax 是: [x,execution_time]=itergauss(A,b,n) [x] 是解向量A 是问题的线性矩阵b 是已知项向量n 是迭代逼近的次数execution_time是解决...
  • 高斯赛德尔迭代算法解线性方程组
  • 在学习数值分析时,会学到迭代法,最常用的就是雅克比迭代法,高斯赛德尔迭代法,这个ppt是由青岛大学丁洁玉老师及其学生们的课堂总结。并结合了matlab进行了相关计算。
  • 雅可比迭代法、高斯-赛德尔迭代matlab实现 一、雅可比迭代法 程序代码: function y = Jacobi(A,b,e,M) % input: A的对角线元素均不为0 e:精度 M:最大计算次数 % output: y:方程的解 n = length(A); x0 = zeros(n...
  • 文章目录前言1 直接法2 迭代法小结 前言 今天我们要说的就是数值微积分,赶紧看看他和高等数学中的微积分有什么区别吧。本文是科学计算与MATLAB语言专题六第2小节的学习笔记,如果大家有时间的话,可以去听听课,...
  • Matlab_用高斯赛德尔(Gaoss-Seidel)迭代法解线性方程组

    万次阅读 多人点赞 2019-05-29 20:02:11
    1.程序代码 function x=Gauss(A,b,x0,ep,N) %用途:用高斯迭代法解线性方程组Ax=b %A为系数矩阵,b为右端向量,x0为初始向量(默认零向量) %ep为精度(1e-6),N为最大迭代次数(默认500次),x返回近似解向量 n=...
  • 共回答了16个问题采纳率:100%你没把G-S方法迭代的流程图法出来,其实表4.2中的迭代数据是有问题的(少了一步).可以生成你所给图中数据的程序:A = [4 -1 1; 4 -8 1; -2 1 5];b = [7; -21; 15];x0 = zeros(3,1);eps=...
  • 高斯-赛德尔迭代

    2022-04-24 21:30:35
    高斯-赛德尔迭代
  • 为求解一个线性方程组,使用高斯赛德尔迭代法,采用欧几里得距离判定是否收敛。精度delta为1E-9,最大迭代次数为20。 输入形式 在屏幕上依次输入方阵阶数n,系数矩阵A,常数矩阵B和起始点P。 输出形式 输出实际迭代...
  • 包含牛顿迭代法、对分法、雅可比迭代、高斯赛德尔迭代的完整代码,牛顿迭代法、对分法用户可以自己输入多项式次数、精度,输出迭代计算过程中的数值和最终结果,支持对数、指数、幂函数输入
  • %---高斯赛德尔迭代法-----%---Gauss - Seidel iteration methodclear;clc;% A=[10,-1,-2;-1,10,-2;-1,-1,5];% b=[72,83,42]';A=[ 28,-3,0,0,0;-3,38,-10,0,-5;-10,0,25,-15,0;0,0,-15,45,0;0,-5,0,0,30];b=[10,0,...
  • 算法步骤 例题 程序代码 function x=GaussSeidel(A,b,x0,eps,N) n=length(b); if nargin<5 N=500; end if nargin<4 eps=1e-6; end if nargin<3 x0=zeros(n,1); end k=0;......
  • end x2 %%%%%%%%%%%%%%%%%%%%%%%%高斯赛德尔迭代法 while (t>0.00001) for i=1:n q=0; for j=1:i-1 q=q+a(i,j)*x2(j); end p=0; for j=i+1:n p=p+a(i,j)*x1(j); end x2(i)=(b(i)-q-p)/a(i,i); end t=max(abs(x2-x1)...

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 301
精华内容 120
关键字:

matlab高斯赛德尔迭代

matlab 订阅