Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
变量输入随时间变化,ode45 MATLAB_Matlab - Fatal编程技术网

变量输入随时间变化,ode45 MATLAB

变量输入随时间变化,ode45 MATLAB,matlab,Matlab,我想用MATLAB中的ode45计算一阶可微方程的解 但我想计算精确时间的解,并知道这些时刻的输入变量 设t是有n个时间点的向量,其中我要计算解,u是有n个值的输入向量,其中$uk$是瞬间$k$时$u$的值,$k$属于$t$ 我将ode45函数称为: [t,T_dot]=ode45(@f_mass,t,.01,odeset,u); f_质量是: function T_dot=f_mass(t,T,u) T_dot=(1-u)*T; end 如何指定u为ut 谢谢你,没有在Matlab上测试,

我想用MATLAB中的ode45计算一阶可微方程的解

但我想计算精确时间的解,并知道这些时刻的输入变量

设t是有n个时间点的向量,其中我要计算解,u是有n个值的输入向量,其中$uk$是瞬间$k$时$u$的值,$k$属于$t$

我将ode45函数称为:

[t,T_dot]=ode45(@f_mass,t,.01,odeset,u);
f_质量是:

function T_dot=f_mass(t,T,u)
T_dot=(1-u)*T;
end
如何指定u为ut


谢谢你,没有在Matlab上测试,只是为了帮助你,主要是从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);

u是时间t的连续函数,还是在离散的时间点上以步长变化?u改变i时间,例如:t=[0.1 0.2 0.3]u=[1 1.1 1.5 1.8]换句话说,我如何选择ode45计算解的瞬间时间?我意识到u随时间变化。问题是怎么做?是吗?ut是一个连续变化的平滑时间函数,但你只有一个离散数据值向量来表示它,而不是一个方程。您需要使用插值来创建查找表。此问题已被删除,因此您需要将其标记为重复。请参阅可能出现的潜在问题。此外,odeset是一个函数,而不是一个参数,因此您不应该直接作为参数传递给ode45。您似乎正在使用一种过时的方式将值传递给集成函数。除非您使用的是真正古老的Matlab版本,否则您不应该在ODSET返回的选项之后作为额外参数传递变量。相反,使用匿名函数并通过第一个参数传递它们,例如@t,Tf_masst,t,u。阅读更多关于。