精华内容
下载资源
问答
  • 使用MATLAB的solve函数求解线性方程组

    万次阅读 2020-03-31 16:29:18
    使用MATLAB的solve函数求解线性方程组 示例 定义变量 定义方程组 使用solve函数进行求解 输出求解结果 syms a b p k e w; % 定义变量 eqns = [b*p - e*k - a == 0, e + k*p + k*w == 0, 2*b*p == a + e*k + b*w]; ...

    使用MATLAB的solve函数求解线性方程组

    示例

    • 定义变量
    • 定义方程组
    • 使用solve函数进行求解
    • 输出求解结果
    syms a b p k e w;  % 定义变量
    eqns = [b*p - e*k - a == 0, e + k*p + k*w == 0, 2*b*p == a + e*k + b*w]; % 定义规则
    res = solve(eqns,w,e,p);  % 求解
    res.w
    res.e
    res.p
    

    句式

    S = solve(eqn,var)
    S = solve(eqn,var,Name,Value)
    Y = solve(eqns,vars)
    Y = solve(eqns,vars,Name,Value)
    [y1,…,yN] = solve(eqns,vars)
    [y1,…,yN] = solve(eqns,vars,Name,Value)
    [y1,…,yN,parameters,conditions] = solve(eqns,vars,‘ReturnConditions’,true)

    参考

    https://ww2.mathworks.cn/help/symbolic/solve.html

    展开全文
  • 同时,实现了一元二次模糊方程的求解,利用区间[-1,1]上的单调函数将一元二次模糊方程的求解问题转化为二元二次参数方程组求解问题,给出了二次模糊方程解存在的充要条件,并辅以数值例子。 最后,利用结构元技术提出...
  • GS迭代法,求解线性方程组 matlab代码
  • 结合一个题目演示了如何自编代码实现迭代法求解线性方程组,提供了雅克比迭代和JGS迭代两种方法,各函数文件独立,便于移植,题目附有解答,题目来自西工大数值计算方法作业。采用MATLAB实现。
  • Broyden方法求解线性方程组Matlab实现,详细介绍了求解线性方程组
  • LU,求解线性方程组 matlab代码
  • MATLAB求解线性方程组的八种方法

    千次阅读 多人点赞 2021-02-01 13:14:22
    MATLAB求解线性方程组的八种方法 求解线性方程分为两种方法–直接法和迭代法 常见的方法一共有8种 直接法 Gauss消去法 Cholesky分解法 迭代法 Jacobi迭代法 Gauss-Seidel迭代法 超松弛迭代法 共轭梯度法 Bicg迭代法 ...

    MATLAB求解线性方程组的八种方法

    求解线性方程分为两种方法–直接法和迭代法
    常见的方法一共有8种
    直接法
    Gauss消去法
    Cholesky分解法
    迭代法
    Jacobi迭代法
    Gauss-Seidel迭代法
    超松弛迭代法
    共轭梯度法
    Bicg迭代法
    Bicgstab迭代法

    这里我就从计算代码的角度来讲解,在下面也会按照上面这个顺序给出代码,遇到方程组直接带入已知条件就可以得到答案。

    适用条件
    Gauss消去法 :求解中小规模线性方程(阶数不过1000),一般用于求系数矩阵稠密而且没有任何特殊结构的线性方程组

    Cholesky分解法:对称正定方程优先使用,系数矩阵A是n阶对称正定矩阵

    Jacobi迭代法非奇异线性方程组,分量的计算顺序没有关系

    Gauss-Seidel迭代法与Jacobi迭代法相似,但计算的分量不能改变

    超松弛迭代法Jacobi迭代法和Gauss-Seidel迭代法的加速版,由Gauss-Seidel迭代法改进而来,速度较快

    共轭梯度法需要确定松弛参数w,只有系数矩阵具有较好的性质时才可以找到最佳松弛因子。但好处是不用确定任何参数,他是对称正定线性方程组的方法也是求解大型稀疏线性方程组最热门的方法

    Bicg迭代法本质是用双共轭梯度求解线性方程组的方法,对求解的方程没有正定性要求

    Bicgstab迭代法本质是用稳定双共轭梯度求解线性方程组的方法,对求解的方程没有正定性要求

    Gauss消去法
    第一、二个函数ltri、utri是一定要掌握的,后面的几乎每个函数都要用到
    ltri
    简单来说,当Ly=b
    b,L(非奇异下三角矩阵)已知求y

    function y = ltri(L,b)
    n=size(b,1);
    y=zeros(n,1);
    for j = 1:n-1
        y(j) = b(j)/L(j,j);
        b(j+1:n) = b(j+1:n) - y(j) * L(j+1:n,j);
    end
    y(n) = b(n)/L(n,n);
    
    

    utri
    简单来说,当Ux=y
    y,U(非奇异上三角矩阵)已知求x

    function x = utri(U,y)
    n=size(y,1);
    x=zeros(n,1);
    for j = n:-1:2
        x(j) = y(j)/U(j,j);
        y(1:j-1) = y(1:j-1) - x(j) * U(1:j-1,j);
    end
    x(1) = y(1)/U(1,1);
    

    gauss算法,计算时粘贴过去就好

    function [L,U] = gauss(A)
    n=size(A,1);
    for k = 1:n-1
        A(k+1:n,k) = A(k+1:n,k) / A(k,k);
        A(k+1:n,k+1:n) = A(k+1:n,k+1:n) - A(k+1:n,k)* A(k,k+1:n);
    end
    L = tril(A,-1) + eye(n);
    U = triu(A);
    
    

    使用例子
    已经知道一个线性方程组,这里我就不写出数学形式了,A是系数矩阵,直接把上面写好的函数复制过来在运算就可以。主要是把这两个矩阵写进去。
    A = [1 -1 1 -3;0 -1 -1 1;2 -2 -4 6;1 -2 -4 1];
    b = [1;0;-1;-1];

    A = [1 -1 1 -3;0 -1 -1 1;2 -2 -4 6;1 -2 -4 1];
    b = [1;0;-1;-1];
    [L,U] = gauss(A);
    y = ltri(L,b);
    x = utri(U,y)
    

    Cholesky分解法
    这里是要用到ltri和utri,直接把上面的粘贴过来就好
    这里的算法比较简单,用L = chol(A,‘lower’);这里A是系数矩阵

    使用例子
    用Cholesky分解法求接对称正定方程Ax=b,b随机选取,系数矩阵A是100阶的矩阵
    n = 100;
    A = 10 * eye(n) + diag(ones(n-1,1),-1) + diag(ones(n-1,1),1);

    n = 100;
    A = 10 * eye(n) + diag(ones(n-1,1),-1) + diag(ones(n-1,1),1);
    b = rand(n,1);
    L = chol(A,'lower');
    y = ltri(L,b);
    x = utri(L',y)
    

    Jacobi迭代法
    这个就是Jacobi迭代法的算法,用时复制。这里一共要输入四个条件,系数矩阵A,矩阵b,x0=zeros(列数,1),tol=1.0e-6

    function x = jacobi(A,b,x0,tol)
    D = diag(diag(A));
    L = -tril(A,-1);
    U = -triu(A,1);
    B = D \ (L + U);
    g = D \ b;
    x = B * x0 + g;
    n = 1;
    while norm(x - x0) > tol
        x0 = x;
        x= B * x0 + g;
        n = n + 1;
    end
    x,n
    

    使用例子
    用Jacobi迭代法求解下列方程
    A = [10 -1 0;-1 10 -2;0 -2 10];
    b = [9;7;6];

    A = [10 -1 0;-1 10 -2;0 -2 10];
    b = [9;7;6];
    x = zeros(3,1);
    tol = 1.0e-6;
    x = jacobi(A,b,x,tol);
    

    Gauss-Seidel迭代法
    算法函数,输入四个条件,和上面相同

    function x = seidel(A,b,x0,tol)
    D=diag(diag(A));
    L = -tril(A,-1);
    U = -triu(A,1);
    B = (D - L) \ U;
    g = (D - L) \ b;
    x = B * x0 +g;
    n=1;
    while norm(x - x0) > tol
        x0 = x;
        x= B * x0 + g;
        n = n + 1;
    end
    x,n
    

    用这个方法解上面Jacobi迭代法的例子

    A = [10 -1 0;-1 10 -2;0 -2 10];
    b = [9;7;6];
    x = zeros(3,1);
    tol = 1.0e-6;
    x = seidel(A,b,x,tol);
    

    超松弛迭代法
    算法函数,这里需要输入五个条件:系数矩阵A,矩阵b,x0=zeros(列数,1),w(松弛因子一到二之间)=1.025,tol=1.0e-6

    function x = sor(A,b,x0,w,tol)
    D=diag(diag(A));
    L = -tril(A,-1);
    U = -triu(A,1);
    B = (D - w * L) \ ((1 - w) * D + w * U);
    g = (D - w * L) \ b * w;
    x = B * x0 +g;
    n=1;
    while norm(x - x0) >= tol
        x0 = x;
        x= B * x0 + g;
        n = n + 1;
    end
    x,n
    

    使用例子
    求这个方程组
    A = [10 -1 0;-1 10 -2;0 -2 10];
    b = [9;7;6];

    A = [10 -1 0;-1 10 -2;0 -2 10];
    b = [9;7;6];
    x = zeros(3,1);
    tol = 1.0e-6;
    w = 1.025;
    x = sor(A,b,x,w,tol);
    

    共轭梯度法

    A = [16 4 8 4;4 10 8 4;8 8 12 10;4 4 10 12];
    b = [32;26;38;30];
    tol = 1.0e-6;
    maxit = 1000;
    x = pcg(A,b,tol,maxit)
    

    Bicg迭代法
    这个比较简单,不需要额外写函数,直接用x = bicg(A,b,tol,maxit)maxit取1000

    使用例子

    n = 100;
    A = 10 * eye(n) + diag(ones(n-1,1),-1) + diag(ones(n-1,1),1);
    b = rand(n,1);
    tol = 1.0e-6;
    x = bicg(A,b,tol,1000)
    

    Bicgstab迭代法
    和上面一样的输入条件
    x = bicgstab(A,b,tol,1000)

    n = 100;
    A = 10 * eye(n) + diag(ones(n-1,1),-1) + diag(ones(n-1,1),1);
    b = rand(n,1);
    tol = 1.0e-6;
    x = bicgstab(A,b,tol,1000)
    
    展开全文
  • 使用牛顿方法解非线性方程组 雅可比 迭代 jacobi matlab代码
  • matlab求解线性方程组可应用克拉默法则(Cramer's Rule)即通过det()函数计算各个矩阵的行列式来求,也可以用高斯消元法来求解. matlab中的rref()函数可以将矩阵化成行最简形式,用法如下: 假如有一线性方程组为: 16 ...

    摘自:http://www.maybe520.net/blog/987/ matlab中怎么求解线性方程组呢? matlab中求解线性方程组可应用克拉默法则(Cramer's Rule)即通过det()函数计算各个矩阵的行列式来求,也可以用高斯消元法来求解. matlab中的rref()函数可以将矩阵化成行最简形式,用法如下: 假如有一线性方程组为: 16 x1 + 2 x2 + 3 x3 = 13 5 x1 + 11 x2 + 10 x3 = 8 9 x1 + 7 x2 + 6 x3 = 12…

    提高fwrite和fprintf函数的I/O性能 http://www.matlabsky.com/thread-34861-1-1.html     今天我们将讨论下著名的fwrite(fprintf)函数,它们是用来进行二进制(文本)文件写入操作的.由于fwrite函数是底层I/O函数,且使用十分频繁,很多用户会质疑,它怎么可能还有性能提升的空间,要是有MathWorks早就更新了.   Flushing 和 Buffer   不像C/C++语言,在MATLAB中调用fwirte(fprin…

    一.训练函数 1.traingd Name:Gradient descent backpropagation (梯度下降反向传播算法 ) Description:triangd is a network training function that updates weight and bias values  according to gradient descent. 2.traingda Name:Gradient descent  with adaptive learning rate…

    1. m文件与m函数的区别 所谓 MATLAB 程序,大致分为两类: M 脚本文件 (M-Script) 和 M 函数 (M-function), 它们均是普通的 ASCII 码构成的文件. M 脚本文件中包含一族由 MATLAB 语言所支持的语句,它类似于 DOS 下的批处理文件,它的执行方式很简单,用户只需在 MATLAB 的提示符 >> 下键入该 M 文件的文件名,这样 MATLAB 就会自动执行该 M 文件中的各条语句,并将结果直接返回到 MATLAB 的工作空间. M 函数格式是 M…

    用load函数导入mat文件大家都会.可是今天我拿到一个数据,文件后缀名竟然是'.data'.该怎么读呢? 我仅仅好用matlab界面Workspace区域的"import data"button手工导入该文件.恩,还好,竟然成功了.顺便提一下,这个"import data"button功能非常强大,连excel文件都能导入. 可是假设在脚本里怎样导入这样的非mat文件呢? 这时候就轮到"importdata"函数登场啦! -----------…

    1.size()使用方法: size(a)表示矩阵每一个维度的长度 比方size([1 2 3;4 5 6]) 等于[2 3]: 表示他有2行3列. size([1 2 3]) 等于[1 3]: 表示他有1行3列: 另外size(a,n)表示矩阵a在第n个维度下的长度. 比方size([1 2 3;4 5 6],1) 等于2,表示有2行 size([1 2 3;4 5 6],2) 等于3,表示有3列 2.length()使用方法: length(a)表示矩阵a的最大的长度,即max(size(a…

    Linkage: Agglomerative hierarchical cluster tree(凝聚成层次聚类树) 语法: 解释: Z=linkage(x),返回Z,是一个X矩阵中行的分层聚类树(用最短距离算法生成具有层次结构的聚类树).输入的X为pdist函数输出的距离向量矩阵(pdist函数参考上篇文章) Z=linkage(x,method),使用指定的method创建树 Z=linkage(x,method,metric)利用度量来计算 Z=linkage(x,method,pdist…

    参考网址:http://blog.sina.com.cn/s/blog_5efed5800100exmj.html Cell函数 如果p为一个数,那么h(1)=p,是没有问题的. 如果p为一个向量,那么h(1,:)=p是没有问题的. 如果p是一个矩阵的话,上面的两种赋值方法都是会有错误的. 那么要如何处理呢? 这时就用到了cell数据类型了.cell的每个单元都可以存储任何数据,比如传递函数等.当然,存储矩阵更是没有问题的了.但是用cell数据类型之前,要先初始化. a=cell(n,m) 那么…

    转载: https://www.ilovematlab.cn/thread-91895-1-1.html Matlab取整函数有: fix, floor, ceil, round.具体应用方法如下: fix朝零方向取整,如fix(-1.3)=-1; fix(1.3)=1;    floor,顾名思义,就是地板,所以是取比它小的整数,即朝负无穷方向取整,如floor(-1.3)=-2; floor(1.3)=1;floor(-1.8)=-2,floor(1.8)=1    ceil,与floor相…

    1.产生从imin~imax的m*n矩阵 randi([imin,imax],m,n); 2.产生1~n的无重复随机整数 randperm(n);…

    奇异值分解的理论参见下面的链接 http://www.cnblogs.com/pinard/p/6251584.html https://blog.csdn.net/shenziheng1/article/details/52916278 https://blog.csdn.net/billbliss/article/details/78579308 https://blog.csdn.net/zhongkejingwang/article/details/43053513 https://bl…

    在Matlab中,这几个函数区分如下: (以下默认S1和S2是字符串,同样也适用于cell细胞类型数据,也就是循环对cell中每个元素分别判断即可.) findstr(S1,S2):寻找是否有S1和S2之间的匹配,真返回1,假返回0,双向: 例:          s = 'How much wood would a woodchuck chuck?';                 findstr(s,'a')    returns  21                 findstr('…

    mcc 的作用是将 .m文件编译为 c/c++动态链接库文件,使你可以在 c/c++程序中使用 matlab的一些函数功能.mcc 也可以将.m文件编译为exe可执行文件. mex 的作用是将 c/cpp文件编译为 .m  文件可以调用的库文件,在Windows操作系统里通常是以mexw32或mexw64为扩展名,让你可以使用 c/c++来扩展 matlab,即在matlab中调用C/C++编写函数的功能,达到增加新的功能或者加速原有程序的功能 mbuild 的作用是将 matlab视为一个 c…

    http://blog.163.com/tawney_daylily/blog/static/13614643620111117853933/ 在编写一个程序时,经常需要从外部读入数据,或者将程序运行的结果保存为文件.MATLAB使用多种格式打开和保存数据.本章将要介绍 MATLAB中文件的读写和数据的导入导出. 13.1 数据基本操作 本节介绍基本的数据操作,包括工作区的保存.导入和文件打开.13.1.1 文件的存储 MATLAB支持工作区的保存.用户可以将工作区或工作区中的变量以文件的形式保…

    展开全文
  • 求解线性方程组的方法Matlab程序

    千次阅读 2021-01-05 00:19:59
    求解线性方程组的方法 目录 一,线性方程组的直接解法 1.高斯消元法 (1).原理和算法 (2).Matlab函数 (3).运行实例 2.用主元法进行高斯消元 (1).原理和算法 (2).Matlab函数 (3).运行实例 3.用按比例主元法进行...

    求解线性方程组的方法

    目录

    一,线性方程组的直接解法

    1.高斯消元法
    (1).原理和算法
    (2).Matlab函数
    (3).运行实例

    2.用主元法进行高斯消元
    (1).原理和算法
    (2).Matlab函数
    (3).运行实例

    3.用按比例主元法进行高斯消元
    (1).原理和算法
    (2).Matlab函数
    (3).运行实例

    二,用迭代法求解线性方程组

    1.雅可比迭代法
    (1).原理和算法
    (2).Matlab函数
    (3).运行实例

    2.高斯塞达尔迭代法
    (1).原理和算法
    (2).Matlab函数
    (3).运行实例

    一,线性方程组的直接解法
    1.高斯消元法

    (1).原理和算法
    在这里插入图片描述
    在这里插入图片描述

    (2).Matlab函数

    function x=Gauss(A,b)
    n=size(A,1);
    x=zeros(n,1);
    for i=1:n-1 
        for t=i+1:n%用第i行的从第i+1行开始消去,一直消到最后一行
           m(t,i)=-A(t,i)/A(i,i); %后一行首位/前一行首位得到消元乘数
           for j=i:n %第i行从第i个开始乘乘数,消去第i+1行第i个元素
               A(t,j)=A(t,j)+m(t,i)*A(i,j);
           end
           b(t)=b(t)+m(t,i)*b(i); %该行b也随之变化
        end
    end%完成所有行消元,因为最后一行最后一列元素不用消,所以循环到n-1
    for i=1:n
        y(i)=b(i);
    end 
    for i=n:-1:1
        t=n;
        while i<t
              y(i)=y(i)-A(i,t)*x(t);
              t=t-1;
        end
        x(i)=y(i)/A(i,i);
    end%回代求解
    
    

    (3).运行实例
    求解线性方程组:
    x1+ x2 + x3+x4=4
    2x1+ x2 + x3+x4=5
    3x1+2x2+x3 +x4=7
    4x1+3x2+2x3+x4=10
    在这里插入图片描述

    2.用主元法进行高斯消元
    (1).原理和算法
    在这里插入图片描述
    在这里插入图片描述

    (2).Matlab函数

    function x=Gauss(A,b)
    n=size(A,1);
    x=zeros(n,1);
    for i=1:n-1 
       q=i;%q用来存储列元素最大的列数,假设第i行最大
        for p=i:n%第i列内从第i行开始寻找最大元素
            if A(q,i)<A(p,i)
               q=p; 
            end
        end
        A([i q],:)=A([q i],:); %元素最大行与第i行交换
        temp=b(i);b(i)=b(q);b(q)=temp; %该两行b也随之交换
    for t=i+1:n %用第i行的从第i+1行开始消去,一直消到最后一行
           m(t,i)=-A(t,i)/A(i,i); %后一行首位/前一行首位得到消元乘数
           for j=i:n %第i行从第i个开始乘乘数,消去第i+1行第i个元素
               A(t,j)=A(t,j)+m(t,i)*A(i,j);
           end
           b(t)=b(t)+m(t,i)*b(i); %该行b也随之变化
        end
    end%完成所有行消元,因为最后一行最后一列元素不用消,所以循环到n-1
    for i=1:n
        y(i)=b(i);
    end 
    for i=n:-1:1
        t=n;
        while i<t
              y(i)=y(i)-A(i,t)*x(t);
              t=t-1;
        end
        x(i)=y(i)/A(i,i);
    end%回代求解
    
    

    (3).运行实例
    求解线性方程组:
    x1+ x2 + x3+x4=4
    2x1+ x2 + x3+x4=5
    3x1+2x2+x3 +x4=7
    4x1+3x2+2x3+x4=10

    在这里插入图片描述

    3.用按比例主元法进行高斯消元
    (1).原理和算法

    在这里插入图片描述
    在这里插入图片描述

    (2).Matlab函数

    function x=Gauss(A,b)
    n=size(A,1);
    x=zeros(n,1);
    for i=1:n-1 
    
    for r=i:n %选出每行的最大元素并和该行第一个元素相除
            h=r; %h用来存储行元素最大的行数,假设第i个最大
            for k=r:n%第r行内从第1个开始寻找最大元素
               if A(r,h)<A(r,k)
                 h=k; 
               end%最终h保留的为元素最大的列数
            end
            D(r)=A(r,r)/A(r,h);%存储在数列内
        end
        q=i;%q用来存储列元素最大的列数,假设第i行最大
        for p=i:n%第i列内从第i行开始寻找最大比值
           if D(q)<A(p)
             q=p; 
           end%最终q保留的为元素最大的行数
        end
        A([i q],:)=A([q i],:);%元素最大行与第i行交换
        temp=b(i);b(i)=b(q);b(q)=temp; %该两行b也随之交换
    for t=i+1:n%用第i行的从第i+1行开始消去,一直消到最后一行
           m(t,i)=-A(t,i)/A(i,i); %后一行首位/前一行首位得到消元乘数
           for j=i:n %第i行从第i个开始乘乘数,消去第i+1行第i个元素
               A(t,j)=A(t,j)+m(t,i)*A(i,j);
           end
           b(t)=b(t)+m(t,i)*b(i); %该行b也随之变化
        end
    end%完成所有行消元,因为最后一行最后一列元素不用消,所以循环到n-1
    for i=1:n
        y(i)=b(i);
    end 
    for i=n:-1:1
        t=n;
        while i<t
              y(i)=y(i)-A(i,t)*x(t);
              t=t-1;
        end
        x(i)=y(i)/A(i,i);
    end%回代求解
    

    (3).运行实例
    求解线性方程组:
    x1+ x2 + x3+x4=4
    2x1+ x2 + x3+x4=5
    3x1+2x2+x3 +x4=7
    4x1+3x2+2x3+x4=10

    二,用迭代法求解线性方程组
    1.雅可比迭代法
    (1).原理和算法
    在这里插入图片描述

    (2).Matlab函数

    function x=jacobi(A,b,x0,tol,max) 
    [n,m]=size(A);
    xold=x0;
    C=-A;
    for i=1:n 
        C(i,i)=0;
    end 
    for i=1:n 
        C(i,:)=C(i,:)/A(i,i); 
    end
    for i=1:n 
        d(i,1)=b(i)/A(i,i); 
    end
    i=1;
    while i<=max 
          xnew=C*xold+d; %雅可比迭代直接使用上一次的解
          E=norm(xnew-xold)
          if norm(xnew-xold)<=tol 
             x=xnew;
             disp('Accuracy achieved!') 
             return; 
          else 
             xold=xnew; 
          end 
          disp([xnew']); 
          i=i+1; 
    end 
    x=xnew; 
    

    (3).运行实例
    在这里插入图片描述

    运行:

    >> A=[3,-1,1;3,6,2;3,3,7];
    b=[1,0,4]';
    tol=0.0001;
    max=20;
    x0=[0;0;0;];
    >> x=jacobi(A,b,x0,tol,max)
    E =
    
        0.6615    0.3333         0    0.5714
    
    
    E =
    
        0.4292    0.1429   -0.3571    0.4286
    
    
    E =
    
        0.2839    0.0714   -0.2143    0.6633
    
    
    E =
    
        0.0607    0.0408   -0.2568    0.6327
    
    
    E =
    
        0.0406    0.0368   -0.2313    0.6640
    
    
    E =
    
        0.0127    0.0349   -0.2398    0.6548
    
    
    E =
    
        0.0060    0.0352   -0.2357    0.6592
    
    
    E =
    
        0.0025    0.0350   -0.2373    0.6574
    
    
    E =
    
        0.0010    0.0351   -0.2366    0.6581
    
    
    E =
    
       4.3591e-04    0.0351   -0.2369    0.6578
    
    
    E =
    
       1.7968e-04    0.0351   -0.2368    0.6579
    
    
    E =7.6131e-05
    
    Accuracy achieved!
    n=12
    x =
    
        0.0351
       -0.2369
        0.6579
    
    

    2.高斯塞达尔迭代法
    (1).原理和算法
    在这里插入图片描述

    (2).Matlab函数

    function x=gs(A,b,x0,tol,max) 
    [n,m]=size(A);
    xold=x0;
    C=-A;
    for i=1:n 
        C(i,i)=0;
    end 
    for i=1:n 
        C(i,:)=C(i,:)/A(i,i); 
    end
    for i=1:n 
        d(i,1)=b(i)/A(i,i); 
    end
    i=1;
    while i<=max 
          xnew=xold;
          for j=1:n
              xnew(j,1)=C(j,:)*xnew+d(j,1); %高斯塞达尔迭代保持解的实时更新
          end
          E=norm(xnew-xold)
          if norm(xnew-xold)<=tol 
             x=xnew;
             disp('Accuracy achieved!') 
             return; 
          else 
             xold=xnew; 
          end 
          disp([xnew']); 
          i=i+1; 
    end
    x=xnew;
    

    (3).运行实例
    在这里插入图片描述

    运行:

    >> A=[3,-1,1;3,6,2;3,3,7];
    b=[1,0,4]';
    tol=0.0001;
    max=20;
    x0=[0;0;0;];
    >> x=gs(A,b,x0,tol,max)
    
    E =
    
    0.6236 0.3333   -0.1667    0.5000
    
    E =
    0.2582   0.1111   -0.2222    0.6190
    
    E =
    0.0661  0.0529   -0.2328    0.6485
    
    E =
    0.0154  0.0396   -0.2360    0.6556
    
    
    E =
    
        0.0039  0.0361   -0.2366    0.6573
    
    
    E =
    
       9.1975e-04
    
        0.0354   -0.2368    0.6578
    
    
    E =
    
       2.2862e-04
    
        0.0352   -0.2368    0.6579
    
    
    E =
    
       5.4682e-05
    
    Accuracy achieved!
    n=8
    x =
    
        0.0351
       -0.2368
        0.6579
     
    
    展开全文
  • 例如方程组:法1:左除法>> A=[3 1 -1;1 2 4;-1 4 5];b=[3.6;2.1;-1.4];>> x=A\bx =1.4818-0.46060.3848法2:求逆法>> A=[3 1 -1;1 2 4;-1 4 5];b=[3.6;2.1;-1.4];>> x=inv(A)*bx =1.4818-0...
  • 前期回顾 在上期教程中,我们学习了下面的知识点: 如何声明、定义、调用函数(文件)。...在数学中经常遇见的一个问题就是方程求解,特别是线性代数中,很经常遇见线性方程组求解问题,今天就来用Matla...
  • matlab求解线性方程组

    万次阅读 多人点赞 2019-07-18 17:16:13
    m=n时,即方程个数等于未知数个数 A=[1 -1 1 -2;2 0 -1 4;3 2 1 0;-1 2 -1 2]; b=[2 4 -1 -4]’; B=[A,b]; RA=rank(A) RB=rank(B) 此时RA=RB=4 则X=A\b或X=inv(A)*b(对于本题计算结果是一样的,不过inv要求...
  • 数值分析中求解线性方程组的全部MATLAB程序数值分析中求解线性方程组MATLAB程序(6种)1.回溯法(系数矩阵为上三角)function X=uptrbk(A,B)%求解方程组,首先化为上三角,再调用函数求解[N,N]=size(A);X=zeros(N,1);C...
  • TECHNOLOGY INFORMATION 学 术 论 坛 针对复杂的高耦合非线性方程组求解问题,由于无法写出其解的解析表达式, 因此常利用数值分析的方法来求其数值解。数值求解的算法简单、快速,且可用来进行实时计算,其步骤大致...
  • 多元非线性方程组求解(牛顿迭代法,含matlab代码)
  • 实验四 用 MATLAB 求解线性优化问题 一实验目的 了解 Matlab 的优化工具箱利用 Matlab 求解线性优化问题 二相关知识 非线性优化包括相当丰富的内容 们这里就 Matlab 提供的一些函数来介 绍相关函数的用法及其所...
  • x1,y1,z1以及x2,y2,z2 分别是两个参数方程,我想将两个参数方程对应相等,利用solve函数求得解析解。 但是程序报错,错误提示如下,主要是说四个等式求解六个未知数,这个让我不明白是什么原因。 具体错误如下: ...
  • matlab线性方程组求解

    万次阅读 多人点赞 2020-08-21 15:42:31
    线性方程组的求解主要有两种方法,分别是直接法和迭代法,本节也将围绕这两种方法去讲解一些matlab求解线性方程组的相关知识。 一、线性方程组的直接解法 主要可以分为以下三种方法: 高斯( Gauss )消去法 ...
  • 文章目录MATLAB求解线性方程组(牛顿拉夫逊方法)Equation.m 函数牛顿拉夫逊方法迭代求解 MATLAB求解线性方程组(牛顿拉夫逊方法) Equation.m 函数 这个函数用来写非线性方程组,注意整理成标准形式 function ...
  • matlab求解线性方程组

    2021-04-18 11:35:41
    利用逆矩阵、矩阵除法、x=inv(A'A)*A'llind.m文件如下,%求解线性方程组% x1 + 2x2 + 3x3 + 9x4 = 5%2x1 + 2x2 + 5x3 + 4x4 = 2%3x1 + 5x2 + x3 + 5x4 = 3%7x1 + 4x2 + 2x3 -10x4 = 8A=[1 2 3 9;2 2 5 4;3 5 1 5;7 4...
  • 实验一用matlab求解线性方程组 实验1.1 用matlab求解线性方程组 第一节 线性方程组的求解 一、齐次方程组的求解 rref(A) %将矩阵A化为阶梯形的最简式 null(A) %求满足AX=0的解空间的一组基,即齐次线性方程组的 ...
  • MATLAB线性方程组求解

    万次阅读 多人点赞 2019-01-20 22:58:32
    有唯一解线性方程组求法 ...求解齐次线性方程组基础解系的函数是null Z=null(A)表示返回矩阵A的基础解系组成的矩阵。Z还满足ZTZ=I Z=null(A,‘r’)得出的Z不满足ZTZ=I,但得出的矩阵元素多为整数,顾一...
  • 非常实用的用N-R法求解线性方程组MATLAB程序。希望对初学者有用。
  • 当系数矩阵A为NxN的方阵时,matlab会自行用高斯消元法求解线性方程组。若右端b为Nx1的列向量,则x=A\b可获得方程组的数值解x(Nx1的列向量);若右端为NxM的矩阵,则x=A\b可同时获得系数矩阵A相同的M个线性方程组的数值...
  • MATLAB求解线性方程组的五种方法

    千次阅读 2021-02-01 17:10:41
    MATLAB求解非线性方程组的五种方法 求解线性方程分为两种方法–二分法和迭代法 常见的方法一共有5种 二分法 迭代法 牛顿法 割线法 拟牛顿法 Halley法 使用条件 二分法需要知道两个自变量,分别是一个根的两侧 牛顿法...
  • TMU_BME_2013 Topic: 如何使用 MATLAB 求 解常微分方程组 a.What ? 微分方程 指描述未知函数的导数与自变 量之间的关系的方程未知函数是一元函 数的微分方程称作 常微分方程 未知函数 是多元函数的微分方程称作 偏...
  • matlab 求解线性方程组——迭代法

    万次阅读 多人点赞 2018-10-03 16:08:07
    文章目录标签(空格分隔): matlab 线性方程组 迭代 数值@[toc]matlab 求解线性方程组——迭代法1 测试迭代法求解函数GaussSeidelIteration()、JacobiIteration()2 迭代法求解函数GaussSeidelIteration()3 迭代法...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,682
精华内容 3,472
关键字:

matlab函数求解线性方程组

matlab 订阅