精华内容
下载资源
问答
  • 利用matlab的s函数求解二阶微分方程,是基于PD控制理论的学习,程序是正确可以用的。如有疑问可以看相应的博客文章说明
  • 二阶微分方程matlab代码 this code works on matlab. It is shooting method impementation for solving second order differential equations
  • 该程序通过使用线性插值的 Rayleigh Ritz 方法给出了具有可变系数的二阶微分方程的解
  • MATLAB利用ode求解二阶微分方程

    千次阅读 2020-12-17 15:02:10
    MATLAB利用ode求解二阶微分方程 求解微分方程为: MATLAB的m文件代码如下: function xp=order1(t,x) xp=zeros(2,1); %x1=y,x2=y' xp(1)=x(2); xp(2)=(200*t-0.5*(x(2))^2)/(20*t); end 在命令行中调用代码如下:...

    MATLAB利用ode45求解二阶微分方程

    ==================================================

    求解微分方程为:
    在这里插入图片描述

    ==================================================
    MATLAB的m文件代码如下:

    function xp=order1(t,x)
    xp=zeros(2,1);          %x1=y,x2=y'
    xp(1)=x(2);
    xp(2)=(200*t-0.5*(x(2))^2)/(20*t);
    end
    
    

    ==================================================

    在命令行中调用代码如下:

    [t,x]=ode45(‘order1’,[1 40],[0 0]);
    figure;
    plot(t,x(:,1),‘r’);

    ==================================================

    这是一套固定思路,因ode45只能对y’=f(t,y)形式的函数求解,故做变化:
    在这里插入图片描述
    这样变化以后,就可以求解二阶微分方程了。

    plot(t,x(:,1))plot(t,x(:,2)) 可以分别显示 y’y’’ 的解,这里不一一列出,具体过程参考程序

    ==================================================

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

    展开全文
  • 近几天没事,开始学习一下Matlab S函数求解二阶微分方程,具体方程表达式如下: D(q)q¨+C(q,q˙)q˙=τD\left( q \right)\ddot q + C(q,\dot q)\dot q = \tauD(q)q¨​+C(q,q˙​)q˙​=τ (2.1) τ=Kde˙+Kpe\tau ...

    近几天没事,开始学习一下Matlab S函数求解二阶微分方程,具体方程表达式如下:
    D(q)q¨+C(q,q˙)q˙=τD\left( q \right)\ddot q + C(q,\dot q)\dot q = \tau (2.1)
    τ=Kde˙+Kpe\tau = {K_d}\dot e + {K_p}e (2.2)
    其中,e˙=q˙dq˙\dot e = {\dot q_d} - \dot qe=qdqe = {q_d} - qqq实际输出结果,qdq_d期望输出的结果。
    仿真参数设置如下:
    p=[2.90, 0.76, 0.87, 3.04, 0.87]Tp=[2.90, \space 0.76, \space 0.87, \space 3.04, \space 0.87]^Tq0=[0.0, 0.0]Tq_0 = [0.0,\space 0.0]^Tq˙0=[0.0, 0.0]T\dot q_0 = [0.0,\space 0.0]^Tqd(0)=[1.0, 1.0]Tq_d(0) = [1.0,\space 1.0]^TKp=diag([100, 100])K_p = diag([100, \space 100])Kd=diag([100, 100])K_d = diag([100, \space 100])D(q)=[p1+p2+2p3cosq2, p2+p3cosq2; p2+p3cosq2, p2]D\left( q \right) = [p_1+p_2+2p_3cosq_2,\space p_2+p_3cosq_2;\space p_2+p_3cosq_2,\space p_2]C(q,q˙)=[p3q˙2sinq2, p3(q˙1+q˙2)sinq2; p3q˙1sinq2, 0]C(q,\dot q)=[-p_3\dot q_2 sin q_2,\space -p_3(\dot q_1 + \dot q_2) sin q_2; \space p_3\dot q_1 sin q_2,\space 0]
    编程分析,首先等式(2.1)左右都含有带求解未知数q,所以把等式左右两边都写成S函数求解。等式(2.2)S函数编写分析:左边τ\tau当成输出,是个二维向量。右边有两个输入变量q˙,q\dot q,q,其中q˙d,qd\dot q_d,q_d是常数已知。每个变量又都是二维向量,所以S函数的输入数量 4,输出数量 2,并且输出和输入是有关系的直接反馈参数设置1,其他参数默认。

    编写等式(2.2)分析,等式可以改写成:D(q)q¨=τC(q,q˙)q˙D\left( q \right)\ddot q = \tau - C(q,\dot q)\dot q,这个一个矩阵求解:可以写成两种形式:q¨=inv(D(q))(τC(q,q˙)q˙)\ddot q = inv(D\left( q \right))*\left( \tau - C(q,\dot q)\dot q \right)或者q¨=(D(q))\(τC(q,q˙)q˙)\ddot q = (D\left( q \right)) \backslash \left( \tau - C(q,\dot q)\dot q \right)。第二种求解方法比较快并且精度高,推荐第二种方法求解。由于是个二阶微分方程,且每个变量是二维所以S函数的连续状态变量数是 4,输出分别是变量q,q˙q,\dot q,所以输出变量数也是4,此处的4个输出会作为等式(2.1)的输入,数量必须相同。输入变量是τ\tau,所以输入变量数是 2。由于输出函数sys=mdlOutputs(t,x,u)中,sys = x,x是状态变量,输出和输入没有直接关系,所以直接反馈参数理论上应该设置0,但实际上设置1结果也是正确的,由于能力有限暂时不清楚原因。

    由于CSND插入MATLAB代码失败所以,把文件压缩上传到CSDN共大家参考。
    https://download.csdn.net/download/cswh876908060/12151665
    如有问题或者需要代写,代做,指导,请联系QQ:876908060

    展开全文
  • ![图片说明](https://img-ask.csdn.net/upload/202010/30/1604047742_249951.jpg) 二阶微分方程如何求解,对x,不胜感激
  • >利用Matlab求解二阶微分方程的一般有以下步骤    → 题目定义:由方程(3.4.33)和(3.4.35)可以看出,参量 是二阶偏微 分方程的主要参量,只要这几个参量确定,就可以定下偏微分方程的结构。此外要做的事是确定偏...
    >利用Matlab求解二阶偏微分方程的一般有以下步骤
        → 题目定义:由方程(3.4.33)和(3.4.35)可以看出,参量 是二阶偏微 分方程的主要参量,只要这几个参量确定,就可以定下偏微分方程的结构。此外要做的事是确定偏微分 方程的求解区域,即边界条件。在PDE ToolBox中有许多类似circleg.m的m文件定义了不同的边界形状。 使用前可以借助help命令查看,或参考其它资料。
        →求解域的网格化:通常采用命令initmesh进行初始网格化,还可以采用命 令refinemesh进行网格的细化和修整。这些命令的用法同样可以使用help命令,如[p,e,t]=initmesh(g) ,这里的参量p、e、t提供给下面的问题求解时使用。
        → 问题的求解:在PDE工具箱中有许多求解我们在上面提到的不同类型 的二阶偏微分方程的指令,主要有:
        ◆assempde    调用格式为:u=assempde(b,p,e,t,c,a,f)
    该命令用来求解椭圆型偏微分方程(3.4.31),求解的边界条件由函数b确定,网格类型由p、e和t确 定,c、a、f是椭圆型偏微分方程(3.4.31)
        ◆hyperbolic  调用格式为:u1=hyperbolic (u0,ut0,tlist,b,p,e,t,c,a,f,d)
    该命令用来求解双曲型偏微分方程(3.4.35)。
        ◆ parabolic 调用格式为:u1=parabolic (u0,tlist,b,p,e,t,c,a,f,d)
    该命令用来求解抛物线型偏微分方程(3.4.33)。
        ◆pdeeig   调用格式为:[v,l]= pdeeig(b,p,e,t,c,a,d,r)
       该命令用来求解特征值型偏微分方程(3.4.37)。
        ◆pdenonlin 调用格式为:[u,res]= pdenonlin(b,p,e,t,c,a,f)
       该命令使用具有阻尼的Newton迭代法,在由参量p、e、t确定的网格上求解非线性椭 圆型偏微分方程(3.4.31)。
      ◆poisolv 该命令在一个矩形网格上求解Poisson方程。   

    →结果处理:如Matlab的主要特色一样,在PDE工具箱中提供了丰富的图形显 示,因此用户不但可以对产生的网格进行图形显示和处理,对求解的数据也可以选择多种的图形显示和 处理方法,甚至包括对计算结果的动画显示。用户可以参考相关资料来使用。
    展开全文
  • 在解如图所示的方程时:![图片说明](https://img-ask.csdn.net/upload/202007/15/1594789822_485207.jpg) 求解x在[0 1]范围内的数值解。 直接使用ode45函数时,未知C(0)值。 使用bvp4c函数时,又不知道如何...
  • 使用 matlab 自带的 ode45 ,方程组用句柄表示。

    朋友问题: 有微分方程如下:
    md2ydt2+dydtexp(t)y2=5m \frac{d^2y}{dt^2} + \frac{dy}{dt} exp(t) - y^2 = 5
    其中,y(t=0)=1y(t=0)=1dy/dt(t=0)=10dy/dt (t=0) = -10
    请在区间[0,5][0, 5]内绘制两个子图,分别为dy/dtdy/dtyy,每个子图涵盖m=1m=1m=2m=2两种情况。

    所以本题的核心问题在于:用数值计算的方法求解该方程,得到各点,绘制点图。

    使用 matlab 自带的 ode45 ,方程组用句柄表示。

    ode45 参见教程:如何使用ODE45

    首先把题目方程转换,转换为 ode45 能理解的方式。

    先声明变量:
    y1=yy2=y\begin{aligned} y_1 & = y \\ y_2 & = y' \\ \end{aligned}

    于是整理方程:

    y1=y2y2=1m(5y1ey1+y12)\begin{aligned} y_1' & = y_2 \\ y_2' & = \frac{1}{m} (5 - y_1' e^{y_1} + y_1^2) \end{aligned}

    于是我们知道,ode45中要有2个变量,且将其右边的式子分别表示出来,即:

    dy = @(t, y)[y(2); (5 - y(2)*exp(y(1)) + y(1)^2)/m];
    

    其中:

    • y(2)代表 y1=y2y_1' = y_2
    • (5 - y(1)*exp(y(2)) + y(2)^2)/m代表 y2=1m(5y1ey1+y12)y_2' = \frac{1}{m} (5 - y_1' e^{y_1} + y_1^2)

    接着,规定初值:y(t=0)=1y(t=0)=1dy/dt(t=0)=10dy/dt (t=0) = -10

    y10 = 1;
    y20 = -10;
    

    规定自变量 tt 范围:

    tspan = [0, 5];
    

    输入 ode45 则为:

    [t, y] = ode45(dy, tspan, [y10, y20]);
    

    整个题目的代码为:

    % 表示该方程组
    m = 1;
    dy = @(t, y)[y(2); (5 - y(2)*exp(y(1)) + y(1)^2)/m];
    y10 = 1;
    y20 = -10;
    tspan = [0, 5];
    
    % m = 1
    [t_m_1, y_m_1] = ode45(dy, tspan, [y10, y20]);
    % m = 2
    m = 2;
    dy = @(t, y)[y(2); (5 - y(2)*exp(y(1)) + y(1)^2)/m];
    [t_m_2, y_m_2] = ode45(dy, tspan, [y10, y20]);
    
    % plot
    subplot(1, 2, 1);
    plot(t_m_1, y_m_1(:, 2));
    hold on
    plot(t_m_2, y_m_2(:, 2));
    title('dy/dt')
    legend('m=1','m=2')
    
    subplot(1, 2, 2);
    plot(t_m_1, y_m_1(:, 1));
    hold on
    plot(t_m_2, y_m_2(:, 1));
    title('y')
    legend('m=1','m=2')
    

    在这里插入图片描述

    顺便学了 ode45 ,不错。

    展开全文
  • MATLAB 求解微分方程x=dsolve('Dx=r*(1-x/xm)*x','x(0)=x0','t')x=xm/(1+exp(-r*t)*(xm-x0)/x0)用matlab求解这个微分方程:dx/dt=36.86+xx=dsolve('Dx=36.86+x')x=-1843/50+exp(t)*C1单摆微分方程求解:x''+(g/l)sin...
  • 二阶微分方程数学科学计算 Matlab代码以数字方式解决科学问题 用LU分解和本征分解求解线性方程组 使用矩阵的最小二乘回归 求解一阶和二阶常微分方程的数值方法 二阶Runge-Kutta方法求解微分方程
  • 本文主要介绍matlab求解微分方程(组)的dsolve和ode系列函数,并通过例子加深读者的理解。 一、符号介绍  D: 微分符号;D2表示二阶微分,D3表示三阶微分,以此类推。 二、函数功能介绍及例程 1、dsolve ...
  • 使用matlab解决二元二阶微分方程组的求解问题,并画出包括极坐标图在内的多幅变量间的关系图
  • 二阶微分方程数学有限元法 用于FEM的代码Matlab 介绍: 该代码使用有限元方法求解具有不同边界条件(Neumann边界条件,Drichelet边界条件和周期边界条件)的二阶偏微分方程。 有关精确方程,请阅读名为的文档。
  • 二阶微分方程数学ME373-书 该存储库包含由教授的“ ME 373,机械工程方法”课程的电子教科书。 该课程的目录描述为 解决代表性机械工程问题的解析和数值方法。 课程学习目标是: 在本课程结束时,学生将能够: 用...
  • 二阶微分方程数学二阶线性DE解算器 这是我从头开始编写第二年常微分方程课程的实验室(5)。 它由1个独立的功能文件(DE2_wangrush.m)组成,我已编写了该文件来求解二阶线性微分方程。 lab5_wangrush文件包含用...
  • 本文主要介绍matlab求解微分方程(组)的dsolve和ode系列函数,并通过例子加深读者的理解。 一、符号介绍    D: 微分符号;D2表示二阶微分,D3表示三阶微分,以此类推。 二、函数功能介绍及例程 1、...
  • 二阶微分方程数学求解一阶ODE和小卡逼近 这是我从头开始编写第二年常微分方程课程的实验室(2)。 它使用MATLAB求解一阶常微分方程,并使用Picard逼近。
  • 1、如下公式: 其中x、y、m、n为参数,a、b为未知数,利用MATLAB求解方程; syms x y m n a b; [a,b]=solve('x=m*cos(a)+n*cos(a+b)','y=m*sin(a)+n*sin(a+b)','a','b'); 会得到四组解;对a(3)、b(3)、a(4)、b...
  • Matlab求解微分方程

    2019-11-06 23:19:55
    介绍: 1.在 Matlab 中,用大写字母 D 表示导数,Dy 表示 y 关于自变量的一阶导数,D2y 表示 y 关于自变量的二阶导数,依此类推.函数 dsolve 用来解决常微分方程(组)的求解问题,调用格式为 X=dsolve(‘eq...
  • 边值问题Matlab可用BVP4C命令,但感觉比较麻烦,下面用1stOpt求解,很简单快捷:CODE:Constant Pey=9.73, Nox=8.05, uxuy=3, bd=1, cx1e=2.3,b1=309.7,b2=2832.5, a1=27.8,a2=2.15,a3=-0.84,a4=0.935;Variable t=[0:...
  • 近几天时间比较充足,便学习一下S函数求解微分方程。其求解方程如下: D(q)q¨+C(q,q˙)q˙+G(q)+ω=τD\left( q \right)\ddot q + C(q,\dot q)\dot q{\rm{ + G}}\left( q \right) + \omega = \tauD(q)q¨​+C(q,q˙...
  • 二阶微分方程数学CRs CRes(Crater Resonance)是解决火山口内线性声波方程的一维(1D)数值方法。 对于特定的陨石坑几何形状和位于陨石坑底部的激励源,CRes会计算陨石坑出口处的速度和压力,并且可以将信号传播到...
  • omega方程是一个非常数系数的二阶椭圆pde,所以我们用GMRES迭代求解。 域为直角棱柱,每个轴方向的步长恒定。 两个matlab文件对应不同的边界条件: omega_eqn_zero_dirichlet_fft_z.m 对应于盒子所有面上的零...
  • 二阶微分方程组3. 非常系数的二阶微分方程二、ode23:数值解微分方程 一、dsolve:解微分方程组 1. 解一阶微分方程组 使用 MATLAB解: 或者: % diff(y,x)表示dy/dx eqn = diff(y,x) == 1+y^2; %cond 表示初始...
  • MATLAB求解微分方程

    千次阅读 多人点赞 2020-04-21 02:52:30
    一、微分方程的符号解 dsolve(‘方程1’,‘方程2’,…,‘方程n’,‘初始条件’,‘自变量’) ...例1:求解微分方程: 解: y=dsolve('D2y-2*Dy+y-x^2=0','x') 例2: 解: y=dsolve('D2y+4*Dy+29*y','y(...

空空如也

空空如也

1 2 3 4 5 6
收藏数 120
精华内容 48
关键字:

matlab求解二阶微分方程

matlab 订阅