%% 26   Andra ordningens DE i Matlab
%% 26.1   System av första ordningens DE.
% Takeaways
% Matlab har ingen lösar av andra ordningens DE
% Matlabs  ode45  kan lösa system av första ordningens DE numeriskt.
% Det är mer generellt, men omskrivning av andra ordningens DE till ett system behövs.
% Matlab har ingen inbyggd lösare av andra ordningens differentialekvationer! Det är inte så dramatiskt som det verkar. Matlabs lösare  ode45  fungerar nämligen på system av första ordningens differentialekvationer och det är (efter omskrivning) mer generellt.
% Ett system av första ordningens differentialekvationer består av ekvationer som involverar ett antal obekanta funktioner  y_1,, y_2,\, \ldots,\, y_n av en och samma variabel. Ett vilkor är att varje obekant funktions derivata i sytemet ska vara bestämd av ett uttryck som bara innehåller de obekanta funktionera och variabeln. Det betyder att systemtet ska vara av formen
% \left\{\begin{array}{rcl}
% y_1' &=& f_1(t,\, y_1,y_2,\, \ldots ,\, y_n)\\
% y_2'&=& f_2(t,\, y_1,y_2,\, \ldots ,\, y_n)\\
%  & \vdots & \\
% y_n' &=& f_n(t,\, y_1,y_2,\, \ldots ,\, y_n)\\
%
% \end{array}\right.
% där högerleden är kända uttryck som innehåller t,\, y_1,\, y_2,\, \ldots,\, y_n.
% Vi är här intresserade av att lösa andra ordningens differentialekvationera numeriskt och det kommer att gå till så att ekvationen skrivs om till ett system av första ordningens differentialekvationer med två obekanta funktioner y_1 och y_2. Ett sånt system är alltså av formen
% \left\{\begin{array}{rcl}
% y_1' &=& f_1(t,\, y_1,y_2)\\
% y_2'&=& f_2(t,\, y_1,y_2)\\
% \end{array}\right.
% där de två högerleden är kända uttryck med t,\, y_1 och y_2.
% För att lösa systemtet måst man bestämma sig för ett startvärde t_0 och ett slutvärdet t_\mbox{max} på tiden och dessutom välja vad de två obekanta funktionerna  ska vara vid starttiden, dvs ange  y_1(t_0) och y_2(t_0), de så kallade begynnelsevärdena.
% Eftersom Matlab gillar vektorer ska man ange högerleden tillsammans i en kolonnvektor, liksom begynnelsevärdena. Kommandot  ode45  levererar då en kolonnvektor med tidpunkter (som vi här ska kalla  tv  ) tillsammans med en matris med två kolonner (som vi  här ska kalla  yv  ) . Första kolonnen i  yv  innehåller approximativa funktionsvärden för funktionen y_1 i de olika tidpunkter som finns i  tv  ordnade i en kolonn. Andra kolonnen innehåller motsvarande för funktionern y_2.
%
% Uppgift 26.1    Lös systemet
% \left\{\begin{array}{rcl}
% y_1' &=& y_1/t-2y_2\\
% y_2' &=& y_2/t+2y_1
% \end{array}\right.
% numeriskt när y_1(2) = 1,\, y_2(2) = 3. Plotta lösningen.
% Lösning



%
%% 26.2   Andra ordningens DE i Matlab
% Takeaways
% Sätt y_1=y och y_2 = y_1' och använd den givna ekvationen för att bestämma  y_2' som ett uttryck med  t,\, y_2 och  y_2. Nån av dessa kan saknas. Det är OK.
% Det ger ett system av första ordningens DE.
% Ett startvärde på tiden behövs och värdet av y samt y' vid denna tid.
% Lös systemt numeriskt med  ode45 . Det ger  en kolonnvektor  tv  av tidpunkter med start i startvärdet, men även en matris  y  med två kolonner. Den första kolonnen innehåller approximativa funktionsvärden till en lösning av den ursprungliga ekvationen vid tidpunkterana i  tv .
% Andra kolonnen innehåller approximativa funktionsvärden till lösningens derivata.
% Vi vill lösa ekvationer av formen
% y'' + ay'+by = f(x)
% där y är en obekant funktion, a och b kända konstanter (men de skulle  kunna vara kända funktioner av x, samt f(x) en känd funktion.
% För att göra det med  ode45  ska vi först skriva om ekvationen till system av första ordningens DE. Sätt därför
% \left\{\begin{array}{rcl}
% y_1 &=& y \\
% y_2 &=& y_1'\quad (= y').
% \end{array}\right.
% Andra ekvationen ger  y_1' = y_2 och från den givna ekvationen har vi
% y_2' = y'' = f(x) - ay'-by = f(x) -ay_2+by_1
% Om vi därför löser systemet
% \left\{\begin{array}{rcl}
% y_1' &=& y_2 \\
% y_2' &=& f(x) -ay_2-by_1\, ,
% \end{array}\right.
% som är ett system av första ordningen, är y=y_1 och y_2=y'. Vi är bara intresserade av y_1=y, fast en lösning till systemet även ger y_2= y'.
% Efter denna omskrivning kan vi alltså med  ode45  lösa ett begynnelsevärdesproblem med en andra ordningens DE.
%
% Uppgift 26.2   Lös begynnelsevärdesproblemet
% \left\{\begin{array}{rcl}
% y'' + 2y' + 4y &= &\cos 3t \\
% y(0) &=& 1\\
% y'(0) &=& -1/2.\end{array}\right.
% Lösning
% Sätt y_1= y och y_2 = y_1' = y'. Ekvationen ger då
% y_2' = y'' = \cos 3t -2y' -4y=\cos 3t -2y_2+4y_1.
% Det ger systemet
% \left\{\begin{array}{rcl}
% y_1' &=& y_2 \\
% y_2' &=&\cos 3t-2y_2-4y_1
% \end{array}\right.
% med begynnelsevärden y_1(0 ) = y(0) = 1, y_2(0)=y'(0)=-1/2, som vi kan lösa med  ode45 . Vi är egentligen bara intresserade av y=y_1, men får även approximation av y'=y_2, vilket ju inte är så dumt! Tidiagar har vi ju kämpat med att få funktionsvärden för y' utgående från funktionsvärden på y. Här får vi dem utan ansträngning.



%