Scilab - Gewöhnliche Differenzialgleichungen

Scilab
Gewöhnliche Differenzialgleichungen
J. Koch, 13. November 2015
Scilab Gewöhnliche Differenzialgleichungen
J. Koch, 13. November 2015
1/9
Gliederung
1. Gewöhnliche Differenzialgleichungen
Scilab Gewöhnliche Differenzialgleichungen
J. Koch, 13. November 2015
2/9
Gliederung
1. Gewöhnliche
Differenzialgleichungen
Problemstellung
Normalform
DGL-Funktion
Euler-Verfahren
DGLs höherer Ordnung
DGL-Funktion 2
Scilab Gewöhnliche Differenzialgleichungen
J. Koch, 13. November 2015
3/9
Problemstellung
Ziel
I
Beispiel
Berechne numerische
Näherungslösungen eines
Anfangswertproblems auf einem
endlichen Intervall
I
Differentialgleichung
y 0 (x) +
I
y (x)
+ 6x = 0
1+x
Anfangswert
y (0) = 3
I
Intervall
x ∈ [0, 5]
Scilab Gewöhnliche Differenzialgleichungen
J. Koch, 13. November 2015
4/9
Normalform
Normalform
I
Beispiel
Differentialgleichung nach der
1. Ableitung auflösen
I
y 0 (x) = f (x, y (x))
I
Differentialgleichung wird durch
Funktion in zwei Veränderlichen
beschrieben
y 0 (x) +
I
Funktioniert nur für explizite
Differentialgleichungen
1. Ordnung
y (x)
+ 6x = 0
1+x
Auflösen nach der 1. Ableitung
y 0 (x) = −
f (x, y )
I
Gewöhnliche
Differenzialgleichung
I
y (x)
− 6x
1+x
Funktion für die 1. Ableitung
f (x, y ) = −
y
− 6x
1+x
Scilab Gewöhnliche Differenzialgleichungen
J. Koch, 13. November 2015
5/9
DGL-Funktion
DGL-Funktion
I
Schreibe Funktion, die bei
Eingabe von x und y den Wert
der 1. Ableitung berechnet
y 0 (x) = f (x, y (x))
I
Funktin einbinden
−−>e x e c d g l . s c i
I
Funktin aufrufen
−−>d g l ( 0 , 3 )
ans =
− 3.
f u n c t i o n yp = d g l ( x , y )
//
//
−y ( x )
// DGL : y ’ ( x ) = −−−−− − 6 x
//
1 + x
//
// INPUT : x
. . . x−Wert
//
y
. . . y−Wert
//
// OUTPUT: yp . . . y ’ ( x )
//
yp = −y /(1+ x )−6∗ x ;
endfunction
scilab/dgl.sci
Scilab Gewöhnliche Differenzialgleichungen
J. Koch, 13. November 2015
6/9
Euler-Verfahren
figure (1);
clf ;
m t l b _ a x i s ( [ 0 5 −60 1 0 ] )
Euler–Verfahren
I
Anfangswert y (0) = 3
I
Schrittweite h festlegen
I
Iteration mit Euler-Verfahren
x
y
h
= 0 ; // f i r s t x v a l u e
= 3 ; // i n i t i a l y v a l u e
= 0 . 1 ; // s t e p s i z e
y neu = y alt + h f (x alt , y alt )
w h i l e ( x <= 5 )
x neu = x alt + h
I
Verwende DGL-Function
f (x alt , y alt )
I
−→
Intervall [0, 5]
w h i l e ( x <= 5 )
dgl.sci
plot (x , y , ’o ’ );
y = y + h∗ d g l ( x , y )
x = x + h
s l e e p (100)
end
scilab/euler.sce
Scilab Gewöhnliche Differenzialgleichungen
J. Koch, 13. November 2015
7/9
DGLs höherer Ordnung
DGLs höherer Ordnung
I
Zustandsvariablen
z1 (t) = x(t)
z2 (t) = ẋ(t)
..
..
.
.
I
Beispiel
I
ẍ(t) + sin x(t) = cos t
I
2 Zustandsvariablen
I
DGL-System der Ordnung 1
Vektor der Zustandsvariablen
ż1 (t) = z2 (t)
ż2 (t) = − sin z1 (t) + cos t
z(t)
I
DGL der Ornung 2
Normalform
ż(t) = f (t, z(t))
I
Vektorielle DGL-Funktion
z2 (t)
ż(t) =
− sin z1 (t) + cos t
|
{z
}
f (t, z(t))
Scilab Gewöhnliche Differenzialgleichungen
J. Koch, 13. November 2015
8/9
DGL-Funktion 2
figure (1);
clf ;
m t l b _ a x i s ( [ 0 20 −1.5 3 ] )
t = 0;
z = [3;0];
h = 0.1;
w h i l e ( t < 6∗ %pi )
p l o t ( t , z ( 1 ) , ’ ob ’ ) ;
plot ( t , z (2) , ’∗r ’ );
z = z + h∗ d g l 2 ( t , z )
t = t + h
s l e e p (100)
end
f u n c t i o n zp = d g l 2 ( t , z )
//
// DGL :
//
// zp1 = z2
// zp2 = − s i n ( z1)+ c o s ( t )
//
// INPUT : t
... t
//
z
... z(t)
//
// OUTPUT: zp . . . z ’ ( t )
//
zp = [ z ( 2 ) ;
−s i n ( z (1)) −0.5∗ z ( 2 ) ] ;
scilab/dgl2.sci
scilab/euler2.sce
Scilab Gewöhnliche Differenzialgleichungen
J. Koch, 13. November 2015
9/9