精华内容
下载资源
问答
  • 利用matlab求解方程组
    千次阅读
    2022-02-08 09:37:55

    以三元二次方程组为例(其他情况可类推):
    { 17 x 2 + 9 y 2 + 5 z 2 − 24 x y + 12 y z − 14 x z − 6 x − 6 z = 0 x + 2 y − z + 1 = 0 \begin{cases} 17x^2+9y^2+5z^2-24xy+12yz-14xz-6x-6z=0\\ x+2y-z+1=0 \end{cases} {17x2+9y2+5z224xy+12yz14xz6x6z=0x+2yz+1=0
    在Matlab命令行窗口输入以下命令:

    syms x y z
    eq1=17*x^2+9*y^2+5*z^2-24*x*y+12*y*z-14*x*z-6*x-6*z
    eq2=x+2*y-z+1
    [x,y,z]=solve(eq1,eq2,x,y,z)
    

    得到以下结果:

    x =
     
      (19^(1/2)*6i)/125 - 21/125
    - (19^(1/2)*6i)/125 - 21/125
     
     
    y =
     
    - (19^(1/2)*3i)/125 - 52/125
      (19^(1/2)*3i)/125 - 52/125
     
     
    z =
     
    0
    0
    
    更多相关内容
  • 利用matlab求解方程组

    万次阅读 2019-07-04 14:02:24
    解方程组 计算过程: 注意: 矩阵系数中,逗号和分号的使用 矩阵除法用反斜杠\ 矩阵中的值提取用小括号,行列数从1开始算 不定方程组 未知数大于方程数,其解有无数个,matlab可以求出...

     

    • 定解方程组

     

    计算过程:

     

     

    注意:

    矩阵系数中,逗号和分号的使用

    矩阵除法用反斜杠\

    矩阵中的值提取用小括号,行列数从1开始算

     

    • 不定方程组

    未知数大于方程数,其解有无数个,matlab可以求出其中一个特定解

    计算过程

     

    转载于:https://www.cnblogs.com/derek32/p/4042829.html

    展开全文
  • MATLAB方程组求解

    千次阅读 2022-06-08 15:47:45
    综合实例应用:方程组求解无论工程...利用QR分解法先将系数矩阵A进行QR分解A=QR,然后Qy=b,最后Rx=y得到原方程组 总结 综合实例—方程组求解,到这里就结束啦!感谢观看,希望这篇文章对大家有帮助。..

    系列文章目录

    综合实例应用:方程组的求解



    前言

    无论工程应用问题,还是数学计算问题,方程组都是解决问题转化的重要途径之一,将复杂问题转化为简单的方程组矩阵求解问题。


    一、求解四元一次线性方程组

    >> %创建方程组系数矩阵
    >> A=[2 1 -5 1;1 -3 0 -6;0 2 -1 2;1 4 -7 6];
    >> b=[8 9 -5 0]';
    >> %判断方程是否有解
    >> %求方程组的秩
    >> r=rank(4)
    
    r =
    
         1
    
    >> B=[A,b];%创建增广矩阵
    >> s=rank(B)
    
    s =
    
         4
    
    >> %r=s=n(未知数)=4,则该齐次线性方程组有唯一解。
    >> %利用矩阵的逆
    >> x0=pinv(A)*b
    
    x0 =
    
        3.0000
       -4.0000
       -1.0000
        1.0000
    

    二、利用矩阵分解求解

    利用矩阵分解来求解线性方程组,是工程计算中最常用的计算。

    1.LU分解法

    LU分解法是先将系数矩阵A进行LU分解,得到LU=PA,然后解Ly=Pb,最后再解Ux=y得到原方程组的解。

    编写利用LU分解法求解线性方程组Ax=b的自定义函数M文件,操作方法:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    函数solvebyLU的程序,如下所示

    function x=solvebyLU(A,b)
    %该函数利用LU分解法求线性方程组Ax=b的解
    flag=isexist(A,b); 					%调用自定义函数isexist()判断方程组解的情况
    if flag==0
        disp('该方程组无解!');
        x=[];
        return;
    else
        r=rank(A);
        [m,n]=size(A);
        [L,U,P]=lu(A);
        b=P*b;
            %解Ly=b
        y(1)=b(1);
        if m>1
            for i=2:m
                y(i)=b(i)-L(i,1:i-1)*y(1:i-1)';
            end
        end
        y=y';
            %解Ux=y得原方程组得一个特解
        x0(r)=y(r)/U(r,r);
        if r>1
            for i=r-1:-1:1
                x0(i)=(y(i)-U(i,i+1:r)*x0(i+1:r)')/U(i,i);
            end
        end
        x0=x0';
         if flag==1  					%若方程组有唯一解
            x=x0;
            return;
        else        						%若方程组有无穷多解
            format rat;
            Z=null(A,'r'); 				%求出对应齐次方程组的基础解系
            [mZ,nZ]=size(Z);
            x0(r+1:n)=0;
            for i=1:nZ
                t=sym(char([107 48+i]));
                k(i)=t;      				%取k=[k1,k2...,];
            end
            x=x0;         
            for i=1:nZ          
                x=x+k(i)*Z(:,i); 			%将方程组的通解表示为特解加对应齐次通解形式
            end        
        end
    end
    

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

    函数isexist()的程序,如下所示

    function y=isexist(A,b)
    %该函数用来判断线性方程组Ax=b的解的存在性
    %若方程组无解则返回0,若有唯一解则返回1,若有无穷多解则返回Inf。
     [m,n]=size(A);
    [mb,nb]=size(b);
    if m~=mb
        error('输入有误!');
        return;
    end
    r=rank(A);
    s=rank([A,b]);
    if r==s &&r==n
        y=1;
    elseif r==s&&r<n
        y=Inf;
    else
        y=0;
    end
    

    在这里插入图片描述

    命令行代码,如下所示

    >> A=[2 1 -5 1;1 -3 0 -6;0 2 -1 2;1 4 -7 6];
    >> b=[8 9 -5 0]';
    >> x2=solvebyLU(A,b)
    
    x2 =
    
           3       
          -4       
          -1       
           1       
    

    2.QR分解法

    利用QR分解法先将系数矩阵A进行QR分解A=QR,然后解Qy=b,最后解Rx=y得到原方程组的解
    在这里插入图片描述

    1.编写求解线性方程组Ax=b的函数solvebyQR,代码如下:

    function x=solvebyQR(A,b)
    %该函数利用QR分解法求线性方程组Ax=b的解
    flag=isexist(A,b); 					%调用自定义函数isexist()
    if flag==0
        disp('方程组无解');
        x=[];
        return;
    else
        r=rank(A);
        [m,n]=size(A);
        [Q,R]=qr(A);
        b=Q'*b;
        %解Rx=b得原方程组得一个特解
        x0(r)=b(r)/R(r,r);
        if r>1
            for i=r-1:-1:1
                x0(i)=(b(i)-R(i,i+1:r)*x0(i+1:r)')/R(i,i);
            end
        end
        x0=x0';
           if flag==1  					%若方程组有唯一解
            x=x0;
            return;
        else        						%若方程组有无穷多解
            format rat;
            Z=null(A,'r'); 				%求出对应齐次方程组得基础解系
            [mZ,nZ]=size(Z);
            x0(r+1:n)=0;
            for i=1:nZ
                t=sym(char([107 48+i]));
                k(i)=t;      					%取k=[k1,...,kr];
            end
            x=x0;         
            for i=1:nZ          
                x=x+k(i)*Z(:,i); 				%将方程组的通解表示为特解加对应齐次通解形式
            end        
        end
    end
    

    总结

    综合实例—方程组的求解,到这里就结束啦!感谢观看,希望这篇文章对大家有帮助。

    展开全文
  • TMU_BME_2013 Topic: 如何使用 MATLAB常微分方程组 a.What ? 微分方程 指描述未知函数的导数与自变 量之间的关系的方程未知函数是一元函 数的微分方程称作 常微分方程 未知函数 是多元函数的微分方程称作 偏...
  • MATLAB求解方程和多元方程组

    万次阅读 多人点赞 2020-11-24 11:20:00
    MATLAB求解方程和方程组0. 说明1. 核心函数solve2. 单个方程求解3. 带未知参数的方程4. 方程组求解5. 数值近似6. 无的情况7. 多多留言点赞! 0. 说明 前面有两篇博文分别介绍了: MATLAB求常微分方程的解析 ...

    0. 说明

    前面有两篇博文分别介绍了:

    MATLAB求常微分方程的解析解
    MATLAB求常微分方程的数值解

    为了形成一个体系,我决定把普通方程组的求解也介绍一下。

    本博文也是按照MATLAB的官方文档展开的(推荐大家多看官方文档

    1. 核心函数solve

    一般形式 S=solve(eqns,vars,Name,Value) ,其中:

    eqns是需要求解的方程组;
    vars是需要求解的变量;
    Name-Value对用于指定求解的属性(一般用不到);
    S是结果,对应于vars中变量;

    2. 单个方程求解

    方程:sin(x)=1
    代码:

    syms x; %定义x是一个未知量
    eqn=sin(x)==1; % 定义方程,eqn只是一个代号,代表sin(x)==1
    solX=solve(eqn,x) % 求方程eqn中的x,放入solX中
    

    结果:
    在这里插入图片描述
    说明: MATLAB定义方程用的是 == 符号,就是这样规定的哈。

    注意: 细心的同学应该发现了,本例的解实际上应该是 pi/2+2k*pi ,怎么得到呢?
    添加Name-Value对即可解决,输入以下代码:

    syms x; %定义x是一个未知量
    eqn=sin(x)==1; % 定义方程,eqn只是一个代号,代表sin(x)==1
    [solX,params,cond]=solve(eqn,x,'ReturnConditions',true) % 求方程eqn中x的所有解,放入solX中,params是参数,cond存储参数性质
    

    得到理想结果:
    在这里插入图片描述

    3. 带未知参数的方程

    方程: ax²+bx+c=0
    代码:

    syms x a b c; %定义x a b c是未知量
    eqn=a*x^2+b*x+c==0;% 定义方程
    solX=solve(eqn,x) % 解方程
    

    结果:
    在这里插入图片描述
    说明: 这里就简单的把未知参数用syms声明就可以了。

    4. 多元方程组求解

    方程:
    在这里插入图片描述
    代码:

    syms u v; % 定义u v 是未知量
    eqns=[2*u+v==0,u-v==1]; % 定义方程组
    vars=[u,v]; % 定义求解的未知量
    [solU,solV]=solve(eqns,vars) % 求解eqns中的vars未知量,分别存储
    sol=solve(eqns,vars); % 求解eqns中的vars未知量,以结构体的形式存储到sol中
    solU1=sol.u % 从sol结构体中取出变量u的解
    solV1=sol.v % 从sol结构体中取出变量v的解
    

    结果:
    在这里插入图片描述
    说明: 本例中有两个求解的变量,有两种存储方式,已在代码中介绍。

    5. 数值近似解

    方程: sin(x)==x²-1
    代码:

    syms x; % 定义x是未知量
    fplot(sin(x),[-2,2]); % 绘制y=sin(x)的图像
    hold on; 
    fplot(x^2-1,[-2,2]); % 绘制y=x^2-1的图像
    hold off;
    eqn=sin(x)==x^2-1; % 定义方程
    solX=solve(eqn,x) % 直接求解,返回其找到的第一个数值近似解
    solX1=vpasolve(eqn,x,[0,2]) % vpa求解,返回其在范围[0,2]内找到的第一个数值近似解
    

    结果:
    在这里插入图片描述
    在这里插入图片描述
    说明: 此例中无法求得精确解,slove会返回求得的第一个数值近似解,vpasolve可以返回指定范围内第一个近似解

    6. 无解的情况

    方程:
    在这里插入图片描述
    代码:

    syms x; % 定义x是未知量
    eqn=[3*x+2==0,3*x+1==0]; % 定义函数
    solX=solve(eqn,x) % 求解
    

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

    7. 多多留言点赞!

    展开全文
  • MATLAB求解方程与方程组

    千次阅读 2021-04-11 13:26:47
    solve()方法可以求解较为简单的方程和方程组。 1)符号方程 所谓符号方程就是求得方程的的解析式而不是具体的数值,比如当参数未知时求得的。 eg:ax2 + bx + c = 0 syms a b c x; f = a*x^2+b*x+c; solve(f...
  • MATLAB求解方程和方程组

    万次阅读 2020-07-06 23:27:43
    文章目录MATLAB求解方程和方程组1、solve函数1.1 求解单变量方程1.2 多变量方程求解1.3 方程组的求解1.4 solve求解时可能出现的问题2、vpasolve函数2.1 vapsolve的使用2.2 vpasolve解决一个更复杂的例子三、fsolve...
  • matlab的代数方程组的解法,有比较多的程序可供参考。matlab的代数方程组的解法,有比较多的程序可供参考。
  • MATLAB求解非线性方程组 fsolve源程序代码
  • matlab求解微分方程组代码 计算方法(calculation methodb) 该项目是《计算方法》一书中提到的经典方法和算法的matlab程序实现,包含代码详解和运行过程。 :grinning_face_with_big_eyes: 1.简介 2.线性方程组的...
  • MATLAB求解非线性方程组 fsolve源程序代码 部分源码 function equation() global sigma mu T lambda sigma=5; %定义sigma的值 mu=0.4; %定义mu的值 T=1.7; %定义T的值 N=1;
  • 含定积分的非线性方程组数值MATLAB求解.pdf
  • matlab线性方程组求解

    万次阅读 多人点赞 2020-08-21 15:42:31
    线性方程组求解主要有两种方法,分别是直接法和迭代法,本节也将围绕这两种方法去讲解一些matlab求解线性方程组的相关知识。 一、线性方程组的直接解法 主要可以分为以下三种方法: 高斯( Gauss )消去法 ...
  • 六种用Matlab解方程组的方法-equation.rar 这里有六种用Matlab解方程组的方法:直接法、LU分解法、QR分解法、Cholesky分解法、Jacobi迭代法、Gauss-Serdel迭代法。 所含文件: Figure34.jpg
  • 求高手用matlab解一个三元的方程组我算的你这个都是无穷大.具体过程如下:第一步:建立M文件函数myf.mfunctionf=myf(x)f(1)=600+x(1)*cos(10)+x(2)*sin(40)-x(3);f(2)=(x(用matlab求矩阵方程组,急求不出取精确...
  • MATLAB基础教程(6)——使用matlab求解线性方程组
  • matlab求解线性方程组

    2012-09-09 10:56:09
    基于matlab求解线性方程组,A*x=b,求解x向量,最终结果存储在x向量中。
  • Matlab解方程组solve

    千次阅读 2020-10-17 20:55:11
    定义位置变量 ...求解方程组 s=solve(eq1,eq2,[x,y]); s.x s.y 注意老版本使用的是 s=solve('eq1','eq2','x','y') 这种表示已经淘汰了. 另外s.x是sym格式, 如果拿到真正的值 double(s.x) 即可. ...
  • matlab优化二元一次方程组代码用于同时列表驱动的源配置文件光度代码原型的代码。 ##概述完整的软件可能分为三个阶段。 阶段1:仿真,阶段2。线性矩阵的生成,阶段3。求解矩阵方程。 该原型完成了前两个阶段。 IDL...
  • MATLAB 线性方程组的直接解法
  • 在平常的学习当中,利用matlab解方程,绝对不是一门轻易掌握的学科。我们应该如何利用matlab解方程呢?下面相关方法分享给大家。【matlab解方程】1、先举一例,解方程"x^2+100*x+99=0"在matlab ”Command Window"中...
  • matlab求解方程组

    千次阅读 2020-11-07 21:33:25
    所求方程组如下 代码如下 syms fm Cm fe C S2 S1 fe Tg %定义已知常量 syms derta ita mui %待求解变量 func1 = derta * fm - ita * derta * fm - Cm; %方程一 func2 = derta * mui * fm + derta * fe + C; %...
  • matlab方程组解的三种方法

    千次阅读 2021-06-05 13:52:05
    end end end 附:不使用DLU分解的迭代算法 function [x]=jacobi_nodlu(A,b,x0,e,N) D=diag(diag(A));L=tril(A,-1);U=triu(A,1); B=-D\(L+U);f=D\b; if max(abs(eig(B)))>=1 x='Jacobi method can not converge'; ...
  • matlab解非线性方程组

    2020-04-28 16:52:17
    matlab解非线性方程组 梯度下降 牛顿法 matlab解非线性方程组 梯度下降 牛顿法 matlab解非线性方程组 梯度下降 牛顿法
  • matlab编程 求解非线性方程和方程组的多种方法
  • 求解一个简单方程x+1=100的为x0 syms x x0=solve(x+1-100,x) 非线性方程的例子C2x^2+C1x=C0的x1,x2 syms C0 C1 C2 x solve(C2x^2+C1x-C0,x)
  • 如何用matlab求解非线性微分方程组(基于龙格库塔的数值微分算法)?.docx
  • matlab求解方程组函数solve、dsolve、ode系列 示例: 三.求解微分方程的ode23函数 示例如下: 代码如下: 代码如下:
  • 使用Matlab 的符号数学工具箱求解方程组Matlab 的符号数学工具箱(Symbolic Math Toolbox )在求解方程及方程组方面为我们提供了一种简洁的方法。本文以求解下列方程组为例来说明用法,22221y kx c x y a b=+???+=?? ...
  • MATLAB文件,主要以三阶方程组为例,借助Jacobi迭代法实现了方程组的数值解求解。可以扩展到任意阶数。 【注】若因编辑器的编码问题导致中文注释乱码,请在购买后私信我解决。

空空如也

空空如也

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

利用matlab求解方程组

matlab 订阅