精华内容
下载资源
问答
  • 使用龙格库塔法求解二阶微分方程。可以设置仿真步长、初值,轻松更改函数
  • 一、以下公式: 其中x、y、m、n为参数,a、b为未知数,利用MATLAB求解方程;spa syms x y m n a b;code[a,b]=solve('x=m*cos(a)+n*cos(a+b)','y=m*sin(a)+n*sin(a+b)','a','b');blog会获得四组解;对a(3)、b(3)、a(4...

    一、以下公式: 其中x、y、m、n为参数,a、b为未知数,利用MATLAB求解方程;spa

    a8c52e928c9e4b1a872333e4.html

    syms x y m n a b;code

    [a,b]=solve('x=m*cos(a)+n*cos(a+b)','y=m*sin(a)+n*sin(a+b)','a','b');blog

    会获得四组解;对a(3)、b(3)、a(4)、b(4)进行化简,it

    simplify(a(3));class

    simplify(b(3));im

    simplify(a(4));db

    simplify(a(4));img

    获得:di

    a(3)= 2*atan((2*m*y - (- m^4 + 2*m^2*n^2 + 2*m^2*x^2 + 2*m^2*y^2 - n^4 + 2*n^2*x^2 + 2*n^2*y^2 - x^4 - 2*x^2*y^2 - y^4)^(1/2))/(m^2 + 2*m*x - n^2 + x^2 + y^2));dba

    b(3)= 2*atan(((- m^2 + 2*m*n - n^2 + x^2 + y^2)*(m^2 + 2*m*n + n^2 - x^2 - y^2))^(1/2)/(- m^2 + 2*m*n - n^2 + x^2 + y^2));

    a(4)= 2*atan((2*m*y + (- m^4 + 2*m^2*n^2 + 2*m^2*x^2 + 2*m^2*y^2 - n^4 + 2*n^2*x^2 + 2*n^2*y^2 - x^4 - 2*x^2*y^2 - y^4)^(1/2))/(m^2 + 2*m*x - n^2 + x^2 + y^2));

    b(4)= -2*atan(((- m^2 + 2*m*n - n^2 + x^2 + y^2)*(m^2 + 2*m*n + n^2 - x^2 - y^2))^(1/2)/(- m^2 + 2*m*n - n^2 + x^2 + y^2));

    以a(3)为例,假设x=20,其它参数未知,则:

    a(3)=subs(a(3),x,20) ; 便可将x取值替换为20;

    假设 x=20 , y=30 ,其它参数未知,则:

    a(3)=subs(a(3),{x,y},{20,30});

    二、求解矩阵方程:

    a=[1 0;0 2];

    b=[1;3];

    syms x1 x2;

    y=a*[x1;x2]+b;

    s=solve(y(1),y(2),'x1','x2');

    s.x1 %w2值

    s.x2 %w2值

    三、

    Matlab求解二阶微分方程组:

    78daf2dfba67f64438464b940e3e3f27.png

    m=1;

    g=9.8;

    k=100;

    l0=1.1;

    x0=[0.1 0 0 0]; %初始值;

    % 定义 x(1)=l, x(2)=l', x(3)=a, x(4)=a';

    dx=@(t,x)[x(2); (m*x(1)*x(4)^2-m*g*cos(x(3))-k*(x(1)-l0))/m; x(4); (-2*m*x(1)*x(2)*x(4) + m*g*x(1)*sin(x(3)))/(m*x(1)^2)];

    [t,x]=ode15s(dx,[0 10],x0);

    lstr = { '\itl', '{\itl}''', '\alpha', '\alpha''' };

    for i=1:length(lstr)

    subplot(2,2,i)

    plot(t, x(:,i));

    xlabel('Time')

    ylabel( lstr{i} )

    end

    展开全文
  • 我需要解决以下微分方程组:$\frac{dx_1}{dt} = -k_1x_1+k_2x_2-(K_R)x_1y_1$$\frac{dx_2}{dt} = k_1x_1-k_2x_2-k_3x_2-(K_R)x_2y_2$$\frac{dx_3}{dt} = k_3x_3$$\frac{dy_1}{dt} = -k_1y_1+k_2y_2-(K_R)x_1y_1$$\...

    我需要解决以下微分方程组:

    $\frac{dx_1}{dt} = -k_1x_1+k_2x_2-(K_R)x_1y_1$

    $\frac{dx_2}{dt} = k_1x_1-k_2x_2-k_3x_2-(K_R)x_2y_2$

    $\frac{dx_3}{dt} = k_3x_3$

    $\frac{dy_1}{dt} = -k_1y_1+k_2y_2-(K_R)x_1y_1$

    $\frac{dy_2}{dt} = k_1y_1-k_2y_2-k_3y_2-(K_R)x_2y_2$

    $\frac{dy_3}{dt} = k_3y_3$

    $\frac{dz_1}{dt} = -k_1z_1+k_2z_2+(K_R)x_1y_1$

    $\frac{dz_2}{dt} = k_1z_1-k_2z_2-k_3z_2+(K_R)x_2y_2$

    $\frac{dz_3}{dt} = k_3z_3$

    在t = 0时的初始条件为x2 =1。在时间t = 1时,将化合物y引入y2隔室中,y2 =10。KR的值为1e-3。

    我已经解决了使用矩阵求幂的简单得多的系统,并且想知道是否可以使用类似的方法来解决上述系统。

    我有一个隔间模型系统X,其简化版本如下所示:

    d9c63e7adf918d0bbcd64fb779ef4dc0.png

    然后,微分方程组为:

    e2cc06adca0b0cdea5b69dc20e5e1535.png

    我可以使用以下矩阵方法求解此方程组。

    首先,我编写速率矩阵[R]。从[R]可以得到一个新的矩阵[A],方法是先用每个行元素之和的负数替换[R]的每个对角元素,然后将其转置:

    641831f4fc7e571eb478c8dd2d71a777.png

    我可以通过执行以下操作来计算每个隔间中的数量:

    1c69992c679290f837f7b206551bef11.png

    在python中:

    RMatrix = model_matrix.as_matrix()

    row, col = np.diag_indices_from(RMatrix)

    RMatrix[row, col] = -(RMatrix.sum(axis=1)-RMatrix[row,col])

    AMatrix = RMatrix.T

    def content(t):

    cont = np.dot(linalg.expm(t*AMatrix), x0))

    这种方法对我来说效果很好。

    上面的模型(原始问题)仅比系统X复杂一点。在该模型中,系统X和Y的1和2隔室中的反应物结合在一起,得到系统Z中的产物。

    X + Y-> Z,反应常数为KR。

    2ed139e4c2f4fb12f35c5647d47a410d.png

    ,相应的微分方程组将是:

    83a8d01b9e0c68812acded68cc2ffff8.png

    我正在努力解决这种微分方程组(一阶和二阶)的方法,以便在给定初始条件,KR和传输速率k1,k2,k3等的情况下,在特定时间t计算每个隔室中的量...

    我可以使用一阶微分方程组的矩阵方法求解该问题吗?我在Python中还有哪些其他选择?

    提前致谢!

    解决方案

    好吧,正如评论中指出的那样,您的(更复杂的)ODE是非线性的。因此,矩阵指数方法将不再起作用。

    通常,有两种解决ODE的通用方法。首先,您可以尝试找到一种符号解决方案。在大多数情况下,您将根据有根据的猜测采取某种方法。有几种类型的ODE已知符号解决方案。

    但是,绝大多数ODE并非如此。因此,我们通常用一个数值解决方案来抗衡自己,本质上是基于右侧对ODE进行数值积分。

    结果不是显式函数,而是某个点上函数值的近似值。在python中,您可以使用scipy这种方式来解决ODE。基于您的右侧(除非出现我的任何错误),这看起来像这样:

    import numpy as np

    import scipy.integrate

    k_1 = 1

    k_2 = 1

    k_3 = 1

    K_R = 1

    def eval_f(v, t):

    [x, y, z] = np.split(v, [3, 6])

    return np.array([-k_1*x[0] +k_2*x[1] - (K_R)*x[0]*y[0],

    k_1*x[0] - k_2*x[1] - k_3*x[1] - (K_R)*x[1]*y[1],

    k_3*x[2],

    - k_1*y[0] + k_2*y[1] - (K_R)*x[0]*y[0],

    k_1*y[0] - k_2*y[1] - k_3*y[1] - (K_R)*x[1]*y[1],

    k_3*y[2],

    - k_1*z[0] + k_2*z[1] + (K_R)*x[0]*y[0],

    k_1*z[0] - k_2*z[1] - k_3*z[1] + (K_R)*x[1]*y[1],

    k_3*z[2]])

    initial = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])

    t = np.linspace(0, 1, 10)

    values = scipy.integrate.odeint(eval_f, initial, t)

    # variable x[0]

    print(values[:,0])

    这将产生以下x1值:

    [1. 0.70643591 0.49587121 0.35045691 0.25034256 0.1809533

    0.13237994 0.09800056 0.07338967 0.05557138]

    基于网格点

    [0. 0.11111111 0.22222222 0.33333333 0.44444444 0.55555556

    0.66666667 0.77777778 0.88888889 1. ]

    如果您想了解函数的行为,那么一个积分器可能就足够了。否则,我建议您在教科书中阅读有关ODE的符号方法...

    展开全文
  • 利用matlab的s函数求解二阶微分方程,是基于PD控制理论的学习,程序是正确可以用的。如有疑问可以看相应的博客文章说明
  • 使用matlab解决二元二阶微分方程组的求解问题,并画出包括极坐标图在内的多幅变量间的关系图
  • (2)).*y(1)+0.0001*(1-y(2)).^2; dy2dx = -1e4*dy1dx + ... 高阶微分方程odefile的编写求解: ......Runge-Kutta法是常微分方程的一种经典解法 ? MATLAB 对应命令:ode45 四阶Runge-Kutta公式 yn?1 ? yn ? h 6 (k1 ? ...

    (2)).*y(1)+0.0001*(1-y(2)).^2; dy2dx = -1e4*dy1dx + 3000*(1-y(2)).^2; f = [dy1dx; dy2dx]; 高阶微分方程odefile的编写求解: ......

    Runge-Kutta法是常微分方程的一种经典解法 ? MATLAB 对应命令:ode45 四阶Runge-Kutta公式 yn?1 ? yn ? h 6 (k1 ? 2k2 ? 2k3 ? k4 ) k1 ? f (......

    Runge-Kutta法是常微分方程的一种经典解法 ? MATLAB 对应命令:ode45 四阶Runge-Kutta公式 h yn ?1 ? yn ? (k1 ? 2k 2 ? 2k3 ? k 4 ) 6 k1 ? ...

    ODE) 初值问题---给出初始值 边值问题---给出边界条件 与初值常微分方程解算有关的指令 ode23 ode45 ode113 ode23t ode15s ode23s ode23tb 一.解ODE的基......

    (tn1) 方法 的近似值 yn1 时只用到 tn , yn ,是自开始 Runge-Kutta法是常微分方程的一种经典解法 MATLAB 对应命令:ode45 四阶Runge-Kutta公式 yn1 yn h......

    (tn1) 的近似值 yn1 时只用到 tn , yn ,是自开始方法 Runge-Kutta法是常微分方程的一种经典解法 MATLAB 对应命令:ode45 四阶Runge-Kutta公式 yn1 yn h ......

    [dy1dx; dy2dx]; 高阶微分方程odefile的编写 求解: y&q...

    t ? 10 s 这是一个二阶微分方程组,可以引进变量 x 2 ? t ? ? x1 ? t ? ,由此 ODE 可以化成如下形式 本文参考 薛定宇《控制系统计算机辅助设计——......

    《MATLAB 语言及应用》 大作业姓名: 学号: 学院: 班级: 题目编号: 2013 年 10 月 13 4 阶 Runge-Kutta 法求解一阶常微分方程。一、 Runge-Kutta 法的数学......

    《MATLAB 语言及应用》 大作业姓名: 学号: 学院: 班级: 题目编号: 2013 年 10 月 13 4 阶 Runge-Kutta 法求解一阶常微分方程。一、 Runge-Kutta ......

    能熟练使用 dsolve 函数解析求解常微分方程; 3. 能熟练运用 ode45、ode15s 求解器分别数值求解非刚性和刚性常微分方程; 4. 学习用求解器来绘制相图的方法。 二......

    用字符串表示常微分方程,自变量缺省时为t,导数用 D表示微分。y的2阶导数用D2y表示,依此类推。 如何调用? [T,Y,TE,YE,IE]=solver('odefun',tspan,y0,......

    4.解微分方程的 MATLAB 命令 MATLAB 中主要用 dsolve 求符号解析解,ode45,ode23,ode15s 求数值解。 s=dsolve(‘方程 1’, ‘方程 2’,…,’初始条件 1’......

    常微分方程数值解 二、初值问题求解函数 2. 函数介绍函数 ode45 ode23 问题类型 精确度 非刚性 非刚性 中等 低 说明 采用算法为4-5阶Runge-Kutta法,大多数 ......

    ode15s 短 ode23tb 刚性 梯形算法;低精度 当精度较低时,计算 时间比 ode15s 短 说明:ode23、ode45 就是极其常用得用来求解非刚性得标准形式得一阶微分 方程......

    ode45 是极其常用的用来求解非刚性的标准形式的一阶微分 方程(组)的初值问题的解的 Matlab 常用程序,其中: ode23 采用龙格-库塔 2 阶算法,用 3 阶公式作误差......

    2.3. Euler 法实用性 从图可以看出来一阶方法精确度非常差,基本上是无法用到实际工程中的,因此显式和 隐式 Euler 法只是提供一种对微分方程求解的思想。从图......

    解增长 解衰减解振荡 29 MATLAB求常微分方程数值解的函数基于龙格-库塔法, MATLAB求常微分方程数值解 的函数,一般调用格式为: [t,y]=ode23('fname',tspan,......

    Matlab解微分方程 除了上述的已知ODE外,还须有起始条件 y0=y(x0)才能解方程式,即是在x=x0时, y(x)=y0。上述各个方程式 的解析解 (analytical solution) ......

    用Matlab求常微分方程的数值解 [t,x]=solver(’f’,ts,x0,options)自变 量值 函数 值 ode45 ode23 ode113 ode15s ode23s 由待解 方程写 成的m文件名......

    展开全文
  • 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 ...
  • 文档研究了RLC电路中二维二阶微分方程组的求解问题
  • 采用4阶龙格库塔算法求解二阶微分方程。用VC实现数值分析中的算法。采用4阶龙格库塔算法求解二阶微分方程。用VC实现数值分析中的算法。采用4阶龙格库塔算法求解二阶微分方程。用VC实现数值分析中的算法。采用4阶龙格...
  • ![图片说明](https://img-ask.csdn.net/upload/202010/30/1604047742_249951.jpg) 二阶微分方程如何求解,对x,不胜感激
  • 引入首先用高数知识求解非齐次常系数微分方程image.png再利用信号与系统中冲激响应求解验证image.png利用MATLAB求解验证y=dsolve('D2y+3*Dy+2*y=exp(-t)','y(0)=1','Dy(0)=2','t')得出结果:y =(t - 2 exp(-t) + 3) ...
  • 最近在网上搜了很多基于C语言实现龙格-库塔法 求解二阶微分方程的相关文章,发现基本都没解决我的问题,代码也没开源,于是自己找了很多相关资料写了一个具体实现的例子方便大家理解,大家***窥一斑而知全豹*** ...
  • 求解的过程其实就是找到那些函数形式y(t)y(t)y(t)使得它满足上述的这种微分方程。由于表面上看这一类方程里面没有一阶导函数y′y'y′,所以这类方程也叫做纯二次微分方程。 注意实函数fff可以是变化多端的啊,所以这...
  • 二阶椭圆偏微分方程实例求解(附matlab代码).docx 《微分方程数值解法》期中作业实验报告二阶椭圆偏微分方程第一边值问题姓名:学号:班级:2013年11月19日1二阶椭圆偏微分方程第一边值问题摘要对于解二阶椭圆偏微分...
  • 在解如图所示的方程时:![图片说明](https://img-ask.csdn.net/upload/202007/15/1594789822_485207.jpg) 求解x在[0 1]范围内的数值解。 直接使用ode45函数时,未知C(0)值。 使用bvp4c函数时,又不知道如何...
  • 使用 matlab 自带的 ode45 ,方程组用句柄表示。
  • 近几天时间比较充足,便学习一下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˙...
  • 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...
  • 基于相关程序源码,我将他的一阶常微分方程求解扩充到二阶微分方程求解。并且按照此方法可以求解高阶常微分方程。 理论分析 对于任意一个微分方程,我们都可以用这个方程表示出 求解目的就是找出这样的一个方程:...
  • 二阶非线性常微分方程的打靶法二阶非线性常微分方程的打靶法 计算思路 主要分为以下五步: 给定容许误差ε,迭代初始值γ1,对k=1,2,...做: (1)用四阶Runge-Kutta 方法求解初值问,得出u1之后取其在γk的值,从而...
  • 本文主要内容:介绍一阶非齐次线性微分方程的通解的应用、特解求解举例,以及二阶微分方程可用该通解求解的情形。一、方程通解公式 一阶非齐次线性微分方程的解析式为:y'+p(x)=q(x),则其通解表达式如下:y=e^[-∫p...
  • Testode45.m代码 clear all close all clc global k1 k2 ... %求解区间 y0=[1 2]; %初值 [t,y]=ode45(@odefun,tspan,y0); a=y(:,2)' % 将每次ode45积分结果放入a向量 figure(1...
  • M=[2,0;0 1 ]; %质量矩阵K=[6 -2;-2 4]; %刚度矩阵a=0;b=0;C=a*K+b*M;dt=0.28;t=0:dt:2.8;ft0=zeros(length(K),length(t));for i=1:length(t)ft0(1,i)=10;%在节点4的竖直方向加大小为200N的阶跃力e...

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 306
精华内容 122
关键字:

二阶微分方程求解