BVP4C for solving an 3rd order ODE

24 Ansichten (letzte 30 Tage)
Syed Arafun Nabi
Syed Arafun Nabi am 29 Sep. 2022
Bearbeitet: Torsten am 2 Dez. 2023
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

Akzeptierte Antwort

Torsten
Torsten am 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
  4 Kommentare
Shriram
Shriram am 1 Dez. 2023
Thanks for your answer!
I was curious about how to implemenet this method for a problem where the boundary conditions are as follows:
y(0) = 0, y'(2) = 0 and y'(10) = 1?
How would we formulate this in MATLAB?
Torsten
Torsten am 2 Dez. 2023
Bearbeitet: Torsten am 2 Dez. 2023
You need two conditions at t = 2, not only one. Then you can solve the problem first from t=0 to t=2 with a total of 3 boundary conditions (one at t=0, two at t=2) and continue solving from t=2 to t=10, again with a total of three conditions given (two at t=2, one at t=10).
Note that the solution might have some discontinuous derivatives in t=2.
If you only prescribe a total of three conditions, there is no unique solution to the problem. BVP4C cannot be used in this case. Sometimes it's possible to get a parameter-dependent solution with "dsolve".

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Programming finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by