Is there a way to control the length of t in the output of ode45?

조회 수: 51 (최근 30일)
Elie Hatem
Elie Hatem 2021년 6월 2일
댓글: Elie Hatem 2021년 6월 2일
Hello,
I am trying to implement a numerical integration using ode45.
I have the following function that I want to integrate:
Where and are vectors of size (1x199) that change depending on the time.
Also, is a vector of size (1x199) that is constant and each of its elements contain the value 9.81 .
So, I created the ode45 problem as follows:
1 - In the main script, I have the following:
%% integrate ydd to obtain yd
gt = linspace(0,1.99,199);
g = -tan(phi).*(zdd + gravity);
tspan = [0 1.99]; % time span
ic = 0; % initial condition
opts = odeset('RelTol',1e-2,'AbsTol',1e-4); % ode options
[T_yd,yd] = ode45(@(T_yd,yd) myode_ydd(T_yd,gt,g), tspan, ic, opts);
2 - Then, the function myode_ydd has the following form:
function dydt = myode(t,gt,g)
g = interp1(gt,g,t); % Interpolate the data set (gt,g) at time t
dydt = g; % Evaluate ODE at time t
When I run the code, the length of the outputs T_yd and yd is 41.
Is there a way to keep the outputs of length 199?
Thank you for taking the time to read my question

채택된 답변

Cris LaPierre
Cris LaPierre 2021년 6월 2일
편집: Cris LaPierre 2021년 6월 2일
Yes. Instead of using a time span, use a time vector. The equation will still be solved the same way (variable time step), but the results will be interpolated to the timepoints specified in your vector. Your output would then have the same number of points as your time vector, which you created.
From the documentation:
  • If tspan has two elements, [t0 tf], then the solver returns the solution evaluated at each internal integration step within the interval.
  • If tspan has more than two elements [t0,t1,t2,...,tf], then the solver returns the solution evaluated at the given points. However, the solver does not step precisely to each point specified in tspan. Instead, the solver uses its own internal steps to compute the solution, then evaluates the solution at the requested points in tspan. The solutions produced at the specified points are of the same order of accuracy as the solutions computed at each internal step.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Ordinary Differential Equations에 대해 자세히 알아보기

제품


릴리스

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by