BVP4C for solving an 3rd order ODE

11 views (last 30 days)
I am stuck in boundary condition which can't be slove with ode45.
to solve this problem can you please help me with boundary condition and convert it BVP4C ?
my progress is -
tRange = [0 10];
function dYdt = odefun(t,Y)
% Extract Y1,Y2,Y3 the element of Y
Y1 = Y(1);
Y2 = Y(2);
Y3 = Y(3);
% Expression for dY1dt, dY2dt,dY3dt.
dY1dt = Y2;
dY2dt = Y3;
dY3dt = -(1/2)*Y1*Y3;
% Create dYdt, column vector containing dY1dt, dY2dt, and dY3dt
dYdt = [dY1dt; dY2dt; dY3dt];
end

Accepted Answer

Torsten
Torsten on 29 Sep 2022
tmesh = linspace(0,10,100);
solinit = bvpinit(tmesh, [0 1 0]);
sol = bvp4c(@odefun, @bcfcn, solinit);
plot(sol.x, sol.y)
function dYdt = odefun(t,Y)
% Extract Y1,Y2,Y3 the element of Y
Y1 = Y(1);
Y2 = Y(2);
Y3 = Y(3);
% Expression for dY1dt, dY2dt,dY3dt.
dY1dt = Y2;
dY2dt = Y3;
dY3dt = -(1/2)*Y1*Y3;
% Create dYdt, column vector containing dY1dt, dY2dt, and dY3dt
dYdt = [dY1dt; dY2dt; dY3dt];
end
function res = bcfcn(ya,yb)
res = [ya(1);ya(2);yb(2)-1];
end
  2 Comments
Torsten
Torsten on 29 Sep 2022
Yes, and sol.y(3,:) is d^2y/dt^2.

Sign in to comment.

More Answers (0)

Categories

Find more on Numerical Integration and Differential Equations in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by