精华内容
下载资源
问答
  • matlab微分方程代码具有高斯过程的非参数微分方程(npde) 该存储库包含npde的Python实现-一种用于学习未知微分方程的非参数模型。 两篇相关论文是 同样,该存储库将覆盖与本文一起发布的ODE模型的。 演示笔记本 ...
  • 参数微分方程matlab求解

    千次阅读 2018-04-13 13:53:54
    参数微分方程matlab求解 对于Lorenz微分方程组 ⎧⎩⎨⎪⎪x˙1=−83x1+x2x3x˙2=−10x2+10x3x˙3=−x1x2+28x2−x3{x˙1=−83x1+x2x3x˙2=−10x2+10x3x˙3=−x1x2+28x2−x3\begin{cases} \dot{x}_{1} = - \frac{8...

    含参数微分方程matlab求解

    对于Lorenz微分方程组

    x˙1=83x1+x2x3x˙2=10x2+10x3x˙3=x1x2+28x2x3 { x ˙ 1 = − 8 3 x 1 + x 2 x 3 x ˙ 2 = − 10 x 2 + 10 x 3 x ˙ 3 = − x 1 x 2 + 28 x 2 − x 3

    利用matlab中ode45求解时,先建立脚本文件描述方程组

    function y = lorenzeq(t,x)
    
        y =[-8/3*x(1)+x(2)*x(3); 
            -10*x(2)+10*x(3);
            -x(1)*x(2)+28*x(2)-x(3)];
    end

    定义初值和积分区间后,再调用ode45求解

    [t,x]=ode45('lorenzeq',[0,t_final],x0);

    即可获得变步长L-K-F算法的积分结果。
    然而,对于大部分情况,方程组中的参数并不是一定的,需要当作外部变量传入,此时,Lorenz方程可以用变量表示为:

    function y = Plorenzeq(t,x,Rio,Beta,Sigma)
    
    y =[-Rio*x(1)+x(2)*x(3); 
        -Beta*x(2)+Beta*x(3);
        -x(1)*x(2)+Sigma*x(2)-x(3)];
    end

    其中,Rio,Beta,Sigma就是等待外部传入的变量。在调用数值积分算法时,ode45调用方法为

    [t,x]=ode45(@Plorenzeq,[0,t_final],x0,[],a,b,c);

    或者

    [t,x]=ode45(@(t,x)Plorenzeq(t,x,a,b,c),[0,t_final],x0);

    其中,a,b,c分别与Rio,Beta,Sigma对应。这样,参数就能在调用积分算法时从外部传入。

    • 值得注意的是,在含控制输入的系统中,如 x˙=f(x,t,u) x ˙ = f ( x , t , u ) ,其中控制量 u u <script type="math/tex" id="MathJax-Element-3">u</script>可以看做是微分方程的参数,当控制量为常数时,可以通过上述方法使用。当控制量为时变信号时,仿真过程中可以循环分段调用ode45。
    测控系 Matlab建模与仿真 参考资料
    展开全文
  • 《matlab变参量微分方程参数识别》由会员分享,可在线阅读...1、1 变参数微分方程数值求解例子2 求 function dydt=fun(t,y,u,v) r=u+2;s=v-2; dydt=r+y(2); s*y(1)-2*s*y(2); u=1;5;15;20;25; v=6;12;18;24;30; tspa...

    《matlab变参量微分方程参数识别》由会员分享,可在线阅读,更多相关《matlab变参量微分方程参数识别(2页珍藏版)》请在人人文库网上搜索。

    1、1 变参数微分方程数值求解例子2 求 function dydt=fun(t,y,u,v) r=u+2;s=v-2; dydt=r+y(2); s*y(1)-2*s*y(2); u=1;5;15;20;25; v=6;12;18;24;30; tspan=0:1:4; y0=0 2; yy=y0; for i=1:length(tspan)-1 t,y=ode45(fun,tspan(i),tspan(i+1),y0,u(i),v(i); y0=y(end,: ); yy=yy;y0; end plot(tspan,yy,-o) 2.1 匿名函数法 f=(t,y,u,v) u+2+y(2); 。

    2、(v-2)*y(1)-2*(v-2)*y(2) u=1;5;15;20;25; v=6;12;18;24;30; tspan=0:1:4; y0=0 2; yy=y0; for i=1:length(tspan)-1 t,y=ode45(f,tspan(i),tspan(i+1),y0,u(i),v(i); y0=y(end,: ); yy=yy;y0; end plot(tspan,yy,-o) 2.2 修改加上时间tt(显示所有计算值) clear u=1;5;15;20;25; v=6;12;18;24;30; tspan=0:1:4; y0=0 2; tt =;yy=; for i=1。

    3、:length(tspan)-1 t,y=ode45(fun,tspan(i),tspan(i+1),y0,u(i),v(i); y0=y(end,: ); tt=tt;t; yy=yy;y; end plot(tt,yy);%所有的计算数值。 2.3 同过差值可以调节精度。如果u,v随着t是时刻变化的,但是通过测试手段只能测得某一时刻的u,v. clear global yy t1=0:0.1:4;%如果u,v随着t是时刻变化的,可以通过此数值来调节精度 tspan=0:1:4; u=1;5;15;20;25; u1=spline(tspan,u,t1); v=6;12;18;24;30;v。

    4、1= spline(tspan,v,t1); y0=0 2; yy=y0; for i=1:length(t1)-1 t,y=ode45(fun,t1(i),t1(i+1),y0,u1(i),v1(i); y0=y(end,: ); yy=yy;y0; end plot(t1,yy) 2 适用matlab对一个常微分方程进行参数回归 问题如下: 已知实验数据x,y,并且x,y的关系满足以下常微分方程 Dy/dx=-k*(y-y0)*y2 其中 k是需要回归的参数,y0是一个常数,通常等于y向量中的最后一个数值。要求: 1.通过lsqcurvefit或者lsqnonlin回归出系数k 2.画出模。

    5、型预测值和实验值的对比图,模型预测值可以通过得到常微分方程数值解后三次样条spline插值得到。我已经写好的程序如下,里面有错误,我自己找不出来,请高手帮帮忙,谢谢啊 可以加我的QQ交流:40231185 = function odetest clc;clear; global Je J0 data=xlsread(flux.xls); xdata=data(:,1);ydata=data(:,2); beta0=0.1;Je=ydata(end);J0=ydata(1); options=optimset(TolFun,1e-20,TolX,1e-20,MaxFunEvals,100,Algorithm,trust-region-reflective); beta=lsqcurvefit(cakefun,beta0,xdata,ydata,options); Jc=cakefun(beta,xdata); plot(xdata,ydata,o,xdata,Jc); function y=cakefun(beta,x) global J0 tspan=0 max(x); m,n=size(x); tt yy = ode23s(modeleqs,tspan,J0,beta);。

    展开全文
  • 微分方程参数优化,参数方程的微分运算,matlab源码
  • 洛仑兹方程组:定义和数值解洛仑兹方程组是常微分方程组(请参阅洛仑兹方程组)。对于实数常量 σ,ρ,β,方程组为dxdt=σ(y-x)dydt=x(ρ-z)-ydzdt=xy-βz.一个敏感系统的洛仑兹参数值是 σ=10,β=8/3,ρ=28。从 [x(0)...

    洛仑兹方程组:定义和数值解

    洛仑兹方程组是常微分方程组(请参阅洛仑兹方程组)。对于实数常量 σ,ρ,β,方程组为

    dxdt=σ(y-x)dydt=x(ρ-z)-ydzdt=xy-βz.

    一个敏感系统的洛仑兹参数值是 σ=10,β=8/3,ρ=28。从 [x(0),y(0),z(0)] = [10,20,10] 开始启动系统,查看系统从时间 0 到 100 的演变。

    sigma = 10;

    beta = 8/3;

    rho = 28;

    f = @(t,a) [-sigma*a(1) + sigma*a(2); rho*a(1) - a(2) - a(1)*a(3); -beta*a(3) + a(1)*a(2)];

    xt0 = [10,20,10];

    [tspan,a] = ode45(f,[0 100],xt0); % Runge-Kutta 4th/5th order ODE solver

    figure

    plot3(a(:,1),a(:,2),a(:,3))

    view([-10.0 -2.0])

    5d6c7c7accb350f0d6ef09f9dc98052c.png

    演变相当复杂。但在很短的时间区间内,它看起来有点像匀速圆周运动。绘制 [0,1/10] 时间区间内的解。

    [tspan,a] = ode45(f,[0 1/10],xt0); % Runge-Kutta 4th/5th order ODE solver

    figure

    plot3(a(:,1),a(:,2),a(:,3))

    view([-30 -70])

    22e81b96a48e347ab9d6d210dc2da35d.png

    对 ODE 解进行圆周路径拟合

    圆周轨迹的方程组有几个参数:

    路径与 x-y 平面间的夹角 θ(1)

    平面与 x 轴向倾角间的夹角 θ(2)

    半径 R

    速度 V

    相对于时间 0 的时移 t0

    空间 delta 中的三维位移

    根据这些参数,可确定时间 xdata 的圆周轨迹的位置。

    type fitlorenzfn

    function f = fitlorenzfn(x,xdata)

    theta = x(1:2);

    R = x(3);

    V = x(4);

    t0 = x(5);

    delta = x(6:8);

    f = zeros(length(xdata),3);

    f(:,3) = R*sin(theta(1))*sin(V*(xdata - t0)) + delta(3);

    f(:,1) = R*cos(V*(xdata - t0))*cos(theta(2)) ...

    - R*sin(V*(xdata - t0))*cos(theta(1))*sin(theta(2)) + delta(1);

    f(:,2) = R*sin(V*(xdata - t0))*cos(theta(1))*cos(theta(2)) ...

    - R*cos(V*(xdata - t0))*sin(theta(2)) + delta(2);

    要求得洛仑兹方程组在 ODE 解的时间点处的最佳拟合圆周轨迹,请使用 lsqcurvefit。为了将参数保持在合理的范围内,可对各参数设置边界。

    lb = [-pi/2,-pi,5,-15,-pi,-40,-40,-40];

    ub = [pi/2,pi,60,15,pi,40,40,40];

    theta0 = [0;0];

    R0 = 20;

    V0 = 1;

    t0 = 0;

    delta0 = zeros(3,1);

    x0 = [theta0;R0;V0;t0;delta0];

    [xbest,resnorm,residual] = lsqcurvefit(@fitlorenzfn,x0,tspan,a,lb,ub);

    Local minimum possible.

    lsqcurvefit stopped because the final change in the sum of squares relative to

    its initial value is less than the value of the function tolerance.

    绘制 ODE 解的时间点处的最佳拟合圆周点以及洛仑兹方程组的解。

    soln = a + residual;

    hold on

    plot3(soln(:,1),soln(:,2),soln(:,3),'r')

    legend('ODE Solution','Circular Arc')

    hold off

    83bb12c4fc6daf6bf6a9cd2bd2d97d65.png

    figure

    plot3(a(:,1),a(:,2),a(:,3),'b.','MarkerSize',10)

    hold on

    plot3(soln(:,1),soln(:,2),soln(:,3),'rx','MarkerSize',10)

    legend('ODE Solution','Circular Arc')

    hold off

    9b31240c87f410622aa27e5013431662.png

    对圆弧进行 ODE 拟合

    现在修改参数 σ,β,andρ,使其与圆弧最佳拟合。为了更好地拟合,也允许初始点 [10,20,10] 发生改变。

    为此,编写函数文件 paramfun,该文件采用 ODE 拟合的参数,并计算在时间 t 上的轨迹。

    type paramfun

    function pos = paramfun(x,tspan)

    sigma = x(1);

    beta = x(2);

    rho = x(3);

    xt0 = x(4:6);

    f = @(t,a) [-sigma*a(1) + sigma*a(2); rho*a(1) - a(2) - a(1)*a(3); -beta*a(3) + a(1)*a(2)];

    [~,pos] = ode45(f,tspan,xt0);

    要找到最佳参数,可使用 lsqcurvefit 来最小化新计算的 ODE 轨迹和圆弧 soln 之差。

    xt0 = zeros(1,6);

    xt0(1) = sigma;

    xt0(2) = beta;

    xt0(3) = rho;

    xt0(4:6) = soln(1,:);

    [pbest,presnorm,presidual,exitflag,output] = lsqcurvefit(@paramfun,xt0,tspan,soln);

    Local minimum possible.

    lsqcurvefit stopped because the final change in the sum of squares relative to

    its initial value is less than the value of the function tolerance.

    确定这种优化对参数的改变程度。

    fprintf('New parameters: %f, %f, %f',pbest(1:3))

    New parameters: 9.132446, 2.854998, 27.937986

    fprintf('Original parameters: %f, %f, %f',[sigma,beta,rho])

    Original parameters: 10.000000, 2.666667, 28.000000

    参数 sigma 和 beta 大约改变 10%。

    绘制修正后的解。

    figure

    hold on

    odesl = presidual + soln;

    plot3(odesl(:,1),odesl(:,2),odesl(:,3),'b')

    plot3(soln(:,1),soln(:,2),soln(:,3),'r')

    legend('ODE Solution','Circular Arc')

    view([-30 -70])

    hold off

    8866e19a711771b1973c5d37ca05e1a3.png

    ODE 拟合中的问题

    如优化仿真或常微分方程中所述,优化器可能会因为数值 ODE 解中的固有噪声而遇到问题。如果您怀疑解不理想(例如,退出消息或退出标志指示解可能不准确),则可尝试更改有限差分运算。在本示例中,我们使用了更大的有限差分步长和中心有限差分。

    options = optimoptions('lsqcurvefit','FiniteDifferenceStepSize',1e-4,...

    'FiniteDifferenceType','central');

    [pbest2,presnorm2,presidual2,exitflag2,output2] = ...

    lsqcurvefit(@paramfun,xt0,tspan,soln,[],[],options);

    Local minimum possible.

    lsqcurvefit stopped because the final change in the sum of squares relative to

    its initial value is less than the value of the function tolerance.

    在这一情况中,使用这些有限差分选项不能改进解。

    disp([presnorm,presnorm2])

    20.0637 20.0637

    展开全文
  • 7(multiple variable differentical equtation parameter estimation using matlab lsqcurvefit function
  • 微分方程和偏微分方程的区别

    千次阅读 2019-12-30 10:11:45
    凡含有参数,未知函数和未知函数导数 (或微分) 的方程,称为微分方程,有时简称为方程,未知函数是一元函数的微分方程称作常微分方程,未知数是多元函数的微分方程称作偏微分方程.微分方程中出现的未知函数最高阶导数的...

           凡含有参数,未知函数和未知函数导数 (或微分) 的方程,称为微分方程,有时简称为方程,未知函数是一元函数的微分方程称作常微分方程,未知数是多元函数的微分方程称作偏微分方程.微分方程中出现的未知函数最高阶导数的阶数,称为微分方程的阶.定义式如下: F(x, y, y¢, ., y(n)) = 0

           如果一个微分方程中出现的未知函数只含一个自变量,这个方程叫做常微分方程,也简称微分方程;如果一个微分方程中出现多元函数的偏导数,或者说如果未知函数和几个变量有关,而且方程中出现未知函数对几个变量的导数,那么这种微分方程就是偏微分方程.

           常微分方程,描述的是一个量随一个自变量变化的规律,如位置随时间的变化规律.偏微分方程组,描述的是一个量随着2个或更多自变量变化的规律.比如温度随着时间位置的变化.这样就需要4个(分别是时间,和三个空间维度)

           常微分方程是求带有导数的方程,比如说y'+4y-2=0这样子的,偏微分方程是解决带有偏导数的方程.常微分方程比较简单,只是研究带有导数的方程、方程组之类的通解、特解,现实生活中的很多问题与常微分方程有关系,所以研究起来很有必要.但是对于很多高尖端的问题都是偏微分方程,比如很多著名的物理方程:热传导方程、拉普拉斯方程等等,这就是的偏微分方程很难,它不仅仅是研究方程解的一门学科,因为有些方程很难,根本就求不出解,或者常规方法求解十分困难,所以偏微分方程还着重研究解的分布、状态等等.  

            定义2 任何代入微分方程后使其成为恒等式的函数,都叫做该方程的解.若微分方程的解中含有任意常数的个数与方程的阶数相同,且任意常数之间不能合并,则称此解为该方程的通解(或一般解).当通解中的各任意常数都取特定值时所得到的解,称为方程的特解.

      一般地说,n 阶微分方程的解含有 n个任意常数.也就是说,微分方程的解中含有任意常数的个数和方程的阶数相同,这种解叫做微分方程的通解.通解构成一个函数族.

      如果根据实际问题要求出其中满足某种指定条件的解来,那么求这种解的问题叫做定解问题,对于一个常微分方程的满足定解条件的解叫做特解.对于高阶微分方程可以引入新的未知函数,把它化为多个一阶微分方程组.


    常微分方程
           常微分方程的概念、解法、和其它理论很多,比如,方程和方程组的种类及解法、解的存在性和唯一性、奇解、定性理论等等.下面就方程解的有关几点简述一下,以了解常微分方程的特点.   

           求通解在历史上曾作为微分方程的主要目标,一旦求出通解的表达式,就容易从中得到问题所需要的特解.也可以由通解的表达式,了解对某些参数的依赖情况,便于参数取值适宜,使它对应的解具有所需要的性能,还有助于进行关于解的其他研究.

      后来的发展表明,能够求出通解的情况不多,在实际应用中所需要的多是求满足某种指定条件的特解.当然,通解是有助于研究解的属性的,但是人们已把研究重点转移到定解问题上来.

      一个常微分方程是不是有特解呢?如果有,又有几个呢?这是微分方程论中一个基本的问题,数学家把它归纳成基本定理,叫做存在和唯一性定理.因为如果没有解,而我们要去求解,那是没有意义的;如果有解而又不是唯一的,那又不好确定.因此,存在和唯一性定理对于微分方程的求解是十分重要的.

      大部分的常微分方程求不出精确的解,而只能得到近似解.当然,这个近似解的精确程度是比较高的.另外还应该指出,用来描述物理过程的微分方程,以及由试验测定的初始条件也是近似的,这种近似之间的影响和变化还必须在理论上加以解决.

    常微分方程实例
      下下列方程都是微分方程 (其中 y, v, q 均为未知函数).

      (1) y'= kx, k 为常数;   (2) ( y - 2xy) dx + x2 dy = 0;   (3) mv(t) = mg - kv(t);
     

    展开全文
  • 注:本文是刘然对常微分方程模型的简介什么是常微分方程模型常用的回归分析聚焦于直接建立响应变量和协变量之间的关系,之后根据建立的模型进行分析和预测,比如常见的线性回归模型:。而如果我们感兴趣的变量是随...
  • 微分方程 指描述未知函数的导数与自变 量之间的关系的方程未知函数是一元函 数的微分方程称作 常微分方程 未知函数 是多元函数的微分方程称作 偏微分方程 MATLAB matrix&laboratory 意为矩 阵工厂矩阵实验室 ....
  • 4.8.2 偏微分方程在自然科学的很多领域内,都会遇到微分方程初值问题,特别是偏微分方程,它的定解问题是描述自然界及科学现象的最重要的工具。可以说,几乎自然界和各种现象都可以通过微分方程(特别是偏微分方程)来...
  • 微分方程生成映射网格。比映射的质量更好。下一步可以改成参数化的
  • 这是我所要用的二阶微分方程,现已通过试验得到数据,想通过该方程拟合数据得到方程中的四个参数,通过查询有说二阶微分方程转化为差分方程或者积分方程,然后MATLAB编程拟合,想知道如何转化为差分方程或者积分方程...
  • 我们将研究非线性算子微分方程的解x(t),其变化取决于因果算子T和算子A(t)的半群以及所有初始参数(t0,x0)。 几乎所有t≤t0且φ(t0)=φ0时,初始信息均描述为x(t)=φ(t)。 我们将研究这类非预期算子...
  • SIR传染病模型用的微分方程,可以实现现阶段参数优化和模拟。
  • 应用matlab软件对常微分方程求解;前沿;一常微分方程组的符号解(4)若边界条件少于方程组的阶数则返回的结果r中会出现任意常数C1C2(6)若没有给定输出参量则在命令窗口显示解列表若该命令找不到解析解则返回一警告信息...
  • Matlab偏微分方程快速上手:使用pdetool工具箱求解二维偏微分方程,适用于数学建模、数学实验,简单的偏微分方程数值计算与工程问题。
  • 微分方程参数拟合 此程序的功能是 输出变量微分系统 输出变量 微分系统参数 输入变量 若输入已知通过实验设计得出不同输入下的输出值如果我知道微分系统的方程形式但是无法确定微分系统的参数做此程序的目的就是...
  • 一类含有参数的分数阶微分方程解的存在性,郑俊,,本文考虑了一类含有参数的非线性分数阶微分方程在边值条件下解的存在性问题。通过线性分数阶微分方程与非线性分数阶微分方程解之
  • 微分方程的数值解系列博文: 偏微分方程的数值解(一):定解问题 & 差分解法 偏微分方程的数值解(二): 一维状态空间的偏微分方程的 MATLAB 解法 偏微分方程的数值解(三): 化工应用实例 ----------触煤反应...
  • odefun是微分方程的定义函数,所以odefun定义独立参数(典型的是时间t)的导数y‘ 以及y和其他的参数。在MATLAB6.5(R13)中,推荐使用函数句柄作为odefun。 例如,ode45(@xdot,tspan,y0),而不是用 ode45('...
  • 微分方程模型

    2020-07-23 14:26:41
    微分方程模型简介 在研究生物、经济等学科的实际问题时,常常会联系到某些变量的变化率或导数,这样所得到变量之间的关系式就是微分方程微分方程反映的是变量之间的间接关系,因此,要得到直接关系,就得求解微分...
  • 原问题为利用ode45求解下面微分方程:初值为可以转为二阶微分方程利用Matlab求解,下面为源代码functionMyode45tspan = [2,4]; %求解区间y0 = [1 0]; %y0的初值形式为行向量[t,x] = ode45(@odefun,tspan,y0); %使用...
  • 1stOpt计算:Elapsed Time (Hr:Min:Sec:Msec): 00:00:19:284Root of Mean Square Error (RMSE): 1.18378166169196Sum of Square Error: 7.00669511279087Correlation Coef. (R): 0.999185213441573R-Square: 0....
  • 求助二阶微分方程参数估计-shuju.txt 微分方程r''=-g*r/|^3)-a*r'*b/ r=[x y z]是三维向量 知道t在[50,170]间隔为0.2秒上r的值,但r'不知道,求微分方程参数a,b,c的值,能不能求出r'的一些值啊?求高手解答,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,154
精华内容 7,261
关键字:

参数微分方程