Как мне получить значения y и y 'для указанных c значений t из ode45 в Matlab? - PullRequest
0 голосов
/ 12 января 2020

Мне нужно решить дифференциальное уравнение второй степени, и мне конкретно нужно значение первой производной от 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

Редактировать: я предоставил значение параметра. Теперь он должен быть исполняемым.

1 Ответ

0 голосов
/ 12 января 2020

Попробуйте построить решение, вы найдете ответ

...