Einstieg in die Informatik mit Java

Ähnliche Dokumente
Einstieg in die Informatik mit Java

Klassenvariablen, Klassenmethoden

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Javakurs für Anfänger

- Numerik in der Physik - Simulationen, DGL und Co. Max Menzel

Einstieg in die Informatik mit Java

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Probeklausur Java Einführung in die Informatik. Wintersemester 2016/2017

1. Anfangswertprobleme 1. Ordnung

1. Anfangswertprobleme 1. Ordnung

Programmieren in Java

Einstieg in die Informatik mit Java

Abgabe: keine Pflichtabgabe (vor 12 Uhr) Aufgabe 10.1 (P) Vererbung Gegeben seien folgende Java-Klassen:

Fakultät IV Elektrotechnik/Informatik

Vererbung, Polymorphie

Probeklausur Java Einführung in die Informatik. Wintersemester 2017/2018

Programmierung für Mathematik (HS13)

Methoden. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Aufgabenblatt: OOP - Seite 1. (2.) Geometrie: Erstellen Sie eine Klasse CPyramid, die sich von der Klasse Square ableitet:

Einstieg in die Informatik mit Java

ODE-Solver. Inhalt. Einleitung. grundlegende Algorithmen. weiterführende Algorithmen

Repetitorium Informatik (Java)

12 Abstrakte Klassen, finale Klassen und Interfaces

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 14.1.

Einstieg in die Informatik mit Java

Computersimulationen in der Astronomie

Einstieg in die Informatik mit Java

Methoden und Klassen. Silke Trißl Wissensmanagement in der Bioinformatik

Silke Trißl, Prof. Ulf Leser Wissensmanagement in der Bioinformatik. Jede Applikation braucht eine Klasse mit einer main-methode

Interfaces und Generics

Lösung der Klausur zur Vorlesung. Grundlagen der Informatik und Numerik. Dr. Monika Meiler. Jedes Blatt ist mit der Matrikelnummer zu versehen.

Einstieg in die Informatik mit Java

Javakurs für Anfänger

Das HeronVerfahren für root(a) (Babilonisches Wurzelziehen)

Probeklausur Java Einführung in die Informatik. Wintersemester 2014/2015

Silke Trißl Wissensmanagement in der Bioinformatik. Objektorientierte Programmierung (OOP) Vorstellung wie in der realen Welt: Farbe Hubraum Tank...

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

Einstieg in die Informatik mit Java

Prof. Dr. Wolfgang Schramm. Vorlesung. Techniken der Programmentwicklung. Exkurs: Anonyme Klassen

Dierentialgleichungen 2. Ordnung

JAVA für Nichtinformatiker - Probeklausur -

CoMa 04. Java II. Paul Boeck. 7. Mai Humboldt Universität zu Berlin Institut für Mathematik. Paul Boeck CoMa 04 7.

Institut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur

Was du ererbt von Deinen Vätern hast, erwirb es, um es zu besitzen. J. W. v. Goethe.

Mathematische Methoden für Informatiker

7. Klassenmethoden Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

Kapitel 13. Abstrakte Methoden und Interfaces. Fachgebiet Knowledge Engineering Prof. Dr. Johannes Fürnkranz

Übungen zum Bioinformatik-Tutorium. Blatt 6

Algorithmen und Datenstrukturen. Übersicht. Interfaces und Generics. InsertionSort für Punkte. InsertionSort für Punkte

Arrays (Reihungen) Arrays (Reihungen) in Java: Syntax, Typisierung, Semantik.

Übungen zu Differentialgleichungen (WiSe 12/13)

Implementieren von Klassen

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung

