Non-divergence as boundary condition for ODE
Mostrar comentarios más antiguos
I have a system of two second-order ODEs.
- The ODE for
is:
where:
- The ODE for
is:
where:
where the coefficients
and
depend on the the first derivative
and where the parameters are given.
% Parameters
gamma = 4;
theta2 = 0.0025;
theta1 = - 0.0150;
sigmaD = 0.0240;
r = 0.0041;
delta = 1;
p12 = 0.1000;
p21 = 0.0167;
pi2 = p12 / (p12 + p21);
Gamma_pi = (theta2 - theta1) / (r * (r + p12 + p21));
I want to solve this system imposing as sole boundary condition on the ODEs of
and
the fact that they must not diverge to either
or
over the interval
. I start by writing the system of second order ODEs as a sytem of first order ODEs in an ode_Sf.m file:
function dy = ode_Sf(pi, y, gamma, theta2, theta1, sigmaD, r, delta, p12, p21, pi2, Gamma_pi)
h = (theta2 - theta1) / sigmaD * pi * (1 - pi);
Q3 = h^2 / 2;
Q1 = gamma * sigmaD * h + r * gamma * Gamma_pi * h^2 - (p12 + p21) * (pi2 - pi);
Q0 = (gamma * r)^2 / 2 * Gamma_pi^2 * h^2 + gamma^2 * r * Gamma_pi * sigmaD * h + r * log(delta);
P3 = Q3;
P1 = gamma * r * Gamma_pi * h^2 + gamma * sigmaD * h - (p12 + p21) * (pi2 - pi) + y(2) * h^2;
P0 = gamma * r * Gamma_pi^2 * h^2 + 2 * gamma * Gamma_pi * sigmaD * h + y(2) * Gamma_pi * h^2 + y(2) / r * sigmaD * h;
dy = [y(2)
y(2)^2 + y(2) * Q1 / Q3 + y(1) * r / Q3 + Q0 / Q3
y(4)
y(4) * P1 / P3 + y(3) * r / P3 + P0 / P3];
end
Then I define the model and find the solution over
where the interval is smaller than
since the ODEs have singular points at
and
.
%% Model
pi_range = linspace(0.001, 0.995, 994);
y0 = [-0.0001 -300 -105 -30];
model = @(pi, y) ode_Sf(pi, y, gamma, theta2, theta1, sigmaD, r, delta, p12, p21, pi2, Gamma_pi);
[pi, y] = ode45(model, pi_range, y0);
I want my final solutions to be negative, convex and U-shaped. I provide here an example for
. Notice that in my code I set
while my final implementation should include different values of gamma.

Unfortunately, my solutions explode to infinity and I don't know how to solve this problem.
% Plot f
figure;
plot(y(:,1));
xlabel('\pi');
ylabel('f(\pi)');
grid on;
% Plot S
figure;
plot(y(:,3));
xlabel('\pi');
ylabel('S(\pi)');
grid on;
Could you advise how to impose the boundary condition that the ODEs do not explode?
Respuestas (0)
Categorías
Más información sobre Ordinary Differential Equations en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

