Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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
Matlab 用时间相关值求解常微分方程_Matlab_Ode - Fatal编程技术网

Matlab 用时间相关值求解常微分方程

Matlab 用时间相关值求解常微分方程,matlab,ode,Matlab,Ode,我需要帮助解决以下微分方程使用函数ode45从matlab。 我的问题是方程上的时间相关函数。 方程式: d(C(t)*W(t))/dt=F1-F2 F1和F2是我想传递给函数的常量。 下面是我正在使用的代码示例。为了解决ODE,我使用Euler的方法,但我想使用ODE45或适当的ODE解算器来比较结果。Euler方法中的错误值可能导致错误信息。 这是C的函数: function CV=Cfunction(t,CVS,CVD) T =0.0125; %Duration TS

我需要帮助解决以下微分方程使用函数ode45从matlab。 我的问题是方程上的时间相关函数。

方程式:
d(C(t)*W(t))/dt=F1-F2

F1和F2是我想传递给函数的常量。 下面是我正在使用的代码示例。为了解决ODE,我使用Euler的方法,但我想使用ODE45或适当的ODE解算器来比较结果。Euler方法中的错误值可能导致错误信息。

这是C的函数:

function CV=Cfunction(t,CVS,CVD)
T =0.0125;          %Duration 
TS=0.0050;          %Duration 
tcS=0.0025;         %time constant
tcD=0.0075;         %time constant
tc=rem(t,T);        % tc=time in the current cycle, 
if(tc<TS)
  e=(1-exp(-tc/tcS))/(1-exp(-TS/tcS));
  CV=CVD*(CVS/CVD)^e;
else
  e=(1-exp(-(tc-TS)/tcD))/(1-exp(-(T-TS)/tcD));
  CV=CVS*(CVD/CVS)^e;
end
函数CV=C函数(t、CVS、CVD)
T=0.0125;%期间
TS=0.0050;%期间
tcS=0.0025;%时间常数
tcD=0.0075;%时间常数
tc=雷姆(t,t);%tc=当前循环中的时间,

如果(tc看起来你的方程有一个简单的解析解。假设所有参数都是双参数,Whandle是一个函数句柄,Whandle(t)是非零的,[0,t]上的积分等等

function y = C(t, Whandle, F1, F2)
   y = 1/Whandle(t) * (F1 - F2) * t
end

到目前为止,你尝试过什么?你看过文档了吗?例如,你有没有尝试过任何例子?这是一个编程网站,你应该编辑你的问题,将方程转化为代码。我继续编辑了这篇文章,以包含我目前的代码。但是,我没有使用任何ODE解算器。为了解决ODE,我正在实现Euler的方法。我想知道如何使用任何一个解算器来解ODE,以便比较结果并确定使用Euler方法的误差值。我回顾了我最初在问题中提出的方程,意识到我犯了一个错误,我已经纠正了。C和W都是依赖于时间的函数。没关系,equati关于仍然可积,刚刚编辑了我的答案
function y = C(t, Whandle, F1, F2)
   y = 1/Whandle(t) * (F1 - F2) * t
end