[已解决] Ode求解获取相应状态量随时间的微分值

[复制链接]
可乐八戒 发表于 2021-9-10 17:47:55
Ode求解,能获取状态量和相应的时间,即知道两组数据 [t,x],现在想怎样求出它的数值微分  dx/dt。或者Ode不仅得到状态量,也能得出状态量的微分,如下例,既获得状态量x(1),也获得微分量f(1):


t0=0;
tf=5;
a0=1

X=[a0]
[t, X1] = ode45(@fun,[t0:1:tf], X);   
X2=[t,X1(1)];

function f=fun(t,x)
f=zeros(1,1);
b=1
f(1)=x(1)-x(1)^2+b
end




谢谢回答的朋友

最佳答案


TouAkira 发表于 2021-9-10 18:51:20
deval函数
论坛也讨论了不止一次了,比如
积分方程嵌套微分方程
ODE方程的数据更新/引用
举个例子
  1. N = 30;
  2. tspan = [ 0, 8 ];
  3. y0 = 0;
  4. Sol = ode45( @( t, y ) 2 * t + y / 100, tspan, y0 );
  5. x = linspace( tspan( 1 ), tspan( 2 ), N );
  6. [ y, yp ] = deval( Sol, x );
  7. Y = 2 * Sol.x + Sol.y / 100;
  8. subplot( 121 );
  9. plot( Sol.x, Sol.y, 'ko-', Sol.x, Y, 'bx--', 'LineWidth', 2  );
  10. subplot( 122 );
  11. plot( x, y, 'rs-', x, yp, 'gp:', 'LineWidth', 2  );
复制代码

回复此楼

2 条回复


TouAkira 发表于 2021-9-10 18:51:20
deval函数
论坛也讨论了不止一次了,比如
积分方程嵌套微分方程
ODE方程的数据更新/引用
举个例子
  1. N = 30;
  2. tspan = [ 0, 8 ];
  3. y0 = 0;
  4. Sol = ode45( @( t, y ) 2 * t + y / 100, tspan, y0 );
  5. x = linspace( tspan( 1 ), tspan( 2 ), N );
  6. [ y, yp ] = deval( Sol, x );
  7. Y = 2 * Sol.x + Sol.y / 100;
  8. subplot( 121 );
  9. plot( Sol.x, Sol.y, 'ko-', Sol.x, Y, 'bx--', 'LineWidth', 2  );
  10. subplot( 122 );
  11. plot( x, y, 'rs-', x, yp, 'gp:', 'LineWidth', 2  );
复制代码

回复此楼

可乐八戒 发表于 2021-9-10 19:42:01
TouAkira 发表于 2021-9-10 18:51
用 deval函数 求
论坛也讨论了不止一次了,比如
《 积分方程嵌套微分方程 》

非常感谢您的回答
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
相关文章
热门教程
站长推荐
快速回复 返回顶部 返回列表