Datorlaboration 4 (D4) i Linjär Algebra

Denna laboration handlar om system av differentialekvationer $x^\prime
= Ax$, med begynnelsevillkor x(0)=c. Här är A en $n \times
n-$matris. MATLAB producerar lösningen med hjälp av kommandot % latex2html id marker 173
$ \tt
expm $. Om A är diagonaliserbar med A=PDP-1, så är % latex2html id marker 179
$\mbox{expm}(A)= P\mbox{exp}(D) P^{-1}$, där % latex2html id marker 181
$\mbox{exp}(D)$ fås genom att applicera exponentialfunktionen på diagonalelementen.

1.
Använd MATLAB för att finna lösningen till följande begynnelsevärdesproblem:

\begin{displaymath}
\left\{ 
\begin{array}
{rrrrr}
 x_1^\prime & = &-2x_1 &+x_2,...
 ...\\  x_2^\prime & = &-8x_1 &+p x_2, & x_2(0)=1\end{array}\right.\end{displaymath}

där $p \in \{1.9,2.0,2.1\}$. Rita kurvan (x1(t),x2(t)) på intervallet $0 \leq t \leq 100$ för dessa p-värden.
2.
Rörelsen hos ett block, som är fäst vid en fjäder, kan (i en enkel modell) beskrivas med hjälp av differentialekvationen

\begin{displaymath}
y^{\prime \prime} +b y^\prime +a y=0\end{displaymath}

där a står för fjäderns kraft och b för friktionen. Skriv om denna ekvation som ett system genom att sätta $x_1=y,x_2 = y^\prime$. Studera därefter fjäderns rörelse om $y(0)=1,y^\prime(0)=0$ i följande fall:

\begin{displaymath}
\begin{array}
{rr}
 a=1.00,& b=0.20\\  a=1.00,& b=0.00\\  a=0.01,& b=0.20\end{array}\end{displaymath}

Beräkna lösningen med hjälp av MATLAB. Rita lösningskurvan y=y(t) på något lagom långt intervall $0\leq t \leq T$. Vad ser ut att hända då $t \rightarrow \infty$ i de tre fallen?
3.
Tre lika stora vattentankar innehåller 1000 liter vatten vardera. Saltmängden i i tankarna förändras hela tiden så att en viss procentandel ajk av saltmängden i tank k strömmar till tank j varje sekund. Ett hundra kilo salt finns löst i en av tankarna. Låt nu x1(t), x2(t), x3(t) vara mängden salt i de tre tankarna vid tiden t. Då gäller följande samband:

\begin{displaymath}
\left\{ 
\begin{array}
{rrrrr}
x_1^\prime & = &-(a_{21}+a_{3...
 ..._{31}x_1 & + a_{32}x_2 & - (a_{13}+a_{23})x_3\end{array}\right.\end{displaymath}

Hur fördelar sig saltet på lång sikt?
Siffervärden:
$a_{12}=0.2 \%, \; \; a_{13}=0.6 \% \\  a_{21}=1.0 \%, \; \; a_{23}=0.1\% \\ a_{31}=0.3 \%, \; \; a_{32}=0.8 \%$



Redovisning
Redovisningen skall innehålla namn, grupparbetsgrupp samt

Den som inte vill hitta på ett eget program för att lösa system av differentialekvationer kan kanske ha hjälp av följande råa program:

function [t,x]=solveode(matris,start,stopptid,tidssteg)
if nargin<4 tidssteg=1; end;
x(:,1)=start;
for t=tidssteg:tidssteg:stopptid
x=[x,expm(t*matris)*start];
end;
t=0:tidssteg:stopptid;

Filen sparas under namnet solveode.m

Man använder detta program så här:

Mata först in systemets koefficienter i en matris, kallad t.ex. A
Mata sedan in startvärdena i en kolonnvektor, säg c.
Ge sedan (exempelvis) kommandot

>> [t,x]=solveode(A,c,10,0.1)

Detta ger lösningen x till systemet $x^\prime = Ax,x(0)=c$
med $t=0, \; 0.1, \; 0.2, \; \ldots \ldots\; , 9.9, \; 10$

Man kan sedan rita upp lösningarna med kommandon i stil med
>> plot(x(1,:),x(2,:))
(som ritar kurvan $t \rightarrow (x_1(t),x_2(t))$)
eller
>> plot(t,x(1,:),t,x(2,:))
(som ritar kurvorna $t \rightarrow x_1(t)$ och $t \rightarrow x_2(t))$