我想在MATLAB中使用ode45计算一阶可微分方程的解。
但我想在精确的时间内计算解决方案并知道那些瞬间的输入变量。
设t是具有n个时刻的向量,我想要计算解,你输入向量也有n个值,其中$ u(k)$是$ u $的值,即时$ k $, $ k $属于$ t $。
我将ode45函数称为:
[t,T_dot]=ode45(@f_mass,t,.01,odeset,u);
和f_mass是:
function T_dot=f_mass(t,T,u)
T_dot=(1-u)*T;
end
如何指定u是u(t)?
由于
答案 0 :(得分:0)
尚未在Matlab上进行测试,仅用于提供帮助,并且主要是由https://fr.mathworks.com/help/matlab/ref/ode45.html#bu00_4l_sep_shared-options ODE(带有时变术语)组成的
function T_dot=f_mass(t,T,u, ut)
f = interp1(ut,u,t);
T_dot=(1-f)*T;
end
然后用ode 45求解
ut=[0 0.1 0.2 0.3];
u=[1 1.1 1.5 1.8];
[t,T] = ode45(@(t,T) odefun(t,T,u,ut), ut, 0.01, odeset);