精华内容
下载资源
问答
  • matlab求微分方程

    2014-06-21 21:05:52
    matlab程序解微分方程,大学例题解析。
  • matlab求微分方程精确解及近似解求微分方程的解 问题背景和实验目的 Euler 折线法 初值问题的Euler折线法 Euler 折线法举例 Euler 折线法源程序 Euler折线法举例(续) Runge-Kutta 方法 Runge-Kutta 方法 四阶 R-K ...

    matlab求微分方程精确解及近似解

    求微分方程的解 问题背景和实验目的 Euler 折线法 初值问题的Euler折线法 Euler 折线法举例 Euler 折线法源程序 Euler折线法举例(续) Runge-Kutta 方法 Runge-Kutta 方法 四阶 R-K 方法源程序 Runge-Kutta 方法 Euler 法与 R-K法误差比较 Matlab 解初值问题 dsolve 求解析解 dsolve 的使用 dsolve 举例 dsolve 举例 dsolve 举例 Matlab函数数值求解 Matlab提供的ODE求解器 参数说明 数值求解举例 数值求解举例 Matlab 求解微分方程小结 上机作业 * * 自牛顿发明微积分以来,微分方程在描述事物运动规律上已发挥了重要的作用。实际应用问题通过数学建模所得到的方程,绝大多数是微分方程。 由于实际应用的需要,人们必须求解微分方程。然而能够求得解析解的微分方程十分有限,绝大多数微分方程需要利用数值方法来近似求解。 本实验主要探讨如何用 Matlab 来计算微分方程(组)的数值解,并重点介绍一个求解微分方程的基本数值解法--Euler折线法。 考虑一维经典初值问题 基本思想:用差商代替微商 根据 Talyor 公式,y(x) 在点 xk 处有 具体步骤: 等距剖分: 步长: 分割求解区间 差商代替微商 得方程组: 分割求解区间,差商代替微商,解代数方程 为分割点 k = 0, 1, 2, ..., n-1 yk 是 y (xk) 的近似 例:用 Euler 法解初值问题 取步长 h = (2 - 0)/n = 2/n,得差分方程 当 h=0.4,即 n=5 时,Matlab 源程序见 fulu1.m 解: clear f=sym('y+2*x/y^2'); a=0; b=2; h=0.4; n=(b-a)/h+1; % n=(b-a)/h; x=0; y=1; szj=[x,y]; for i=1:n-1 % i=1:n y=y+h*subs(f,{'x','y'},{x,y}); x=x+h; szj=[szj;x,y]; end szj plot(szj(:,1),szj(:,2),'or-') 解析解: 解析解 近似解 为了减小误差,可采用以下方法: 让步长 h 取得更小一些; 改用具有较高精度的数值方法: 龙格-库塔方法 Runge-Kutta (龙格-库塔) 方法 是一类求解常微分方程的数值方法 有多种不同的迭代格式 用得较多的是 四阶R-K方法(教材第 92 页) 其中 clear; f=sym('y+2*x/y^2'); a=0; b=2; h=0.4; n=(b-a)/h+1; % n=(b-a)/h; x=0; y=1; szj=[x,y]; for i=1:n-1 % i=1:n l1=subs(f,{'x','y'},{x,y}); l2=subs(f,{'x','y'},{x+h/2,y+l1*h/2}); l3=subs(f,{'x','y'},{x+h/2,y+l2*h/2}); l4=subs(f,{'x','y'},{x+h,y+l3*h}); y=y+h*(l1+2*l2+2*l3+l4)/6; x=x+h; szj=[szj;x,y]; end plot(szj(:,1),szj(:,2), 'dg-') 用 Maltab自带函数 解初值问题 求解析解:dsolve 求数值解: ode45、ode23、 ode113、ode23t、ode15s、 ode23s、ode23tb dsolve 的使用 y=dsolve('eq1','eq2', ... ,'cond1','cond2', ... ,'v') 其中 y 为输出, eq1、eq2、...为微分方程,cond1、cond2、...为初值条件,v 为自变量。 例 1:求微分方程 的通解,并验证。 >> y=dsolve('Dy+2*x*y=x*exp(-x^2)','x') >> syms x; diff(y)+2*x*y - x*exp(-x^2) 几点说明 如果省略初值条件,则表示求通解; 如果省略自变量,则默认自变量为 t dsolve('Dy=2*x','x'); % dy/dx = 2x dsolve('Dy=2*x'); % dy/dt = 2x 若找不到解析解,则返回其积分形式。 微分方程中用 D 表示对 自变量 的导数,如

    展开全文
  • matlab求微分方程的解.doc matlab求微分方程的解一、问题背景与实验目的二、相关函数(命令)及简介三、实验内容四、自己动手一、问题背景与实验目的实际应用问题通过数学建模所归纳而得到的方程,绝大多数都是微分...

    41528d3028836879cd698677c3999917.gifmatlab求微分方程的解.doc

    matlab求微分方程的解一、问题背景与实验目的二、相关函数(命令)及简介三、实验内容四、自己动手一、问题背景与实验目的实际应用问题通过数学建模所归纳而得到的方程,绝大多数都是微分方程,真正能得到代数方程的机会很少.另一方面,能够求解的微分方程也是十分有限的,特别是高阶方程和偏微分方程(组).这就要求我们必须研究微分方程(组)的解法,既要研究微分方程(组)的解析解法(精确解),更要研究微分方程(组)的数值解法(近似解).对微分方程(组)的解析解法(精确解),Matlab有专门的函数可以用,本实验将作一定的介绍.本实验将主要研究微分方程(组)的数值解法(近似解),重点介绍Euler折线法.二、相关函数(命令)及简介1.dsolve( equ1 , equ2 ,…):Matlab求微分方程的解析解.equ1、equ2、…为方程(或条件).写方程(或条件)时用Dy表示y关于自变量的一阶导数,用用D2y表示y关于自变量的二阶导数,依此类推.2.simplify(s):对表达式s使用maple的化简规则进行化简.例如:symsxsimplify(sin(x)^2+cos(x)^2)ans=13.[r,how]=simple(s):由于Matlab提供了多种化简规则,simple命令就是对表达式s用各种规则进行化简,然后用r返回最简形式,how返回形成这种形式所用的规则.例如:symsx[r,how]=simple(cos(x)^2-sin(x)^2)r=cos(2*x)how=combine4.[T,Y]=solver(odefun,tspan,y0)求微分方程的数值解.说明:(1)其中的solver为命令ode45、ode23、ode113、ode15s、ode23s、ode23t、ode23tb之一.(2)odefun是显式常微分方程:(3)在积分区间tspan=上,从到,用初始条件求解.(4)要获得问题在其他指定时间点上的解,则令tspan=(要求是单调的).(5)因为没有一种算法可以有效地解决所有的ODE问题,为此,Matlab提供了多种求解器Solver,对于不同的ODE问题,采用不同的Solver.求解器SolverODE类型特点说明ode45非刚性单步算法;4、5阶Runge-Kutta方程;累计截断误差达大部分场合的首选算法ode23非刚性单步算法;2、3阶Runge-Kutta方程;累计截断误差达使用于精度较低的情形ode113非刚性多步法;Adams算法;高低精度均可到计算时间比ode45短ode23t适度刚性采用梯形算法适度刚性情形ode15s刚性多步法;Gear s反向数值微分;精度中等若ode45失效时,可尝试使用ode23s刚性单步法;2阶Rosebrock算法;低精度当精度较低时,计算时间比ode15s短ode23tb刚性梯形算法;低精度当精度较低时,计算时间比ode15s短(6)要特别的是:ode23、ode45是极其常用的用来求解非刚性的标准形式的一阶常微分方程(组)的初值问题的解的Matlab的常用程序,其中:ode23采用龙格-库塔2阶算法,用3阶公式作误差估计来调节步长,具有低等的精度.ode45则采用龙格-库塔4阶算法,用5阶公式作误差估计来调节步长,具有中等的精度.5.ezplot(x,y,[tmin,tmax]):符号函数的作图命令.x,y为关于参数t的符号函数,[tmin,tmax]为t的取值范围.6.inline():建立一个内联函数.格式:inline( expr , var1 , var2 ,…),注意括号里的表达式要加引号.例:Q=dblquad(inline( y*sin(x) ),pi,2*pi,0,pi).三、实验内容1.几个可以直接用Matlab求微分方程精确解的例子:例1:求解微分方程,并加以验证.求解本问题的Matlab程序为:symsxy%line1y=dsolve( Dy+2*x*y=x*exp(-x^2) , x )%line2diff(y,x)+2*x*y-x*exp(-x^2)%line3simplify(diff(y,x)+2*x*y-x*exp(-x^2))%line4说明:(1)行line1是用命令定义x,y为符号变量.这里可以不写,但为确保正确性,建议写上;(2)行line2是用命令求出的微分方程的解:1/2*exp(-x^2)*x^2+exp(-x^2)*C1(3)行line3使用所求得的解.这里是将解代入原微分方程,结果应该为0,但这里给出:-x^3*exp(-x^2)-2*x*exp(-x^2)*C1+2*x*(1/2*exp(-x^2)*x^2+exp(-x^2)*C1)(4)行line4用simplify()函数对上式进行化简,结果为0,表明的确是微分方程的解.例2:求微分方程在初始条件下的特解,并画出解函数的图形.求解本问题的Matlab程序为:symsxyy=dsolve( x*Dy+y-exp(x)=0 , y(1)=2*exp(1) , x )ezplot(y)微分方程的特解为:y=1/x*exp(x)+1/x*exp(1)(Matlab格式),即,解函数的图形如图1:图1例3:求微分方程组在初始条件下的特解,并画出解函数的图形.求解本问题的Matlab程序为:symsxyt[x,y]=dsolve( Dx+5*x+y=exp(t) , Dy-x-3*y=0 , x(0)=1 , y(0)=0 , t )simple(x);simple(y);ezplot(x,y,[0,1.3]);axisauto微分方程的特解(式子特别长)以及解函数的图形均略.2.用ode23、ode45等求解非刚性的标准形式的一阶常微分方程(组)的初值问题的数值解(近似解).例4:求解微分方程初值问题的数值解,求解范围为区间[0,0.5].fun=inline( -2*y+2*x^2+2*x , x , y );%fun=@(x)(-2*y+2*x^2+2*x)[x,y]=ode23(fun,[0,0.5],1);x ;y ;plot(x,y, o- )>>x ans=0.00000.04000.09000.14000.19000.24000.29000.34000.39000.44000.49000.5000>>y ans=1.00000.92470.84340.77540.71990.67640.64400.62220.61050.60840.61540.6179图形结果为图2.图2例5:求解描述振荡器的经典的VerderPol微分方程分析:令则先编写函数文件verderpol.m:functionxprime=verderpol(t,x)globalmu;xprime=[x(2);mu*(1-x(1)^2)*x(2)-x(1)];再编写命令文件vdp1.m:globalmu;mu=7;y0=[1;0][t,x]=ode45( verderpol ,[0,40],y0);x1=x(:,1);x2=x(:,2);plot(t,x1)图形结果为图3.图33.用Euler折线法求解前面

    展开全文
  • 如何用matlab求微分方程及程序,详细且带有实例
  • Matlab求微分方程的数值解

    千次阅读 多人点赞 2020-08-10 17:53:00
    一、Matlab求微分方程的数值解函数 [x,y]=solver('f',ts,x0,options) 1)x代表自变量 2)y代表函数值 3)solver代表求解函数,常用的为ode45->函数图像变化较为平稳,ode15s->函数图像存在突变(一...

    注:首先计算微分方程的解析解,如果发现没有解析解,再用数值解

    一、Matlab中求微分方程的数值解函数

    [x,y]=solver('f',ts,x0,options)

      1)x代表自变量

      2)y代表函数值

      3)solver代表求解函数,常用的为ode45->函数图像变化较为平稳,ode15s->函数图像存在突变(一个运行时间长时,换另一个)

      4)ts=[t0,t1],代表自变量函数的初值和终值,也可以指定以一个向量

      5)x0表示函数的初始值

      6)options(可选):options=odeset('reltol','rt','abstol',at),rt,at分别为设定的相对误差,默认为10e-3,10e-6

      7)f表示由待解微分方程编写的m函数文件名

     

    二、一阶微分方程的数值解

       1、求解步骤:

           1)化为标准型(等号左边为微分)如下图

            

            2)带入函数求解

       2、例子

            例1(求方程):

                 题目:y-y{^'}=2x,初始值为y(0)=3,x范围为[0,2]

                 解:

                  1)化为标准型:y{^'}=y-2x

                  2)matlab求解如下:

                      2.1)新建一个m文件,用来编辑f函数

    function dy = f(x,y) % dy是标准化后左边的式子,x是式子右边的自变量,y是因变量
    dy = y - 2*x;
    end

                     2.2)新建一个m文件用来计算结果 

    [x y] = ode45('f',[0,2],3); %x是自变量,y是因变量
    figure(1)
    plot(x,y,'*-')
    axis([0 2 -inf inf])
    grid on

                  3)运行结果

                  

         

             例2:(求方程组)

                 题目:

                \left\{\begin{matrix} y{_1^'}=y{_2}y{_3}\\ y{_2^'}=-y{_1}y{_3}\\ y{_3^'}=-0.51y{_1}y{_2} \end{matrix}\right.,自变量x\in[0.4\pi],初始值y{_1}(0)=0,y{_2}(0)=y{_3}(0)=1

                解:

                1)化为标准型(题目已经为标准型)

                2)matlab代码

                    2.1)新建一个m文件,用来编辑f函数

    function dy = f(x,y) % dy是标准化后左边的式子,x是式子右边的自变量,y是因变量
        dy = zeros(3,1);
        dy(1) = y(2)*y(3);
        dy(2) = -y(1)*y(3);
        dy(3) = -0.51*y(1)*y(2);
    end

                  2.2) 新建一个m文件用来计算结果 

    [x, y] = ode45('f', [0 4*pi], [0 1 1]);  % 这里的y是一个有3列的矩阵哦!x是自变量,y是因变量
    plot(x, y(:,1), 'o', x, y(:,2), '*', x, y(:,3), '+') 
    legend('y1','y2','y3')  % 加上标注
    axis([0, 4*pi, -inf, +inf])  % 设置横坐标范围为0-4pi,纵坐标范围不需要设置,写成-inf到+inf

              3)结果

                

    三、高阶微分方程的数值解

          1、步骤

               1)标准化

                高阶方程转化为一阶方程组合

               2)按一阶求解

         2、例子

         

              1)标准化

              

               

              2)matlab求解

              

             

    展开全文
  • 求微分方程的解 自牛顿发明微积分以来微分方程在描述事物运动规律上已发挥了重要的作用实际应用问题通过数学建模所得到的方程绝大多数是微分方程 由于实际应用的需要人们必须求解微分方程然而能够求得解析解的微分...
  • matlab求微分方程的解

    2009-11-16 23:20:37
    利用matlab实现常见微分方程的解,包括常用方程的解
  • 目录基本方法求解常微分方程的通解求解常微分方程的初边值问题求解常微分方程组求解线性常微分方程组一阶齐次线性微分方程组非齐次线性方程组 基本方法 1.dsolve()函数 求解常微分方程的通解 在通解问题 % syms y...

    基本方法

    1.dsolve()函数

    求解常微分方程的通解

    在求通解问题
    % syms y(x) 
    % y=dsolve(x^2+y+(x-2*y)*diff(y)==0)这里插入代码片
    

    求解常微分方程的初边值问题

    % syms y(x)% 定义符号变量
    % dy=diff(y);%一阶导数
    % d2y=diff(y,2);%二阶导数,用于初值或边值条件的赋值
    % y=dsolve(diff(y,3)-diff(y,2)==x,y(1)==8,dy(1)==7,d2y(2)==4)
    % y=simplify(y) %把计算结果化解
    

    求解常微分方程组

    % syms f(x) g(x)
    % df=diff(f);%用于初值或边值条件的赋值
    % [f1,g1]=dsolve(diff(f,2)+3*g==sin(x),diff(g)+diff(f)==cos(x))%求通解
    % f1=simplify(f1),g1=simplify(g1)
    % 
    % [f2,g2]=dsolve(diff(f,2)+3*g==sin(x),diff(g)+diff(f)==cos(x),df(2)==0,f(3)==3,g(5)==1)
    % f2=simplify(f2),g2=simplify(g2)
    
    

    求解线性常微分方程组

    一阶齐次线性微分方程组

    % syms x(t) y(t) z(t)
    % X=[x;y;z]% 定义符号向量
    % A=[2 1 3;0 2 -1;0 0 2];
    % B=[1 2 1]';
    % [x, y, z]=dsolve(diff(X)==A*X,X(0)==B)
    
    

    非齐次线性方程组

    syms x(t) y(t) z(t)
    X=[x;y;z]% 定义符号向量
    A=[1 0 0;2 1 -1;3 2 1];
    B=[0;0;exp(t)*cos(2*t)];
    x0=[0;1;1];%初值条件
    X=dsolve(diff(X)==A*X+B,X(0)==x0)%求符号解
    X=simplify([X.x;X.y;X.z])%显示解的各个分量
    pretty(X) %分数线居中的显示方式
    
    
    展开全文
  • Matlab软件求解微分方程的解析解和数值解.pdfMatlab软件求解微分方程的解析解和数值解数学与信息科学学院孔祥庆数学建模实验项目2 (1)一、实验名称: Matlab软件求解微分方程的解析解和数值解二、实验目的:掌握 ...
  • Matlab 解常微分方程的初值问题题目:Matlab 解常微分方程的初值问题设计目的:1、熟练掌握Matlab的基本编程方法,及其编程风格。2、熟练掌握Matlab常用函数的使用。3、与本专业相关知识相结合,掌握其在程序开发中...
  • matlab求微分方程的解实验报告4《matlab与数学实验》实验报告实验序号: 实验四 日期: 2015年 5 月 25 日班级 132132002姓名 彭婉婷学号 1321320057实验名称 求微分方程的解 问题背景描述实际应用问题通过数学建模...
  • Matlab求微分方程的解析解(dsolve)

    千次阅读 2020-08-10 16:11:54
    1)在表达微分方程时,用字母D表示微分,D2、D3分别表示二阶、三阶微分,后面跟的是求解的因变量; 2)自变量可以指定,不写时默认为t; 3)用单引号; 4)在单引号中的公式算数符号不能省略:比如‘y-Dy=2*x...
  • 解析解:给出解的具体表达式 dsolve('方程1','方程2','方程3','方程4',...,'方程n','初始条件','自变量') 新建实时脚本,放出来的结果很直观
  • 一、常微分方程的求解 例1、 例2、 例3、 通常我们使用syms 和dsolve来求解; first: second:表示 third:如果有必要 功能函数diff可以完成一元或多元函数任意阶数的微分: (对于自变量的个数...
  • matlab微分方程和常微分方程组的求解-matlab微分方程和常微分方程组的求解.pdf matlab微分方程和常微分方程组的求解
  • MATLAB微分方程matlab时间也不短了,可是一直没有接触过微分方程。这次看看书,学习学习,记点儿笔记。1.可以解析求解的微分方程。dsolve()调用格式为:将yc的内容copy到latex中编译,得到结果。关于Matlab的...
  • dsolve('Dy=a*y','y(0)=b') %求微分方程的特解   3.求微分方程组 clear all; z=dsolve('Dx=y','Dy=x') %默认t为自变量 z.x z.y   求解常微分方程组的数值解options=odeset('RelTol',le-...
  • matlab微分方程

    2010-08-20 15:53:43
    求解 matlab微分方程 1、学会用Matlab求简单微分方程的解析解. 2、学会用Matlab求微分方程的数值解 a、简单微分方程的解析解. b、求微分方程的数值解 c、 数学建模实例 d、实验作业.
  • V = odeToVectorField(diff(x1) ==lamda*x1*x2-u*x2,diff(x2) ==-lamda*x1*x2+0.1) M = matlabFunction(V,'vars', {'t','Y'}) %计算区间[0 1],初值[0 0] options = odeset('OutputFcn',@odeplot); sol = ode45(M,...
  • matlab微分方程求解

    2021-07-23 17:40:04
    matlab微分方程求解,通过编程实战掌握具体应用。包括matlab微分方程求解前、matlab微分方程求解中、matlab微分方程求解后。
  • 4.8.2 偏微分方程在自然科学的很多领域内,...MATLAB提供了一个专门用于求解偏微分方程的工具箱PDE Toolbox。本小节仅介绍一些最简单、经典的偏微分方程,如椭圆型、双曲型、抛物型等偏微分方程,并给出求解方法。用...
  • 4MATLAB常微分方程求解MATLAB微分方程 1 简单微分方程的解析解 2 微分方程的数值解 3 建模实例 1 简单微分方程的解析解 微分方程(组)的解析解命令: dsolve('方程1', '方程2',…'方程n', '初始条件', '自变量...
  • MATLAB求解微分方程微分方程组方法介绍和例子。Matlab
  • 数学建模与数学实验 Matlab微分方程 实验目的 实验内容 2学会用Matlab求微分方程的数值解. 1学会用Matlab求简单微分方程的解析解. 1简单微分方程的解析解. 4作业. 2求微分方程的数值解. 3 数学建模实例 微分方程...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,930
精华内容 4,772
关键字:

matlab求微分方程

matlab 订阅