reelle zahlen variablen, die grundsätzlich reelle werte annehmen können oder in ausdrücken...

27
Reelle Zahlen • Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ REAL sein.

Upload: malwine-ziegenhagen

Post on 05-Apr-2015

111 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ

Reelle Zahlen

• Variablen, die grundsätzlich reelle Werte

annehmen können oder in Ausdrücken

erscheinen, die einen reelllen Wert liefern,

sollten vom Typ REAL sein.

Page 2: Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ

Division ganzer Zahlen

• Betrachte die Auswertung der Anweisung a = b*c/d, wobei b eine reelle Variable mit dem Wert 100.0 ist, während c und d ganze Zahlen mit den Werten 9 und 10 sind.– b*c wird zuerst ausgewertet, wobei c zunächst in den

reellen Wert 9.0 umgewandelt wird.

– Danach wird der Wert von d in seinen reellen Gegenwert umgewandelt, bevor die Division ausgeführt wird.

Ellis et al. (1994), S. 48

Page 3: Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ

Division ganzer Zahlen

• Was passiert, wenn der Ausdruck in der

folgenden, mathematisch gleichwertigen Form

geschrieben worden wäre: a = c/d*b ?

– In der ersten Operation sind beide Operanden ganze

Zahlen, so dass der Unterausdruck c/d als

ganzzahlige Operation ausgeführt wird.

– Das mathematische Ergebnis (0.9) wird

abgeschnitten und liefert ein Zwischenergebnis von

Null.

Ellis et al. (1994), S. 49

Page 4: Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ

Literaturhinweis

• Ellis, T.M.R., Phillips, Ivor R., and Lahey,

Thomas M.: Fortran 90 Programming,

Addison-Wesley Publishing Company,

1994.

M. Schulz

Page 5: Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ

Mathematical Operations

Deg_C = 5.0 * (Deg_F 32.0) / 9.0

The expression on the RHS is evaluated and

assigned to the REAL variable Deg_C

* is the multiplication operator,

is the subtraction operator,

/ is the division operator,

** is the exponentiation, and

= is the assignment operator.

M. Schulz

Page 6: Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ

Important Built-In FunctionsABS(x) Absolute value

LOG(x) Natural logarithm

LOG10(x) Base-10 logarithm

EXP(x) Natural exponential

SQRT(x) Square root

SIN(x) Sine (x in radians!)

COS(x) Cosine

TAN(x) Tangent

ASIN(x) Arcsine

ACOS(x) Arccosine

ATAN(x) Arctangent

INT(x) Convert real to integer, truncation (7.8 7)

NINT(x) Convert real to integer, rounding (7.8 8)

REAL(i) Convert integer to real (1 1.0)

Page 7: Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ

Unix-Tipp

• Wenn das aktuelle Verzeichnis “.” nicht im

Suchpfad enthalten ist, dann kann man ein

Programm a.exe mit dem Befehl

./a.exe starten.

Page 8: Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ

Tipps zur Fehlersuche

• “PRINT”-Anweisungen einbauen, um den

Wert bestimmter Variablen zu überprüfen

• Spezielle Compileroptionen wählen, um

zum Beispiel Feldbereichsüberschrei-

tungen anzuzeigen

Page 9: Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ

Option Bedeutung

g95 --help

g95 --target-help

g95 –fbounds-check Prüfe Feld- und

Zeichenkettengrenzen

G95-Optionen

Page 10: Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ

Fortran-Links

• http://www.g95.org/

– http://www.g95.org/G95Manual.pdf

• http://de.wikibooks.org/wiki/Fortran

– http://de.wikibooks.org/wiki/

Fortran:_Fortran_95

– http://de.wikibooks.org/wiki/Fortran:_G95

Page 11: Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ

Vergleichsoperatoren

Vergleichsoperator Bedeutung

< kleiner

<= kleiner oder gleich

== gleich

/= ungleich

> größer

>= größer oder gleich

Page 12: Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ

Energiebilanzmodell(Aufgabe 4)

Projektübung Klimamodellierung (05-3034) – A. Paul

Page 13: Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ

Punktmodell der Strahlungsbilanz

(Stocker 2004, Abschnitt 2.2)

414

dT Sh C T

dt

Gewöhnliche, nichtlineare Differentialgleichung erster Ordnung für die

unbekannte, zeitabhängige Variable T(t)

Page 14: Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ

R 6371 km Erdradius

h 8.3 km Skalenhöhe

1.2 kg m-3 Luftdichte

C 1000 J kg-1 K-1 Spezifische Wärme

von Luft

T K Temperatur

0.3 Planetare Albedo

S 1367 W m-2 Solarkonstante

0.6 Emissions-

vermögen

5.67x10-8 W m-2 K-4 Stefan-Boltzmann-

Konstante

Page 15: Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ

Gleichgewichtstemperatur des globalen Energiebilanzmodells: Die aus Messungen bestimmte mittlere Oberflächentemperatur beträgt 14°C (fett ausgezogen).

Page 16: Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ

Eis-Albedo-Rückkopplung

