I was trying to understand how to deal with time-dependent parameter in ODE solver. Having this error "Error using interp1>reshapeAndSortXandV - X and V must be of the same length."
Please explain what the issue.
tspan = 1:5;
y0 = 0;
a = 1:5;
[t,y] = ode45(@(t,y)fun(t,y,a),tspan, y0);
function v = fun(t,y,a)
t_dummy = t;
a = interp1(t_dummy,a,t);
v = 2*a.*t;
end

 채택된 답변

Star Strider
Star Strider 2023년 11월 10일

0 개 추천

The interp1 use in the documentation section for time-dependent parameters refers to vector arguments with a dependent variable as a function of time. The interpolation would then return an interpolated value of the dependent variable at a specific time.
You need to pass ‘tv’ (or some other time vector with appropriate limits) to ‘fun’ as well in order to do the interpolation —
tspan = 1:5;
y0 = 0;
a = 1:5;
tv = 1:5;
[t,y] = ode45(@(t,y)fun(t,y,a,tv),tspan, y0);
figure
plot(t, y)
grid
xlabel('Time')
ylabel('Y')
function v = fun(t,y,a,tv)
a = interp1(tv,a,t);
v = 2*a.*t;
end
That produces a consistent result.
.

댓글 수: 2

Monirul Hasan
Monirul Hasan 2023년 11월 10일
Got it. Thanks you.
Star Strider
Star Strider 2023년 11월 10일
As always, my pleasure!

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

제품

릴리스

R2022b

태그

질문:

2023년 11월 10일

댓글:

2023년 11월 10일

Community Treasure Hunt

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

Start Hunting!

Translated by