精华内容
下载资源
问答
  • 高斯赛德尔迭代法matlab编程
    千次阅读
    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代码Monge-安培方程的数值方法 这项工作研究了解决Monge-Ampere方程的多重网格方法。 我们利用方程的单调性以另一种方式将其写出,然后使用完全逼近方案对其进行数值求解。 抽象的: Monge-...
  • 高斯塞德尔迭代法matlab代码的MATLAB 它是一个Matlab代码,它借助于高斯-德尔方法(它是一个迭代过程,并且随着n的增加而收敛到实际值)来找到具有n个变量的线性方程组的解。 在迭代过程中,应用GS方法之前的首要...
  • 包含代码和文档 分别用雅克比迭代法高斯-赛德尔迭代法求解方程组,精确到小数点后6位,分别就 给出相应的计算结果
  • 数值分析实验内容,用matlab写程序实现高斯-赛德尔(Gauss-Seidel)迭代法迭代法解线性方程组的基本思想是构造一串收敛到解的序列,即建立一种从已有近似解计算新的近似解的规则,有不同的计算规则得到不同的迭代...
  • MATLAB实现雅可比与高斯塞德尔迭代

    千次阅读 2020-10-15 23:18:44
    概述 用MATLAB编程实现,形成m函数文件。...%高斯塞德尔迭代法 G=-(diag(diag(A))+tril(A,-1))\triu(A,1); R=max(abs(eig(G))); if(R>=1) disp('Gauss-Seidel is not work'); else disp('Gauss-Sei

    概述

    用MATLAB编程实现,形成m函数文件。输入A,b矩阵,无返回值,解得x向量直接显示在命令行窗口,同时绘制出x向量的收敛曲线。
    A = [ 2 − 1 1 1 1 1 1 1 − 2 ] b = [ 1 1 1 ] A=\begin{bmatrix} 2&-1&1\\1&1&1\\1&1&-2\end{bmatrix} b=\begin{bmatrix} 1\\1\\1\end{bmatrix} A=211111112b=111

    高斯塞德尔方法

    代码

    function [] = gaussseidel(A,b)
    %高斯塞德尔迭代法
    G=-(diag(diag(A))+tril(A,-1))\triu(A,1);
    R=max(abs(eig(G)));
    if(R>=1)
         disp('Gauss-Seidel is not work');
    else
         disp('Gauss-Seidel is going well');
         disp('x vector:')
         d1=(diag(diag(A))+tril(A,-1))\b;
         x=zeros(size(b));
         for k=1:100
            x(:,k+1)=G*x(:,k)+d1;
            if(max(abs(x(:,k+1)-x(:,k)))<10^-4)
                break;
            end
         end
         disp(x(:,k+1));
         e=1:k+1;
         plot(e,x,'- o');
         xlabel('generations');
         ylabel('vector_x');
    end
    end
    

    结果

    A=[2 -1 1;1 1 1;1 1 -2];b=[1;1;1];
    gaussseidel(A,b);
    Gauss-Seidel is going well
    x vector:
    0.6667
    0.3333
    0
    在这里插入图片描述

    可见,高斯塞德尔方法收敛且成功求出结果。

    雅可比方法

    代码

    function [] = jacobi(A,b)
    %雅可比迭代法
    B=-(diag(diag(A)))\(tril(A,-1)+triu(A,1));
    R=max(abs(eig(B)));
    if(R>=1)
         disp('Jacobi is not work');
    else
         disp('Jacobi is going well');
         disp('x vector:')
         d1=diag(diag(A))\b;
         x=zeros(size(b));
         for k=1:100
            x(:,k+1)=B*x(:,k)+d1;
            if(max(abs(x(:,k+1)-x(:,k)))<10^-4)
                break;
            end
         end
         disp(x(:,k+1));
         e=1:k+1;
         plot(e,x,'- o');
         xlabel('generations');
         ylabel('vector_x');
    end
    end
    

    结果

    A=[2 -1 1;1 1 1;1 1 -2];b=[1;1;1];
    jacobi(A,b)
    Jacobi is not work
    可见,雅可比方法不收敛。

    代码思路

    首先判断收敛性

    判断迭代矩阵的谱半径的上界是否小于1。
    若大于1则结束程序。

    迭代求解

    高斯塞德尔迭代矩阵

    G = − D − 1 ( L + U ) G=-D^{-1}(L+U) G=D1(L+U)
    x ( k + 1 ) = G x ( k ) + d 1 x^{(k+1)}=Gx^{(k)}+d_{1} x(k+1)=Gx(k)+d1

    雅可比迭代矩阵

    B = − ( D + L ) − 1 U B=-(D+L)^{-1}U B=(D+L)1U
    x ( k + 1 ) = B x ( k ) + d 1 x^{(k+1)}=Bx^{(k)}+d_ {1} x(k+1)=Bx(k)+d1
    每次迭代后判断
    ∣ x k + 1 − x k ∣ < 1 0 − 4 |x^{k+1}-x^k|<10^{-4} xk+1xk<104
    结果为“真”跳出迭代循环,输出迭代末尾x向量。并绘出收敛曲线。

    展开全文
  • 计算线性方程组Ax=b,利用A=D-L-U,将线性方程组改写为x=Bx+f,用迭代的方法进行计算 以6阶希尔伯特矩阵为例,如果需计算其他矩阵,改一下A,要计算其他阶数,改一下n的值就好 clc clear format rat%也可以用format ...

    计算线性方程组Ax=b,利用A=D-L-U,将线性方程组改写为x=Bx+f,用迭代的方法进行计算
    以6阶希尔伯特矩阵为例,如果需计算其他矩阵,改一下A,要计算其他阶数,改一下n的值就好

    clc
    clear
    format rat%也可以用format long
    n=6
    %定义希尔伯特矩阵
    H=zeros(n,n);
    for i=1:n
        for j=1:n
            H(i,j)=1/(i+j-1);
        end
    end
    H
    %此处可定义不同的矩阵A,向量b
    A=H;
    b=A*ones(n,1);
    x0=zeros(n,1);%初始向量
    D=zeros(n,n);
    L=zeros(n,n);
    U=zeros(n,n);
    for i=1:n
        D(i,i)=A(i,i);%定义对角阵
    end
    D
    for i=2:n
        for j=1:i-1
            L(i,j)=-A(i,j);%定义单位下三角阵
        end
    end
    L
    for i=1:n
        for j=i+1:n
            U(i,j)=-A(i,j);
        end
    end
    U
    m=1000;%可根据情况改变m的值
    t1=0;
    t2=0;
    %在计算之前先判断两种迭代方法是否收敛
    if max(abs(eig(D^-1*(L+U))))<1
        disp('雅可比迭代法收敛,接下来使用此方法进行求解');
        x1=x0;
        for i=1:m
            x1=D^-1*(L+U)*x1+D^-1*b;
            if(abs(t1-x1)<10^-5)
                sprintf('在经过%d次迭代后,得到收敛解',i)
                break
            end
            t1=x1;
        end
        disp('雅可比迭代法得到的x:');
        disp(x1)
    else
        disp('雅可比迭代法不收敛,计算停止')
    end
    if max(abs(eig((D-L)^-1*U)))<1
        disp('高斯-塞德尔迭代法收敛,接下来使用此方法进行求解');
        x2=x0;
        for i=1:m
            x2=(D-L)^-1*U*x2+(D-L)^-1*b;
            if(abs(t2-x2)<10^-5)
                sprintf('在经过%d次迭代后,得到收敛解',i)
                break
            end
            t2=x2;
        end
        disp('高斯-塞德尔迭代法得到的x:');
        disp(x2)
    else
        disp('高斯-塞德尔迭代法不收敛,计算停止')
    end
    
    展开全文
  • MATLAB实现高斯赛德尔迭代法MATLAB实现高斯赛德尔迭代法
  • 雅可比迭代法和高斯-塞德尔迭代法 雅可比迭代法和高斯-塞德尔迭代法
  • 高斯牛顿继承法matlab代码数值分析 数值分析代码 HW_1(Python) 括弧法 二等分法 错误位置法 开放方式 简单的定点方法 牛顿-拉普森法 割线法 HW_2(Matlab) 高斯消除 天真高斯消除 迭代方法 高斯塞德尔法 Jacobi...
  • 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); %...

    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);       %此句换为x=(D)\(b+L*x+U*x);即为Jacobi迭代
        error=norm(b-A*x)/norm(b);
        if(error<tol)
            break;
        end
    end

    主函数(调用程序)

    A=[2,-1,0;-1,3,-1;0,-1,2];b=[1;8;-5];tol=1e-4;[x,iter]=gs(A,b,tol)

     

     

    展开全文
  • ○1高斯-赛德尔迭代法比雅克比的迭代次数少一半多,说明高斯-赛德尔迭代法优于雅克比迭代法,收敛速度更快,效率更高。但也不绝对,有时也会出现雅克比迭代法收敛而高斯-赛德尔迭代法不收敛的情况。 ○2SOR法的迭代...
  • 高斯迭代法matlab算例

    2021-04-18 12:02:28
    Matlab 线性方程组的迭代解法 Gauss-Seidel 迭代法 ...熟悉 Gauss-Seidel 迭代法,并编写 Matlab 程序 function [y,n]=gauss_seidel(A,b,x0,eps) %gauss seidel iterative ......matlab中应用的高斯-赛德尔迭代程序...
  • 判断迭代方法收敛性时计算高斯塞德尔迭代矩阵谱半径以判断。 代码与运行结果 function [] = sor(A,b,w) %基于高斯塞德尔的超松弛迭代求解向量 G=-(tril(A))\triu(A,1); R=max(abs(eig(G))); if(R>=
  • 算法步骤 例题 程序代码 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;......
  • 文章目录前言一、解线性方程组的方法二、解线性方程组的迭代法及其代码实现1. 迭代法的收敛性2. 基本参数设置3. 雅克比(Jacobi)迭代4. 高斯-塞德尔(Gauss-Seidel)迭代5. 超松弛(SOR)迭代总结 前言 近期在上...
  • MATLAB函数文件 function x=Agui_GS(A,b) %方程Ax=b,x0为初始向量 %e为精度,N为最大迭代次数 n=length(b); N=100; e=1e-4; x0=zeros(n,1); x=x0; x0=x+2*e; k=0; A1=tril(A); A2=inv(A1); while norm(x0-x,inf)>...
  • 题目一: 1.假设理想状态下的弹道轨迹满足抛物线方程y=a+bx+cx^2(注:真实状态下的轨迹并不是那样,一般发射后段的轨迹比较倾斜,这是因为后段受...高斯列主元消去: 1.原理: 算法: 3.matlab代码: A=[1,1,1...
  • 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=...
  • 已知方程组Ax=b使用高斯赛德尔迭代法要求精度达到0.0001迭代初始向量[0 0 0 0 0 0 0 0 0]最大限制迭代50次---------------------------------------------------------分--割--线----------------------------------...
  • Gauss-Seidel迭代法百度百科 function[x,k]=gaussseidel(A,b,x0,ep,Nmax) %Gauss-Seidel迭代 %x0为迭代初值 %ep为精度,默认1e-5 %Nmax为迭代次数上限以防止发散,默认为500 n=length(b); if nargin<5 %naigin...
  • %e为精度,N为最大迭代次数 n=length(b); N=100; e=1e-4; x0=zeros(n,1); x=x0; x0=x+2*e; k=0; A1=tril(A); A2=inv(A1); while norm(x0-x,inf)>e&&k<N k=k+1; x0=x; x=-A2*(A-A1)*x0+A2*b; ...
  • 解线性方程组的高斯-赛德尔 matlab 实现
  • 高斯-赛德尔迭代法

    2022-04-24 21:30:35
    高斯-赛德尔迭代法
  • 代码块1:雅可比迭代法: clear; clc; fprintf('雅可比迭代法解线性方程组:\n') n=input('请输入系数矩阵A的阶数:n='); A=input('请输入系数矩阵A:A='); b1=input('请输入结果向量b1:b1=');%b为行向量,计算时需要...
  • % 求线性方程组的Gauss-Seidel迭代法,调用格式为 % [x, k] = guaseidel(A,b,x0,eps,it_max) % 其中, A 为线性方程组的系数矩阵,b 为常数项,eps 为精度要求,默认为1e-5, % it_max 为最大迭代次数,默认为100 ...
  • MATLAB迭代法收敛判断

    2021-01-04 13:24:04
    包括雅可比迭代高斯赛德尔迭代,松弛法迭代
  • 1 Jacobi迭代法 例1 用jacobi迭代法求解代数线性代数方程组 ,保留四位有效数字(err1e-4) 其中A=[8 -1 1;2 10 -1;1 1 -5];b=[1 ;4; 3] 解编写jacobi迭代法的函数文件保存为jacobi.m function [x,k]=jacobi(A,b,x0,eps...
  • matlab高斯-塞德尔迭代法 代码是正确的,并且有运算例子
  • 高斯-赛戴尔(Gauss-Seidel)迭代法基于MATLAB的实现 前言 这个代码的实现,其实主要是因为所修课程当中老师要求,所以自己就写了这么一个代码,具体原理就不提及了,各处文献都写的很清楚了,如果想要从原理仔细...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 176
精华内容 70
关键字:

高斯塞德尔迭代法matlab

matlab 订阅