Aufgabe11. Methode test1. import java.util.hashmap; import java.util.arraylist; public class Aufgabe11 {

2 Programmieren in Java I noch ohne Nachbearbeitung

1 Abstrakte Klassen, finale Klassen und Interfaces

Probeklausur: Programmierung WS04/05

14 Abstrakte Klassen, finale Klassen, Interfaces

Die for -Schleife HEUTE. Schleifen. Arrays. Schleifen in JAVA. while, do reichen aus, um alle iterativen Algorithmen zu beschreiben

Algorithmen und Datenstrukturen II

Programmiertechnik Klassenvariablen & Instantiierung

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

Delegates. «Delegierter» Methoden Schablone Funktionszeiger. Dr. Beatrice Amrhein

14 Abstrakte Klassen, finale Klassen, Interfaces

Klassen mit Instanzmethoden

Einfache Arrays. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

1. Grundzüge der Objektorientierung 2. Methoden, Unterprogramme und Parameter 3. Datenabstraktion 4. Konstruktoren 5. Vordefinierte Klassen

Bachelorprüfung: Objektorientierte Softwareentwicklung

7. Übung Informatik II - Objektorientierte Programmierung

Differentialgleichungen sind überall!

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Interfaces

Einstieg in die Informatik mit Java

Klausur Grundlagen der Programmierung

Theorie zu Übung 8 Implementierung in Java

Gewöhnliche Dierentialgleichungen

Schöner Programmieren

Sommersemester Jewgeni Rose. Technische Universität Braunschweig

Transkript:

Vorlesung vom 07.01.2008

Übersicht 1 Warm-Up zum Jahresbeginn 2 Anfangswertprobleme 3 Polygonzüge 4 Das Eulersche Polygonzugverfahren

Warm-Up zum Jahresbeginn 1 Warm-Up zum Jahresbeginn 2 Anfangswertprobleme 3 Polygonzüge 4 Das Eulersche Polygonzugverfahren

Rückblick: Grundlagen Grunddatentypen int double boolean String Felder Bedingte Anweisungen if if else switch Schleifen for while do while Eingabe und Ausgabe

Rückblick: Objektorientierte Programmierung Klassen Variablen Instanzvariablen Klassenvariablen (static) Methoden Instanzmethoden Klassenmethoden (static) Konstruktoren Zugriffsrechte public private Die tostring Methode Schnittstellen

Rückblick: Algorithmen Aus der Informatik Sortieren Bildung von Paaren Aus der Mathematik Lösen kubischer Gleichungen Monte-Carlo Methode Nullstellenprobleme Aus den Naturwissenschaften Simulationen Finite Volumen Methode (Wärmeleitung)

Rechtecke Ein Rechteck ist ein ebenes Viereck, dessen Innenwinkel rechte Winkel sind. Die Länge der Seiten a und b werden Breite und Höhe des Rechtecks genannt. a b Aufgabe Erstellen Sie eine öffentliche Klasse mit zwei Instanzvariablen, die ein Rechteck repräsentiert.

Quelltext public class Rechteck { double breite, hoehe; }

Form und Größe von Rechtecken Form und Größe eines Rechtecks sind durch die Seitenlängen a und b bestimmt. b = 1 b = 2 a = 2 a = 1 Aufgabe Erstellen Sie einen öffentliche Konstruktor mit dem die Instanzvariablen der Klasse Rechteck initialisiert werden können.

Quelltext public class Rechteck { double breite, hoehe; } public Rechteck(double breite, double hoehe) { this.breite = breite; this.hoehe = hoehe; }

Fläche eins Rechtecks Der Flächeninhalt A eines Rechtecks mit den Seitenlängen a und b ist durch A = ab gegeben. A b a Aufgabe Erstellen Sie eine öffentliche Instanzmethode, welche den Flächeninhalt des Rechtecks zurückgibt.

Quelltext public class Rechteck { double breite, hoehe; public Rechteck(double breite, double hoehe) { this.breite = breite; this.hoehe = hoehe; } } public double flaecheninhalt() { return this.breite * this.hoehe; }

Rechtecke und Quadrate Ein Rechteck mit den Seitenlängen a und b ist genau dann ein Quadrat, wenn a = b gilt. a a Aufgabe Erstellen Sie eine öffentliche Instanzmethode, welche angibt, ob das Rechteck ein Quadrat ist.

Quelltext public class Rechteck { double breite, hoehe; public Rechteck(double breite, double hoehe) { this.breite = breite; this.hoehe = hoehe; } public double flaecheninhalt() { return this.breite * this.hoehe; } } public boolean istquadrat() { return (this.breite == this.hoehe); }

Flächen Zweidimensionale Figuren werden allgemein als Flächen bezeichnet. Allen Flächen kann ein Flächeninhalt A zugeordnet werden. A A A Aufgabe Erstellen Sie eine öffentliche Schnittstelle mit einer Instanzmethode, welche eine Fläche abstrakt beschreibt.

Quelltext public interface Flaeche { } public double flaecheninhalt();

Rechtecke als Flächen Offenbar sind Rechtecke Flächen. A Aufgabe Legen Sie fest, dass die Klasse Rechteck die Schnittstelle Flaeche implementiert.

Quelltext public class Rechteck implements Flaeche { double breite, hoehe; public Rechteck(double breite, double hoehe) { this.breite = breite; this.hoehe = hoehe; } public double flaecheninhalt() { return this.breite * this.hoehe; } } public boolean istquadrat() { return (this.breite == this.hoehe); }

Programmbeispiel public class Hauptprogramm { } public static void main(string[] args) { Flaeche r = new Rechteck(2.0, 1.0); double a = r.flaecheninhalt(); System.out.println("Flächeninhalt: " + a); }

Anfangswertprobleme 1 Warm-Up zum Jahresbeginn 2 Anfangswertprobleme 3 Polygonzüge 4 Das Eulersche Polygonzugverfahren

Hintergrund Zeitlich veränderliche Größen in wirtschafts-, natur- und ingenieurswissenschaftlichen Modellen können oft als differenzierbare Funktionen der Form aufgefasst werden. y : R R Für einen beliebig gewähltes t R interpretiert man y(t) y (t) als momentanen Wert als momentane Änderungsrate der dargestellten Größe zum Zeitpunkt t.

Untersuchung eines Modells In der Regel möchte man den zeitlichen Verlauf der betrachteten Größe analysieren. Das bedeutet, man möchte die Funktion y : R R bestimmen. y t

Grundproblem Problem Oft sind von der gesuchten Funktion y : R R nur ein Anfangswert y(0) und die zeitliche Änderungsrate y bekannt. y y(0)? t

Beispiel: Freier Fall Wir betrachten die Fallgeschwindigkeit v eines Körper im freien Fall auf der Erde. Es gilt: v(0) = 0 (Anfangsgeschwindigkeit) v (t) = g (Erdbeschleunigung: g 9.81 ms 2 ) Frage: Wie groß ist die Fallgeschwindigkeit zu einem beliebigen Zeitpunkt t? Antwort: Fundamentalsatz der Infinitessimalrechnung v(t) = t 0 v (t)dt + v(0) = gt

Differentialgleichungen Information In vielen Modellen hängt die zeitliche Änderungsrate y vom Wert der betrachteten Größe y ab. Dies führt in der Regel zu einer Differentialgleichung erster Ordnung. Eine Differentialgleichung erster Ordnung ist eine Gleichung, in der eine Funktion und ihre erste Ableitung gleichzeitig vorkommen.

Beispiel: Zinsrechnung Wir betrachten die Entwicklung eines Kapitals K bei einem gegebenen Zinssatz z. Das Anfangskapital betrage 100e. Es gilt: K(0) = 100 (Anfangskapital) K (t) = αk(t) (Zinszuwachs: α = ln(1 + z 100% )) Frage: Wie groß ist das Kapital zu einem beliebigen Zeitpunkt t? Antwort: Theorie der gewöhnlichen Differentialgleichungen K(t) = K(0)e αt

Verallgemeinerung Information In vielen Modellen hängt die Änderungsrate y sowohl vom Wert der Größe als auch vom Zeitpunkt t. Die Differentialgleichung kann dann allgemein durch y (t) = f (t, y(t)) beschrieben werden, wobei f eine Funktion von zwei Veränderlichen ist. Beispiel: Für erhält man y (t) = t 2 y(t) f (x, y) = x 2 y

Anfangswertprobleme Definition Ein Anfangswertproblem (AWP) ist ein Problem, bei dem eine differenzierbare Funktion y : R R gesucht ist, die { y (t) = f (t, y(t)), y(0) = η erfüllt. Dabei ist f eine vorgegebene Funktion von zwei Veränderlichen, genannt rechte Seite, und η ein vorgegebener Anfangswert ist.

Lösbarkeit von Anfangswertprobleme Die Lösung eines Anfangswertproblems ist eine differenzierbare Funktion y : R R. Die rechte Seite f bestimmt über die Forderung y = f (t, y(t)) maßgeblich die Gestalt dieser Lösung. Nur in seltenen Fällen kann die Lösung explizit angegeben werden, wie beispielsweise für f (x, y) = αy: Die Lösung lautet in diesem Fall y(t) = y(0)e αt. In der Regel kann die Lösung nur numerisch angenähert werden.

Idee zur Berechung einer Näherungslösung Man konstruiert aus den Informationen über den Anfangswert y(0) und die Änderungsrate y einen Polygonzug y h, der die gesuchte Funktion y annähern soll. y y(0) y h (t) y(t) t

Polygonzüge 1 Warm-Up zum Jahresbeginn 2 Anfangswertprobleme 3 Polygonzüge 4 Das Eulersche Polygonzugverfahren

Vorbemerkungen Seien (t 0, y 0 ) und (t 1, y 1 ) zwei Punkte in der Ebene mit t 0 t 1. Der Graph der Funktion g : R R, g(t) = y 1 y 0 t 1 t 0 (t t 0 ) + y 0 ist eine Gerade, welche durch beide Punkte geht. y g(t) (t 1, y 1 ) (t 0, y 0 ) t

Vorbemerkungen Eine andere Darstellung für die Funktion g ist g(t) = t 1 t t 1 t 0 y 0 + t t 0 t 1 t 0 y 1 Schränkt man die Funktion g auf das Intervall [t 0, t 1 ] ein, so erhält man als Graph die Verbindungstrecke zwischen den Punkten (t 0, y 0 ) und (t 1, y 1 ) y g [t0,t 1 ](t) (t 1, y 1 ) (t 0, y 0 ) t

Polygonzug Definition Sei [a, b] ein Intervall und sei a = t 0 < t 1 <... < t n = b eine Zerlegung dieses Intervalls. Seien weiterhin y 0, y 1,...,y n beliebig vorgegebene Werte. Eine Funktion p : [a, b] R heißt ein Polygonzug über [a, b] zur Zerlegung t 0 < t 1 <... < t n, wenn für alle i = 1,...,n gilt. p [ti 1,t i ](t) = t i t t i t i 1 y i 1 + t t i 1 t i t i 1 y i

Beispiel Intervall [0, 2] Anzahl der Teilintervalle n = 2 Stützstellen t 0 = 0, t 1 = 1, t 2 = 2 Stützwerte y 0 = 0.5, y 1 = 0.8, y 2 = 0.2 y p(t) t p(t) = { (1 t)0.5 + (t 0)0.8 falls t [0, 1] (2 t)0.8 + (t 1)0.2 falls t [1, 2]

Auswertung von Polygonzügen Gegeben sei der Polygonzug 2 t 2 2 + t 0 2 1 falls t [0, 2] p(t) = 4 t 2 1 + t 2 2 3 falls t [2, 4] 6 t 2 3 + t 4 2 4 falls t [4, 6] Frage: Wie lautet der Funktionswert von p an der Stelle t = 3? Antwort: t = 1 = t [2, 4], p [2,4] (t) = 4 t 2 1 + t 2 2 3. = p(3) = 4 3 2 1 + 3 2 2 3 = 2.

Darstellung von Polygonzügen Lemma Ein Polygonzug ist vollständig durch die Stützstellen t 0 < t 1 <... < t n und die zugehörigen Stützwerte y 0, y 1,...,y n bestimmt. Ein Polygonzug kann also durch zwei Felder vom Typ double der Länge n + 1 repräsentiert werden. Bevor man einen Polygonzug an einer Stelle t auswerten kann, muss man feststellen, in welchem Teilintervall [t i 1, t i ] sich diese Stelle befindet. Auf dem Übungsblatt: Erstellen Sie eine Klasse, die einen Polygonzug repräsentiert.

Das Eulersche Polygonzugverfahren 1 Warm-Up zum Jahresbeginn 2 Anfangswertprobleme 3 Polygonzüge 4 Das Eulersche Polygonzugverfahren

Motivation Zu einem gegeben Anfangswertproblem { y (t) = f (t, y(t)) t [0, T] y(0) = η soll ein Polygonzug y h : [0, T] R konstruiert werden, welcher die Lösung y des Anfangswertproblems annähert. y y(0) y h (t) y(t) t

Erster Schritt: Zerlegung des Intervalls Zunächst wird das Intervall [0, T] äquidistant in n Teilintervalle unterteilt. Die entsprechende Zerlegung t 0 < t 1 <... < t n ist gegeben durch t i := ih i = 0,...,n wobei h := T n die Schrittweite der Zerlegung genannt wird. t 0 0 h t 1 t 2... t n T

Zweiter Schritt: Konstruktion des Polygonzugs An jeder Zerlegungsstelle t i wird nun ein Näherungswert y i y(t i ) nach folgender Vorschrift berechnet: { yi = y i 1 + hf (t i 1, y i 1 ) i = 1,...,n y 0 := η Der Zerlegungsstellen t 0 < t 1 <... < t n definieren zusammen mit den berechneten Näherungswerten y 0, y 1,...,y n den Polygonzug y h, der die Lösung des Anfangswertproblems annähert.

Beispiel Die Lösung des Anfangswertproblems { y (t) = y(t) t [0, 2] y(0) = 1 lautet y(t) = e t Aufgabe: Wenden Sie das Eulersche Polygonzugverfahren für n = 2 an.

Beispiel Für n = 2 sind die Zerlegungsstellen t 0 = 0, t 1 = 1, t 2 = 2. Die Schrittweite beträgt h = 1 Die rechte Seite des Anfangswertproblems ist gegeben durch f (t, y) = y. Man erhält y 0 = y(0) = 1 y(0) = 1 y 1 = y 0 + hf (t 0, y 0 ) = 1 + 1 = 2 y(1) = e y 2 = y 1 + hf (t 1, y 1 ) = 2 + 2 = 4 y(2) = e 2