精华内容
下载资源
问答
  • 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
    
    更多相关内容
  • 利用mantlab求解函数来求解复杂方程组的需要求解的参数
  • matlab的代数方程组的解法,有比较多的程序可供参考。matlab的代数方程组的解法,有比较多的程序可供参考。
  • matlab解非线性方程组

    2020-04-28 16:52:17
    matlab解非线性方程组 梯度下降 牛顿法 matlab解非线性方程组 梯度下降 牛顿法 matlab解非线性方程组 梯度下降 牛顿法
  • Matlab 求解微分方程(ODE)
  • 以一个四元非齐次线性方程组为例,给出了求解多元线性方程组Matlab代码
  • mulStablePoint 用不动点迭代法求非线性方程组的一个根 mulNewton 用牛顿法法求非线性方程组的一个根 mulDiscNewton 用离散牛顿法法求非线性方程组的一个根 mulMix 用牛顿-雅可比迭代法求非线性方程组的一个根 ...
  • TMU_BME_2013 Topic: 如何使用 MATLAB 求 解常微分方程组 a.What ? 微分方程 指描述未知函数的导数与自变 量之间的关系的方程未知函数是一元函 数的微分方程称作 常微分方程 未知函数 是多元函数的微分方程称作 偏...
  • 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帮助文档即可,具体的可以参考知乎中https://www.zhihu.com/question/360875116/answer/937256480这里的一个评论。
    • MATLAB中有关方程和方程组的求解有比较多的命令,这里我们仅介绍其中的3个命令,分别为:solve函数、vpasolve函数、fsolve函数。其他有关方法可以在使用到时查看帮助文档。这里也有一篇有关MATLAB求解方程和方程组的博文供参考学习:https://www.cnblogs.com/gentle-min-601/p/9672221.html

    1、solve函数

    1.1 求解单变量方程

    %% 例题1: 求解单变量方程
    clear;clc
    syms x
    answ = solve(sin(x) == 1, x)  % 注意:这里的等号一定要有两个,一个等号表示赋值,两个等号才表示左右两边相等
    answ = solve(sin(x) == 1)  % 只有一个符号变量x,所以可以不指定未知数
    % 也可以这样写
    clear;clc
    syms x
    eqn = (sin(x) == 1);  % eqn = sin(x) == 1;  	% 这里因为优先级的关系可以将括号省去
    answ = solve(eqn, x)		% 当所求的方程过长时,这样先将方程赋值给eqn,然后将eqn带到solve中,更加美观
    % 因为三角函数是周期函数,如果要得到所有的解,则需要加上条件
    [answ, params, condions] = solve(eqn, x, 'ReturnConditions', true)
    

    需要注意的是这里,当求解的是周期函数时,若想将返回的解为周期值,需要带上ReturnConditions参数并设为true
    如下:其中in(k,‘integer’)表示k为整数
    在这里插入图片描述

    1.2 多变量方程求解

    %% 例题2: 多变量方程求解
    clear;clc
    syms a b c x
    eqn = (a*x^2 + b*x + c == 0);
    answ1 = solve(eqn, x)  % 将x视为未知数求解 
    %  -(b + (b^2 - 4*a*c)^(1/2))/(2*a)
    %  -(b - (b^2 - 4*a*c)^(1/2))/(2*a)
    answ2 = solve(eqn, a) % 将a视为未知数求解
    % -(c + b*x)/x^2
    

    1.3 方程组的求解

    %% 例题3:方程组求解
    clear;clc
    syms u v a
    eqn = [2*u + v == a, u - v == 1];
    answ = solve(eqn, [u, v])
    answ.u
    answ.v
    [answ_u, answ_v] = solve(eqn, [u, v])
    

    1.4 solve求解时可能出现的问题

    如在对方程进行以下求解时,MATLAB会给出警告。

    %% solve 可能会警告
    syms x
    eqn = (sin(x) == x^2 - 1);
    solve(eqn, x)
    

    在这里插入图片描述
    这是因为所求的方程超出了solve函数求解的能力了,在这种情况下继续使用solve函数求解可能其算法求的值与我们的要求的结果相差甚远。并且MATLAB建议使用vpasolve进行求解。

    2、vpasolve函数

    • vpasolve默认情况下只返回一个我们指定区间内的解,若想返回多个结果需要我们指定’random’为true,多次求解来获得不同的解
    • 通常情况下,当所求方程不是很复杂时可以画出方程对应函数的图像,确定方程根的大致范围,再结合vpasolve进行求解

    2.1 vapsolve的使用

    绘图:

    syms x
    fplot(sin(x), [-2 2])  % fplot函数可绘制表达式的图形
    hold on
    fplot(x^2 - 1, [-2 2]) 
    

    在这里插入图片描述

    %% vpasolve函数求解
    % 用vpasolve函数指定求[0 2]上的解
    syms x
    eqn = sin(x) == x^2 - 1;
    vpasolve(eqn, x, [0 2])
    vpasolve(eqn, x, [-1 0])
    vpasolve(eqn, x, [-10 10])
    % vpasolve returns all solutions only for polynomial equations. 
    % For nonpolynomial equations, there is no general method of finding all solutions.
    % When you look for numerical solutions of a nonpolynomial equation or system that has several solutions,
    % then, by default, vpasolve returns only one solution, if any. 
    % To find more than just one solution, set random to true. 
    % Now, calling vpasolve repeatedly might return several different solutions.
    vpasolve(eqn, x, 'random', true) 
    vpasolve(eqn, x, -5)   % 给定搜索的起始点
    

    2.2 vpasolve解决一个更复杂的例子

    在这里插入图片描述

    %% 来看一个更复杂的例子
    syms x y
    eqn = [x^2 - 2*x - 3*x*y == 10, y^4 == exp(-2*x/3)]
    [answ_x, answ_y] = vpasolve(eqn, [x, y], 'random', true)
    % 画图看看
    ezplot(x^2 - 2*x - 3*x*y == 10, [-10 10])
    hold on
    ezplot(y^4 == exp(-2*x/3*y), [-10 10])
    close % 关闭图形
    
    % ezplot函数比较鸡肋,下面这个函数比较厉害哦
    fimplicit(x^2 - 2*x - 3*x*y == 10, [-10 10],'r')  % R2016b版本之后才有
    hold on
    fimplicit(y^4 == exp(-2*x/3*y), [-10 10],'b')  % R2016b版本之后才有
    [answ_x, answ_y] = vpasolve(eqn, [x, y],[-4 -1;1 5])  % 指定搜索的范围:x位于[-4 -1], y位于[1 5]
    hold on
    plot(answ_x, answ_y,'ko', 'MarkerSize',10)   
    % plot(double(answ_x), double(answ_y),'ko', 'MarkerSize',10)   % double可以将我们的符号变量转换为数值变量
    

    三、fsolve函数

    fsolve是Matlab优化工具箱中的一个函数,可专门用来求解特别复杂的方程和方程组
    在使用fsolve函数进行求解时需要将我们要求解的方程或者方程组写入函数中,然后将函数句柄带入fsolve中。

    %% 待求解方程组
    function F = my_fun(x)
        F(1) = exp(-exp(-(x(1)+x(2)))) - x(2)*(1+x(1)^2);
        F(2) = x(1)*cos(x(2)) + x(2)*sin(x(1)) - 0.5;
    end
    
    %% 求解
    x0 = [0,0];  % 初始值
    result_x = fsolve(@my_fun,x0)
    
    展开全文
  • 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; %...

    所求方程组如下
    在这里插入图片描述

    代码如下

    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;      	%方程二
    func3 = (1 - ita) * (mui * S2 + S1 + fe) - Tg;  	%方程三
    [derta,ita,mui] = solve(func1 == 0,func2 ==0,func3 == 0,derta,ita,mui); %求解方程组
    
    展开全文
  • MATLAB求解非线性方程组 fsolve源程序代码
  • MATLAB 线性方程组的直接解法
  • 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...

    一.solve()方法

    (1)单变量方程 f(x)=0

    solve()方法可以求解较为简单的方程和方程组。

    1)符号方程

    所谓符号方程就是求得方程的解的解析式而不是具体的数值解,比如当参数未知时求得的解。

    eg:ax2 + bx + c = 0

    syms a b c x;
    f = a*x^2+b*x+c; 
    solve(f,x) %求解结果如下
    
    %结果
    ans =
     
     -(b + (b^2 - 4*a*c)^(1/2))/(2*a)
     -(b - (b^2 - 4*a*c)^(1/2))/(2*a)
    

    注意: 将solve()方法的第二个参数表示以该字母作为变量

    solve(f,a) %求解结果如下
    %结果
    ans =
     
    -(c + b*x)/x^2
    

    2)数值方程

    系数都为常数,最终求得数值解。

    eg:x3 + 2x2 = x - 1

    syms x;
    f = x^3+2*x^2-x+1;
    s = solve(f); %求解结果如下
    double(s)
    
    %结果
    ans =
    
       0.2734 - 0.5638i
       0.2734 + 0.5638i
      -2.5468 + 0.0000i
    

    3)超越方程

    带有三角函数、指数对数等的一些函数方程式

    eg:tan(x)-sin(x)=0

    syms x;
    f = tan(x)-sin(x);
    s = solve(f) %求解结果如下
    
    %结果
    s =
     
    0
    

    注意: 使用solve求解超越函数只能得到一个解!

    (2)方程组

    如果有多个变量将多个变量放入一个中括号内接受返回结果

    eg:
    x2 + y2 - 1 = 0
    0.75*x3 - y +0.9=0

    syms x y;
    f1 = x^2 + y^2 - 1;
    f2 = 0.75*x^3 - y + 0.9;
    [x,y] = solve(f1,f2); %求解结果如下
    x = double(x)
    y = double(y)
    
    %结果
    x =
    
      -0.9817 + 0.0000i
       0.3570 + 0.0000i
      -0.5540 - 0.3547i
      -0.5540 + 0.3547i
       0.8663 - 1.2154i
       0.8663 + 1.2154i
    
    
    y =
    
       0.1904 + 0.0000i
       0.9341 + 0.0000i
       0.9293 - 0.2114i
       0.9293 + 0.2114i
      -1.4916 - 0.7059i
      -1.4916 + 0.7059i
    

    二.fsolve()方法

    (1)数值求解

    需要建立方程组的m函数文件,也可以使用匿名函数(比较方便),该方法需要给出初值,然后进行迭代求解!

    eg:
    2x1 - x2 = e-x1
    -x1 + 2x2 = e-x2

    %函数m文件
    function eq = func(x)
    
    eq(1) = 2*x(1) - x(2) - exp(-x(1));
    eq(2) = -x(1) + 2*x(2) - exp(-x(2));
    end
    
    %在命令行窗口输入
    [x,fv] = fsolve(@func,[0,0])
    %x为方程组的解,fv为解对应的函数值
    
    %结果
    x =
    
        0.5671    0.5671
    
    
    fv =
    
       1.0e-06 *
    
       -0.1965   -0.1965
    

    三.fzero()方法

    (1)求解方程

    该方法需要给出变量的范围

    eg:x3 - 3x + 1 = 0, (-2<=x<=0)

    在这里插入代码片syms x ;
    f = inline('x^3 - 3*x + 1');
    fzero(f,[-2,0]) %求解结果如下
    
    %结果
    ans =
    
       -1.8794
    

    四.roots()方法

    (1) 求解多项式方程

    eg: x9 + x8 +1 = 0

    p=[1,1,0,0,0,0,0,0,0,1];  %括号里的数为多项式对应的系数
    roots(p)
    
    %结果
    ans =
    
      -1.2131 + 0.0000i
      -0.9017 + 0.5753i
      -0.9017 - 0.5753i
      -0.2694 + 0.9406i
      -0.2694 - 0.9406i
       0.4168 + 0.8419i
       0.4168 - 0.8419i
       0.8608 + 0.3344i
       0.8608 - 0.3344i
    

    注意: roots方法可以找出全部的根

    五.求解线性方程组

    AX = b, A是m×n阶矩阵,b是m维向量

    eg:AX = b

    %方法一
    A = [1 2 11;
         4 5 13;
         7 8 9];
    b = [6; 14; -3];
    x=A\b
    
    %方法2
    x=inv(a)*b
    
    %结果
    x =
    
       39.6111
      -39.7222
        4.1667
    

    注意: 只能求得一个特解

    展开全文
  • matlab线性方程组求解

    万次阅读 多人点赞 2020-08-21 15:42:31
    线性方程组的求解主要有两种方法,分别是直接法和迭代法,本节也将围绕这两种方法去讲解一些matlab在求解线性方程组的相关知识。 一、线性方程组的直接解法 主要可以分为以下三种方法: 高斯( Gauss )消去法 ...
  • 该函数计算任何一运动方程并生成系统的状态空间矩阵。 方程必须在一个结构中,其中每个方程都是结构中的一个新符号条目。 状态、状态的导数和输入必须是元胞数组。 方程必须定义为符号语句(参见语法示例)。 然而...
  • Wegstein法注意事项 应注意如果x1和x2两点选择不当则连线的斜率等于1与直线y=x无交点从而迭代无法进行这就是Wegstein法应当避免的陷井引入一个量C Wegstein法注意事项 令q1-C 当q0时Wegstein法退化为简单的不动点...
  • 龙格库塔法是用于非线性常微分方程的解的重要的一类隐式或显式迭代法。
  • 解线性方程组的迭代法MATLAB源代码(共15个),具体函数及功能如下: 函数名 功能 rs 里查森迭代法求线性方程组Ax=b的解 crs 里查森参数迭代法求线性方程组Ax=b的解 grs 里查森迭代法求线性方程组Ax=b的解 jacobi ...
  • 7(multiple variable differentical equtation parameter estimation using matlab lsqcurvefit function
  • 用法同 fsolve。 不同之处在于它可以在 C^m 中计算 m 变量的解。 输入可以是匿名函数和符号方程。 除非输入方程发生变化,否则在 matlab 会话中对该函数的后续调用不会导致内部 matlab 函数的重新计算。
  • 基于Matlab常系数线性微分方程组的求解.pdf
  • Matlab符号方程组化简

    千次阅读 2020-04-14 10:18:34
    当然,根据高斯消元,首先得从下面的方程组化起,然后再回代到第一个方程组,写出 dvc 和 diL 的表达式即可。 首先在matlab中用 syms 定义所有符号变量: syms C iL rc R vc dvc Vin diL L rL 之后,再定义两个...
  • 用于解决这个在2个未知数中包含2个联立线性方程组的系统的示例用法: 2x + 4x = 3 和3x + 5x = 6 %系数矩阵.. >> 厘米 = [ 2 , 4; 3, 5] 厘米 = 2 4 3 5 >> %..调用函数来求解联立线性方程......将常量作为列向量...
  • matlab优化二元一次方程组代码Matlab中的数值方法 Eulers ODE 欧拉方法是一种数值方法,用于求解具有给定初始值的一阶一阶微分方程。 它是对常微分方程进行数值积分的最基本的显式方法,也是最简单的Runge-Kutta方法...
  • matlab方程组

    万次阅读 多人点赞 2019-09-23 16:52:36
    1、解方程最近有多人问如何用matlab方程组的问题,其实在matlab中解方程组还是很方便的,例如,对于代数方程组Ax=b(A为系数矩阵,非奇异)的求解,MATLAB中有两种方法:(1)x=inv(A)*b — 采用求逆运算解方程组;...
  • 使用牛顿方法解非线性方程组 雅可比 迭代 jacobi matlab代码
  • matlab拟合微分方程组中的参数

    千次阅读 2021-04-18 14:37:41
    fprintf('\n\t方程二的决定系数R2_Square=%.6f',R2_Square); fprintf('\n\t方程三的决定系数R3_Square=%.6f',R3_Square); function f = ObjFunc(k,tspan,x0,yexp) % 目标函数 [t Xsim] = ode45(@KineticsEqs,tspan...
  • 一篇文章带你搞定 MATLAB 求解方程和方程组

    万次阅读 多人点赞 2020-07-20 12:03:19
    方程组二、fsolve() 数值求解:非线性方程三、fzero():解方程组的根四、roots() 语句的用法:求解多项式的根五、求解线性方程组 一、solve() 语句符号求解 1. 解单变量方程 2. 解数值方程 >> syms x; &...
  • Matlab方程组solve

    千次阅读 2020-10-17 20:55:11
    定义方程组 eq1=y==3*x+5; eq2=y==4*x+6; 求解方程组 s=solve(eq1,eq2,[x,y]); s.x s.y 注意老版本使用的是 s=solve('eq1','eq2','x','y') 这种表示已经淘汰了. 另外s.x是sym格式, 如果拿到真正的值 double(s....
  • MATLAB求解微分方程及微分方程组方法介绍和例子。Matlab

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,012
精华内容 9,604
关键字:

matlab方程组

matlab 订阅