如何获取y和y';对于Matlab中ode45中的t的特定值?
我必须解一个二阶微分方程,我特别需要y在最后一个时间点的一阶导数的值。我的代码如下:如何获取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向量仍然
[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给出。