4.6 Solve homogeneous 2nd order ODE, constant coefficients (BVP)

Problem: Solve \[ y^{\prime \prime }\left ( t\right ) +t\ y\left ( t\right ) =0 \] with the boundary conditions \[ y\left ( 0\right ) =3,y\left ( 20\right ) =-1 \] For solving with Matlab, the ODE is first converted to state space as follows

Given \(y^{\prime \prime }\left ( t\right ) +t\ y\left ( t\right ) =0\), let \begin {align*} x_{1} & =y\\ x_{2} & =y^{\prime }\\ & =x_{1}^{\prime } \end {align*}

Therefore \[ x_{1}^{\prime }=x_{2}\] And \begin {align*} x_{2}^{\prime } & =y^{\prime \prime }\\ & =-t\ y\\ & =-t\ x_{1} \end {align*}

This results in \[\begin {bmatrix} x_{1}^{\prime }\\ x_{2}^{\prime }\end {bmatrix} =\begin {bmatrix} 0 & 1\\ -t & 0 \end {bmatrix}\begin {bmatrix} x_{1}\\ x_{2}\end {bmatrix} \] Now bvp4c() can be used.

Mathematica

Clear[y,t]; 
eq  = y''[t]+t y[t]==0; 
ic  = {y[0]==3,y[20]==-1}; 
sol = First@DSolve[{eq,ic},y[t],t]; 
 
y   = y[t]/.sol
 

\[ \frac {-\sqrt {3} \text {Ai}\left (\sqrt [3]{-1} t\right )+\text {Bi}\left (\sqrt [3]{-1} t\right )-3\ 3^{2/3} \Gamma \left (\frac {2}{3}\right ) \text {Bi}\left (20 \sqrt [3]{-1}\right ) \text {Ai}\left (\sqrt [3]{-1} t\right )+3\ 3^{2/3} \Gamma \left (\frac {2}{3}\right ) \text {Ai}\left (20 \sqrt [3]{-1}\right ) \text {Bi}\left (\sqrt [3]{-1} t\right )}{\sqrt {3} \text {Ai}\left (20 \sqrt [3]{-1}\right )-\text {Bi}\left (20 \sqrt [3]{-1}\right )} \]

Plot[Re[y],{t,0,20}, 
     FrameLabel->{{"y(t)",None}, 
      {"t","Solution"}}, 
     Frame->True, 
     GridLines->Automatic, 
     GridLinesStyle->Automatic, 
     RotateLabel->False, 
     ImageSize->300, 
     AspectRatio->1, 
     PlotRange->All, 
     PlotStyle->{Thick,Red}, 
     Exclusions->None]
 

pict

Matlab

function e56 
 
t0 = 0; %initial time 
tf = 20; %final time 
 
solinit = bvpinit(linspace(t0,tf,5),[3 -1]); 
 
sol = bvp4c(@odefun,@bcfun,solinit); 
 
plot(sol.x(1,:),sol.y(1,:),'r') 
title('solution'); 
xlabel('time'); 
ylabel('y(t)'); 
grid; 
set(gcf,'Position',[10,10,320,320]); 
 
function dydt=odefun(t,y) 
dydt=[y(2); -t.*y(1)]; 
 
function res=bcfun(yleft,yright) 
res=[yleft(1)-3 
    yright(1)+1];
 

pict