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
如何获取y和y';对于Matlab中ode45中的t的特定值?_Matlab_Ode - Fatal编程技术网

如何获取y和y';对于Matlab中ode45中的t的特定值?

如何获取y和y';对于Matlab中ode45中的t的特定值?,matlab,ode,Matlab,Ode,我必须解一个二阶微分方程,我特别需要y在最后一个时间点的一阶导数的值。我的代码如下: [T Y]=ode45(@(t y)vdp4(t,y,0.3),[0 1],[0.3/4,((3*0.3)^0.5)/2]); 我知道输出将包含ode45计算函数的值。为了获得特定时间点的y值,建议在中给出两个以上的时间点。我也这么做了 tspan=[0:0.01:1] [T Y]=ode45(@(t y)vdp4(t,y,0.3),tspan,[0.3/4,((3*0.3)^0.5)/2]); T向量仍然

我必须解一个二阶微分方程,我特别需要y在最后一个时间点的一阶导数的值。我的代码如下:

[T Y]=ode45(@(t y)vdp4(t,y,0.3),[0 1],[0.3/4,((3*0.3)^0.5)/2]);
我知道输出将包含ode45计算函数的值。为了获得特定时间点的y值,建议在中给出两个以上的时间点。我也这么做了

tspan=[0:0.01:1]
[T Y]=ode45(@(t y)vdp4(t,y,0.3),tspan,[0.3/4,((3*0.3)^0.5)/2]);
T向量仍然没有从0到1的所有值(最后一个值是0.39)。这种情况尤其发生在多次执行ode45函数之后。我在中发现了一些其他的东西:使用“sol”结构来对特定t值的值进行贬值。这样做对吗? 作为参考,我的微分方程在下面的函数中

function dy = vdp4(t,y,k)

dy = zeros(2,1);    % a column vector

dy(1)=y(2);
dy(2)=(y(2)^2-2*t*y(2)+2*y(1))/k+2;

end

编辑:我提供了参数值。它现在应该是可执行的。

尝试绘制解决方案,您会找到答案

您是否收到任何关于时间步长变得太小或值超过浮点范围的错误消息或警告?请通过提供所有参数使示例可执行,在本例中为
k
。我提供了k值。是的,有关于时间步长的警告。一般来说,方程式
v'=(v^2+c)/k
有一个包含切线的解,因此在有限时间内显示极点,正如您在
t=0.39262926
中所发现的那样。这是精确解的一个特点,因此,在任何半途而废的数值解中都无法避免。是否有一些物理背景可以让您期望有界解?这可能是一个建模错误。是书写的
/k+2
还是
/(k+2)
?微分方程由y'(t)=((y'(t))^2-2ty'(t)+2y(t))/k)+2给出。