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

Slides:



Advertisements
Ähnliche Präsentationen
Eine dynamische Menge, die diese Operationen unterstützt,
Advertisements

Simulation komplexer technischer Anlagen
Forschungszentrum caesar
Hochschule Fulda – FB ET Sommersemester 2010
Zusammenfassung der Vorwoche
Programmieren in Logik
10. Grundlagen imperativer Programmiersprachen
12. Iteration und Rekursion
Seminar Stochastik im WS 02/03
Numerik partieller Differentialgleichungen
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Das Klimasystem und seine Modellierung Vorlesung 11 (19. Januar 2004)
Energiebilanzmodelle
Projektübung Klimamodellierung
Nachtrag: Gaußformel Was es heißt, mathematisch denken zu können, demonstrierte Gauß bereits im Grundschulalter. Von seinem Lehrer vor die Aufgabe gestellt,
Projektübung Klimamodellierung André Paul. Vorbesprechung Projektübung Klimamodellierung ( ) – A. Paul.
Energiebilanzmodelle
Nachtrag: Statischer Druck (Aufgabe 3) Projektübung Klimamodellierung ( ) – A. Paul.
Statischer Druck (Aufgabe 3)
Statischer Druck (Aufgabe 3) Projektübung Klimamodellierung ( ) – A. Paul.
Imperative Programmierung
Boolesche Ausdrücke Ist der Rückgabewert eines Ausdrucks vom Typ boolean, so wird dieser als Boolescher Ausdruck bezeichnet (nach dem Mathematiker George.
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Variable Feld Vereinbarung Zuweisung Block while-Schleife Bedingte Anweisung (if) Typ.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
Zusammenfassung Vorwoche
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
2.2 Definition eines Datenbankschemas (SQL-DDL)
Kontrollstrukturen Verwendung: Steuerung des Ablaufs.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
FORTRAN 77.
Wiederholte Programmausführung
Dynamische Datentypen
Grundlagen von Objekt-Pascal Erstellt von J. Rudolf überarbeitet von H.Brehm.
Primär(x)f(x)a[x]new typeof sizeof checked unchecked Unär+-~!++x--x x++ x-- (T)x Multip./Divis.*/% Addition/Subtr.+- shift > kleiner/größer = is gleich/ungleich==!=
Informatik II Grundlagen der Programmierung Programmieren in C Programmstrukturen / Kontrollstrukturen Hochschule Fulda – FB ET Sommersemester 2014.
© 2004 Pohlig - Taulien Explizite Typenumwandlung.
Einführung in PHP.
Einführung in PHP 5.
Using latent semantic analysis to find different names for the same entity in free text Präsentation und Diskussion des Papers Im Rahmen des PS Web-Information.
MODULA-2.
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Programmieren in C Grundlagen C 2
PHP: Operatoren und Kontrollstrukturen
Hochschule Fulda – FB ET Sommersemester 2014
Programmieren in C Grundlagen C 2
Die Wege - Modellierung und Simulation von biochemischen Stoffwechselpfaden Ursula Kummer EML Research gGmbH.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Übersicht Nachtrag zu Ausdrücken
Vordefinierte Datentypen (1)
1 Tagesüberblick 7 Lösung Hausaufgabe/Fragen mehrdimensionale Datenstrukturen Module Fehlersuche Zusammenfassung Feedback.
Wozu Maple? Symbolische Algebra Manche Sachen soll man besser nicht von Hand machen –kleine Rechnungs Fehler können mehrere Millionen werden – am besten.
Extended Pascal ( Erweitreung von Pascal) Name: Mehmet CELIK Matr :
The Programming Language Pascal
TRUE und FALSE in C Der Wert 0 steht für FALSE Jeder von 0 verschiedene Wert steht für TRUE FALSE wird als 0 dargestellt TRUE wird als 1 dargestellt.
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
J. Nürnberger2007 / 081 Tabellenkalkulation (3) Arbeiten mit Formeln am Beispiel von OpenOffice.org Calc.
Datentypen: integer, char, string, boolean
The Programming Language Pascal
 Präsentation transkript:

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.

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

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

Literaturhinweis Ellis, T.M.R., Phillips, Ivor R., and Lahey, Thomas M.: Fortran 90 Programming, Addison-Wesley Publishing Company, 1994. M. Schulz

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

Important Built-In Functions ABS(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)

Unix-Tipp Wenn das aktuelle Verzeichnis “.” nicht im Suchpfad enthalten ist, dann kann man ein Programm a.exe mit dem Befehl ./a.exe starten.

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

G95-Optionen Option Bedeutung g95 --help g95 --target-help g95 –fbounds-check Prüfe Feld- und Zeichenkettengrenzen

Fortran-Links http://www.g95.org/ http://de.wikibooks.org/wiki/Fortran 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

Vergleichsoperatoren Bedeutung < kleiner <= kleiner oder gleich == gleich /= ungleich > größer >= größer oder gleich

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

Punktmodell der Strahlungsbilanz (Stocker 2004, Abschnitt 2.2) Gewöhnliche, nichtlineare Differentialgleichung erster Ordnung für die unbekannte, zeitabhängige Variable T(t)

R 6371 km Erdradius h 8.3 Skalenhöhe r 1.2 kg m-3 Luftdichte C 1000 J kg-1 K-1 Spezifische Wärme von Luft T K Temperatur a 0.3 Planetare Albedo S 1367 W m-2 Solarkonstante e 0.6 Emissions-vermögen s 5.67x10-8 W m-2 K-4 Stefan-Boltzmann-Konstante

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

Eis-Albedo-Rückkopplung Die Eis-Albedo-Rückkopplung soll durch folgende Abschätzung der Elbedo parameterisiert werden:

Diskretisierung t = n Dt, n=0,1,2,… T(t) in eine Taylorreihe entwickeln: Nach der ersten Ableitung auflösen: Euler-Schema

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

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

Das Euler-Verfahren wertet die Ableitung nur an den Stellen x und x+Dx 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+Dx]

Runge-Kutta-Verfahren k-ter Ordnung Durch die Auswertung von f(x,y) an weiteren Stützstellen im Intervall [x, x+Dx] und eine geschickte Linearkombination kann der Fehler von O(Dx) auf O[(Dx)k] reduziert werden

Die Vorschrift für das klassische Runge-Kutta-Verfahren 4 Die Vorschrift für das klassische Runge-Kutta-Verfahren 4. Ordung lautet: Stocker (2004), S. 33

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.

! Variable declarations REAL(KIND=q) :: dpress ! 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) ! 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 type INTEGER, PARAMETER :: q=dp ! Variable declarations REAL(KIND=q) :: dpress REAL(KIND=q), DIMENSION(1:km) :: p

FUNCTION- und SUBROUTINE-Unterprogramme FUNCTION-Unterprogramme berechnen einen einzigen Wert, der an der Aufrufstelle eingesetzt wird. SUBROUTINE-Unterprogramme gestatten die gleichzeizige Berechnung mehrerer Werte. Wehnes (1985), Kapitel 6, S. 134

FUNCTION- und SUBROUTINE-Unterprogramme 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

Block IF-Struktur ! Variable declarations ! tol = criteria of convergence (K) REAL(KIND=q) :: tol [..] ! Initializations tol = 1.0E-03_q ! Time loop DO itt=1,ittmax ! Test for convergence IF (ABS(tf – ti) < tol) THEN EXIT END IF END DO Wehnes (1985), Kapitel 4, S. 90