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

    千次阅读 2020-05-24 18:18:45
    Matlab求解微分方程的数学原理与就求解·数值解、解析解的语法算例实现

    引言

     数模课上讲的微分方程部分的知识,在之前一直是笔者弱项,在此将基础知识稍作整理后汇总成此博文,不足之处,望笔者多多指正。

    微分方程求解

    Matlab求解析解

     在Matlab中解析解常用函数库dslove来进行求解,常用的语法格式:

    dsolve(‘方程1’,‘方程2’,…,‘方程n’,‘初始条件’,‘自变量’)
    说明:在表达微分方程时,用字母D表示求微分,D2、D3等
    表示求高阶微分.任何D后所跟的字母为因变量,自变量可以指
    定或由系统规则选定为缺省

    • 例子1:求取dudt=1+u2\frac{d u}{d t}=1+u^{2}的通解。
    dsolve('Du=1+u^2','t')
    
    • 例子2:求取{d2ydx2+4dydx+29y=0y(0)=0,y(0)=15\left\{\begin{array}{l} \frac{d^{2} y}{d x^{2}}+4 \frac{d y}{d x}+29 y=0 \\ y(0)=0, y^{\prime}(0)=15 \end{array}\right. 的通解
    y=dsolve('D2y+4*Dy+29*y=0','y(0)=0,Dy(0)=15','x')
    
    • 例子3:求方程 {dxdt=2x3y+3zdydt=4x5y+3zdzdt=4x4y+2z\left\{\begin{array}{l} \frac{d x}{d t}=2 x-3 y+3 z \\ \frac{d y}{d t}=4 x-5 y+3 z \\ \frac{d z}{d t}=4 x-4 y+2 z \end{array}\right.通解
    x,y,z]=dsolve('Dx=2*x-3*y+3*z',...
      'Dy=4*x-5*y+3*z','Dz=4*x-4*y+2*z', 't')
    

    Matlab求取数值解

     在生产和科研中所处理的微分方程往往很复杂,且大多得不出一般解.而实际中的对初值问题,一般是要求得到解在若干个点上满足规定精确度的近似值,或者得到一个满足精确度要求的便于计算的表达式。

    求解原理

    • 欧拉法
       在求解数值解过程中假设xi+1xi=h,i=0,1,2,,n1x_{i+1}-x_{i}=h, \quad i=0,1,2, \cdots, n-1,那么可以尝试用离散的方式去接微分方程:{y=f(x,y)y(x0)=y0 \left\{\begin{array}{l} y^{\prime}=f(x, y) \\ y\left(x_{0}\right)=y_{0} \end{array}\right.
      如果h步长较小,有:y(x)y(x+h)y(x)hy^{\prime}(x) \approx \frac{y(x+h)-y(x)}{h}
      可以得等到对应的欧拉公式:{yi+1=yi+hf(xi,yi)y0=y(x0)i=0,1,2,,n1\left\{\begin{array}{l} y_{i+1}=y_{i}+h f\left(x_{i}, y_{i}\right) \\ y_{0}=y\left(x_{0}\right) \end{array} \quad i=0,1,2, \cdots, n-1\right.
    • 使用数值积分(改进欧拉)

    对方程f(x,y)两边由xix_ixi+1x_{i+1}进行积分,并利用梯形公式有:y(xi+1)y(xi)=xixi+1f(t,y(t))dtxi+1xi2[f(xi,y(xi))+f(xi+1,y(xi+1))]\begin{aligned} y\left(x_{i+1}\right)-y\left(x_{i}\right) &=\int_{x_{i}}^{x_{i+1}} f(t, y(t)) d t & \approx \frac{x_{i+1}-x_{i}}{2}\left[f\left(x_{i}, y\left(x_{i}\right)\right)+f\left(x_{i+1}, y\left(x_{i+1}\right)\right)\right] \end{aligned}
    得到:{yi+1=yi+h2[f(xi,yi)+f(xi+1,yi+1)]y0=y(x0)\left\{\begin{array}{l} y_{i+1}=y_{i}+\frac{h}{2}\left[f\left(x_{i}, y_{i}\right)+f\left(x_{i+1}, y_{i+1}\right)\right] \\ y_{0}=y\left(x_{0}\right) \end{array}\right.
    结合欧拉公式使用可以得到:
    {yi+1(0)=yi+hf(xi,yi)yi+1(k+1)=yi+h2[f(xi,yi)+f(xi+1,yi+1(k))]k=0,1,2\left\{\begin{array}{l} y_{i+1}^{(0)}=y_{i}+h f\left(x_{i}, y_{i}\right) \\ y_{i+1}^{(k+1)}=y_{i}+\frac{h}{2}\left[f\left(x_{i}, y_{i}\right)+f\left(x_{i+1}, y_{i+1}^{(k)}\right)\right] k=0,1,2 \end{array}\right.
    满足精度条件后继续下一步的计算。

    • 此外还可以结合泰勒公式继续得到比如龙格—库塔法、线性多步法等。

    matlab求解

     语法格式:

    [t,x]=solver(’f’,ts,x0,options)
    (偷懒直接截图)
    在这里插入图片描述

    • 例子4:{d2xdt21000(1x2)dxdtx=0x(0)=2;x(0)=0\left\{\begin{array}{c} \frac{\mathrm{d}^{2} x}{\mathrm{d} t^{2}}-1000\left(1-x^{2}\right) \frac{\mathrm{d} x}{\mathrm{d} t}-x=0 \\ x(0)=2 ; x^{\prime}(0)=0 \end{array}\right.
      求解程序:
    %例子4函数
    function dy=vdp1000(t,y)
        dy=zeros(2,1);
        dy(1)=y(2);
        dy(2)=1000*(1-y(1)^2)*y(2)-y(1);
    end
    
    命令窗口:
    %例子4
    t0=0;
    tf=3000;
    [T,Y]=ode15s('vdp1000',[0 3000],[2 0]); 
         plot(T,Y(:,1),'-')
    

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

    • 例子5:{y1=y2y3y2=y1y3y3=0.51y1y2y1(0)=0,y2(0)=1,y3(0)=1\left\{\begin{array}{c} y_{1}^{\prime}=y_{2} y_{3} \\ y_{2}^{\prime}=-y_{1} y_{3} \\ y_{3}^{\prime}=-0.51 y_{1} y_{2} \\ y_{1}(0)=0, y_{2}(0)=1, y_{3}(0)=1 \end{array}\right.
      求解程序:
    %求解例子5
    function dy=rigid(t,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
    
    命令行:
    t0=0;
     tf=12;
     [T,Y]=ode45('rigid',[0 12],[0 1 1]);
         plot(T,Y(:,1),'-',T,Y(:,2),'*',T,Y(:,3),'+')
    

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

    小结

     在笔者本科阶段的学习过程中,微分求解方程的学习经历课程主要有:常微分方程、数值分析、数学建模。希望在未来的学习过程中将其进一步的串成网络。最后本文不足之处望多多指正。

    一段

    某程序员夫妇新婚,一年之后喜得贵子,取名"灵灵"
    过一年后又喜得一女,取名"灵伊"
    两年之后得子"伊灵"
    两年之后,夫妇商定为得圆满再生一子,取名"伊伊"
    不料产科发现所怀为双胞胎,夫欲减胎,妻不允,冥思许久,对夫曰:“老五就叫’忆初’吧…”

    展开全文
  • matlab的ppt教程-MATLAB微分方程求解.ppt matlab的一些使用ppt 大家可以一起分享使用
  • 对于一个将一个点光源的光能量均匀打在目标面上,可以通过matlab编程构造一个平凸透镜,透镜的曲面为微分方程求解得到的自由曲面。希望对有需要的人提供帮助与参考
  • 共回答了16个问题采纳率:93.8% 【1】用... 运行结果: t = 0 0.2000 0.4000 0.6000 0.8000 1.0000 N = 0 0 0 0 0 0 0 0 0 0 0 0 再检查一下方程或初始条件吧,两种方法结果一样. 如果初值不为0,N的结果不是0. 1年前 2

    共回答了16个问题采纳率:93.8%

    【1】用解析法

    r1=0.01,r2=0.05,K1=1000,K2=1000,m=9e-6,n=4e-5

    [N1,N2]=dsolve('DN1=(r1*(1-N1/K1)-m*N2)*N1','DN2=(r2*(1-N2/K2)-n*N1)*N2','N1,N2','N1(0)=0,N2(0)=0')

    运行结果:

    N1 =0

    N2 =0

    【2】数值法

    function haha

    clear all

    clc

    N0 = [0 0];%初值不为0时,图形有变化

    [t,N] = ode45(@f,[0:0.2:1],N0)

    plot(t,N)

    function dNdt = f(t,N)

    r1=0.01;r2=0.05;K1=1000;K2=1000;m=9e-6;n=4e-5;

    dN1dt=(r1*(1-N(1)/K1)-m*N(2))*N(1);

    dN2dt=(r2*(1-N(2)/K2)-n*N(1))*N(2);

    dNdt = [dN1dt;dN2dt];

    运行结果:

    t =

    0

    0.2000

    0.4000

    0.6000

    0.8000

    1.0000

    N =

    0 0

    0 0

    0 0

    0 0

    0 0

    0 0

    再检查一下方程或初始条件吧,两种方法结果一样.

    如果初值不为0,N的结果不是0.

    1年前

    2

    展开全文
  • 微分方程求解脉冲响应matlab微分方程求解脉冲响应matlab
  • matlab_微分方程求解

    2013-07-19 09:49:31
    matlab_微分方程求解是一个专门介绍如何用matlab求解微分方程的课件
  • 精通matlab微分方程求解
  • Matlab在常微分方程求解中的应用;实验目的 1学会用Matlab软件求解微分方程的初值问题 2了解微分方程数值解思想掌握基本的微分方程数值解方法 3学会根据实际问题建立简单微分方程数学模型 4了解计算机数据仿真数据...
  • 科技信息 博士专家论坛 基于MATLAB微分方程求解 衡阳师范学院数学与计算科学系 宫兆刚 杨 柳 王增波 阳志锋 摘 要在现实生活中很多的问题都是用微分方程的形式来建立数学模型因而微分方程的求解就非常的有实际...
  • matlab微分方程和常微分方程组的求解-matlab微分方程和常微分方程组的求解.pdf matlab微分方程和常微分方程组的求解
  • matlab微分方程

    2018-07-29 15:31:43
    matlab解微分方程,可以很好的帮助你实现matlab微分方程求解
  • MATLAB 初学者使用微分方程求解器的内置函数求解微分方程的简单示例。 复制工作区中的文件运行“dxdt_solve” dxdt.m 包含微分方程
  • matlab微分方程求解

    2012-12-10 20:23:56
    matlab微分方程求解 ode23 解非刚性微分方程,低精度,使用Runge-Kutta法的二三阶算法。 ode45 解非刚性微分方程,中等精度,使用Runge-Kutta法的四五阶算法。 ode113 解非刚性微分方程,变精度变阶次Adams-...
  • 微分方程求解器” 此函数实现了微分方程求解的矩法L=微分算子的形式[导数的系数从6阶到常数的递减顺序] kcoeff= 已知多项式的形式 [x 的幂系数从 6 阶到常数的递减顺序] a=起始空间坐标值b=结束空间坐标值N=要取的...
  • 非稳态的偏微分方程组是一个比较难解决的问题,也是在热质交换等方面的常常遇到的问题,因此需要一套程序来解决非稳态偏微分方程组的数值解。
  • 精通matlab复杂的微分方程求解
  • 求解偏微分的代码偏微分方程求解器 此 MATLAB 代码用于可视化存在振动欧拉梁时流体域的压力和速度场。 求解器使用有限差分来求解梁的四阶微分方程。 流体是根据分析推导实现的,并与结构振动耦合。
  • 利用MATLAB求解一阶微分方程的解,输入信号为单位阶跃脉冲信号,代码绘制了系统脉冲响应的计算结果。
  • 微分方程求解MATLAB介绍,非常详细,介绍各种情况微分方程求解matlab函数调用和编写
  • Matlab微分方程求解

    千次阅读 2018-06-11 20:47:12
    1、根据数学理论常系数线性微分方程可以求解解析解要想求解析解可以用dsolve()函数如果有初始值,则可以在dsolve函数参数funm后边添加初始值参数!2、其他微分方程可以求解数值解一般求数值解可以利用ode45(),...

    1、根据数学理论常系数线性微分方程可以求解解析解

    要想求解析解可以用dsolve()函数


    如果有初始值,则可以在dsolve函数参数funm后边添加初始值参数!


    2、其他微分方程可以求解数值解

    一般求数值解可以利用ode45(),

    [Tout,Yout]=ode45(fun,[t0,tfinal],x0,option);

    注释:对于Tout,Yout分别是返回的时间向量和对应的数值解。

           fun是对应的微分方程要表示成标准形式(fun函数的描述有三种形式:m文件,匿名函数,inline形式(不建议使用));

          [t0,tfinal]是时间跨度;

          x0代表微分方程的初始值;

          option是可选选项,他可以用option.RelTol=1e-10(它默认是1e-3)控制误差精度;

    3、如果是刚性微分方程:

      什么是刚性微分方程:一个量变化很小另一个变化却很大 。

     刚性微分方程可以用ode15s()这个函数,具体用法跟ode45利用方法一致。





    展开全文
  • MATLAB符号微分方程求解器 SODES是一种MATLAB函数,它以标准MATLAB符号形式接收二阶微分方程组,将其重新编写为C作为MEX函数,然后使用许多MATLAB积分器中的任何一个对其进行积分。 SODES还将绘制,打印并做其他一些...
  • 基于matlab的延迟微分方程求解探讨
  • 三课时精通matlab微分方程求解 图像和算法等领域有多年研究和项目经验;...

    扫码下载「CSDN程序员学院APP」,1000+技术好课免费看

    APP订阅课程,领取优惠,最少立减5元 ↓↓↓

    订阅后:请点击此处观看视频课程

     

    视频教程-三课时精通matlab常微分方程求解-Matlab

    学习有效期:永久观看

    学习时长:12分钟

    学习计划:1天

    难度:

     

    口碑讲师带队学习,让你的问题不过夜」

    讲师姓名:宋星星

    工程师

    讲师介绍:图像和算法等领域有多年研究和项目经验;指导发表科技核心期刊经验丰富;多次指导数学建模爱好者参赛。

    ☛点击立即跟老师学习☚

     

    「你将学到什么?」

    精通matlab常微分方程求解

     

    「课程学习目录」

    1.精通matlab常微分方程求解前
    2.精通matlab常微分方程求解中
    3.精通matlab常微分方程求解后

     

    7项超值权益,保障学习质量」

    • 大咖讲解

    技术专家系统讲解传授编程思路与实战。

    • 答疑服务

    专属社群随时沟通与讲师答疑,扫清学习障碍,自学编程不再难。

    • 课程资料+课件

    超实用资料,覆盖核心知识,关键编程技能,方便练习巩固。(部分讲师考虑到版权问题,暂未上传附件,敬请谅解)

    • 常用开发实战

    企业常见开发实战案例,带你掌握Python在工作中的不同运用场景。

    • 大牛技术大会视频

    2019Python开发者大会视频免费观看,送你一个近距离感受互联网大佬的机会。

    • APP+PC随时随地学习

    满足不同场景,开发编程语言系统学习需求,不受空间、地域限制。

     

    「什么样的技术人适合学习?」

    • 想进入互联网技术行业,但是面对多门编程语言不知如何选择,0基础的你
    • 掌握开发、编程技术单一、冷门,迫切希望能够转型的你
    • 想进入大厂,但是编程经验不够丰富,没有竞争力,程序员找工作难。

     

    「悉心打造精品好课,1天学到大牛3年项目经验」

    【完善的技术体系】

    技术成长循序渐进,帮助用户轻松掌握

    掌握Matlab知识,扎实编码能力

    【清晰的课程脉络】

    浓缩大牛多年经验,全方位构建出系统化的技术知识脉络,同时注重实战操作。

    【仿佛在大厂实习般的课程设计】

    课程内容全面提升技术能力,系统学习大厂技术方法论,可复用在日后工作中。

     

    「你可以收获什么?」

    精通matlab常微分方程

    精通常微分方程求解

     

    展开全文
  • 微分方程matlab求解

    2013-09-17 21:12:18
    matlab微分方程求解ppt,很全的内容,希望大家喜欢。
  • 求解实例 ? 31 ? 解由给定的 PDE 可以得出 d=1,c=1,a=2,f=10 32 step1: 点击工具栏的 PDE 按钮如下输入 PDE 的参数注意选择 Hyperbolic ?... (1) Options ->Axis Limits 设置如下 34 题目用 MATLAB
  • 1.1使用desolve函数,求解一阶微分方程 y1=dsolve('Dy==5'); y2=dsolve('Dy==x','x'); [y5,y6]=dsolve('Dx==y+x','Dy==2*x'); [y7,y8]=dsolve('Dx==y+x','Dy==2*x','x(0)==0','y(0)==1') ; y9=dsolve('Dy==-2*...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,768
精华内容 707
关键字:

matlab微分方程求解

matlab 订阅