Мне нужно решить дифференциальное уравнение второй степени, и мне конкретно нужно значение первой производной от y в последний момент времени. Мой код следующий:
[T Y]=ode45(@(t y)vdp4(t,y,0.3),[0 1],[0.3/4,((3*0.3)^0.5)/2]);
Я знаю, что вывод будет содержать значения, при которых ode45 оценил функцию. Чтобы получить значения y при заданном c значении времени при наличии, рекомендуется указать более двух временных точек в документации MATLAB . Я тоже так делал.
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. В документации MATLAB я обнаружил еще кое-что: использование структуры "sol" для отмены значений для определенных c t значений. Это правильный путь к go? Для справки, мое дифференциальное уравнение имеет следующую функцию:
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
Редактировать: я предоставил значение параметра. Теперь он должен быть исполняемым.