• Die Eis-Albedo-Rückkopplung soll durch

folgende Abschätzung der Elbedo

parameterisiert werden:

0.42, falls 10 ,

0.62, falls 10 .

T C

T C

Page 17: Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ

2 3

2 3

2 3

1 1( ) .

2 3!t t t

dT d T d TT t t T t t t t

dt dt dt

T(t) in eine Taylorreihe entwickeln:

2 3

2

2 3

( ) 1 1.

2 3!

Korrekturterm der Ordnung

t t t

T t t T tdT d T d Tt t

dt t dt dt

t

t = n t, n=0,1,2,…

Nach der ersten Ableitung auflösen: Euler-Schema

Diskretisierung

Page 18: Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ

3 4

2 3

3 4

2

( ) 1 1.

2 3! 4!

Korrekturterm der Ordnung

t t t

T t t T t tdT d T d Tt t

dt t dt dt

t

Ersetzen von t durch -t und addieren:Schema der zentrierten Differenzen

Page 19: Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ

, ,dy

f x y xdx

0 0 .y x y

4, , ( , ) 1 .4

Sy T x t f x y y

• Das Euler-Verfahren ist das einfachste, aber

auch ungenaueste Verfahren zur Lösung der

gewöhnlichen Differentialgleichung erster

Ordnung

mit der Anfangsbedingung

Im Fall des Energiebilanzmodells ist

Page 20: Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ

• Das Euler-Verfahren wertet die

Ableitung nur an den Stellen x und x+x

aus.

• Dies entspricht der Linearisierung der

langwelligen Ausstrahlung.

• Genauere Verfahren vom Typ “Runge-

Kutta k-ter Ordnung” verwenden weitere

Stützstellen im Intervall [x, x+x]

Page 21: Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ

Runge-Kutta-Verfahren k-ter Ordnung

• Durch die Auswertung von f(x,y) an

weiteren Stützstellen im Intervall [x, x+x]

und eine geschickte Linearkombination

kann der Fehler von O(x) auf O[(x)k]

reduziert werden

Page 22: Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ

1

2 1

3 2

3 3

,

,2 2

,2 2

,2

n n

n n

n n

n n

K f x y

x xK f x y K

x xK f x y K

xK f x y x K

1 ,n n n ny y x F x y

1 2 3 4

1, 2 2

6n nF x y K K K K

Stocker (2004), S. 33

Die Vorschrift für das klassische Runge-Kutta-Verfahren 4. Ordung lautet:

Page 23: Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ

Parameterisierte REAL-Variablen

• REAL-Variablen (reelle Zahlen) sind

„parameterisiert“.

• Der kind-Typparameter legt die

Anforderungen an die minimale

Genauigkeit und den Bereich des

Exponenten fest.

Page 24: Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ

! Parameter declarations

! Symbolic name for a real kind type with at least ! 15 decimal digits of precision and an exponent range ! from 10**300 to 10**(-300) (“double precision”)INTEGER, PARAMETER :: dp=SELECTED_REAL_KIND(P=15,R=300)

! Symbolic name for a real kind type with at least ! 6 decimal digits of precision and an exponent range! from 10**30 to 10**(-30) (“single precision”)INTEGER, PARAMETER :: sp=SELECTED_REAL_KIND(P=6,R=30)

! Symbolic name for a default real kind typeINTEGER, PARAMETER :: q=dp

! Variable declarationsREAL(KIND=q) :: dpressREAL(KIND=q), DIMENSION(1:km) :: p

Page 25: Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ

FUNCTION- und SUBROUTINE-Unterprogramme

• FUNCTION-Unterprogramme berechnen

einen einzigen Wert, der an der

Aufrufstelle eingesetzt wird.

• SUBROUTINE-Unterprogramme gestatten

die gleichzeizige Berechnung mehrerer

Werte.

Page 26: Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ

SUBROUTINE rk4(y,dx,yp) IMPLICIT NONE

! Dummy arguments

REAL(KIND=q), INTENT(IN) :: y,dx

REAL(KIND=q), INTENT(OUT) :: yp

! Local variables

! dy1, dy2, dy3, dy4 = correspond to K1, K2, K3, K4 in

! fourth-order Runge-Kutta formula

REAL(KIND=q) :: dy1,dy2,dy3,dy4

dy1 = f(y)

dy2 = f(y + dx/2.0_q*dy1)

dy3 = f(y + dx/2.0_q*dy2)

dy4 = f(y + dx*dy3)

yp = (dy1 + 2.0_q*dy2 + 2.0_q*dy3 + dy4)/6.0

END SUBROUTINE rk4

FUNCTION- und SUBROUTINE-Unterprogramme

Page 27: Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ

Block IF-Struktur

! Variable declarations! tol = criteria of convergence (K)REAL(KIND=q) :: tol[..]! Initializations tol = 1.0E-03_q[..]! Time loopDO itt=1,ittmax

[..]

! Test for convergence IF (ABS(tf – ti) < tol) THEN EXIT END IFEND DO