Solving ODE45 with input vectors

조회 수: 8 (최근 30일)
Jestoni Orcejola
Jestoni Orcejola 2020년 7월 31일
댓글: Alan Stevens 2020년 9월 10일
I would like to elvaluate the speed of a float as it travels through the water column with depth/time dependent seawater density. The vector rho is the density profile of the sea water from 1000m to 0m. I would like o pass it through the function to evaluate speed.
clear;
close ;
%% m files for obtaining sea water denstiy profile
Sea_Water_Density_s_t_p;
Float_Velocity_Calculation;
tspan=[0 1 1000];
y0 =[1000,0,1030];
rho=descending_rho_profile;
[t,y]=ode45(@(t,y) f(t,y,rho),tspan,y0);
hold off
plot(t,y(:,2))
grid on
Here is my function:
function speed=f(t,v,rho)
Cd=.16;
A=.0613;
m=82.25;
V=0.0809815;
%rho=1030;
g=9.81;
speed=[v(2); (rho*V*g/(m+V*rho))-(m*g/(m+V*rho))-((1/(2*m+V*rho)*Cd*A.*rho.*v(2).^2))];
end

채택된 답변

Alan Stevens
Alan Stevens 2020년 7월 31일
I assume this represents some object sinking through changing desity sea water. The following shows how you might do it, though you will need to replace my simple linear density change with whatever you think is appropriate.
tspan=0:1000;
y0 =[0 0];
[t,y]=ode45(@f,tspan,y0);
subplot(2,1,1)
plot(t,y(:,1))
grid on
xlabel('time'),ylabel('depth')
subplot(2,1,2)
plot(t,y(:,2))
grid
xlabel('time'),ylabel('speed')
function speed=f(~,y)
Cd=.16;
A=.0613;
m=82.25;
V=0.0809815;
depth = y(1);
rho = interp1([0 10000],[1030 1070], depth); %This is just a linear interpolation between two values
% Needs to be replaced with
% your own relationship.
g=9.81;
speed=[y(2); (rho*V*g/(m+V*rho))-(m*g/(m+V*rho))-((1/(2*m+V*rho)*Cd*A.*rho.*y(2).^2))];
end
  댓글 수: 6
Jestoni Orcejola
Jestoni Orcejola 2020년 9월 9일
What if I want to count down whith the interpolation. Is that possible?
Alan Stevens
Alan Stevens 2020년 9월 10일
Interpolation is just that - it doesn't matter about direction! The interpolation routine will just take the depths you specify and spit out the corresponding densities.

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Interpolation에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by