Praktikum Ingenieurinformatik. Termin 4. Funktionen, numerische Integration



Ähnliche Dokumente
Ingenieurinformatik (FK 03) Übung 4

*** Viel Erfolg!!! ***

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Hochschule München, FK 03 FA WS 2012/13. Ingenieurinformatik

Einführung in die Programmierung Wintersemester 2008/09

Praktikum Ingenieurinformatik. Termin 5. Felder, Kurvendarstellung mit Excel

Praktikum Ingenieurinformatik. Termin 5. Felder (Vektoren, Arrays), verschachtelte Schleifen

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

Ingenieurinformatik Diplom-FA (Teil 2, C-Programmierung)

CS1005 Objektorientierte Programmierung

*** Viel Erfolg! ***

Grundlagen der Programmierung

Hochschule München, FK 03 FA SS Ingenieurinformatik

Einführung in die Programmierung

Verwendung Vereinbarung Wert einer Funktion Aufruf einer Funktion Parameter Rekursion. Programmieren in C

Übung zur Vorlesung EidP (WS 2018/19) Blatt 4

Praktikum Ingenieurinformatik. Termin 6. Matrizen, Zeichenketten, Zeiger

Praktikum Ingenieurinformatik. Termin 2a. Schleifen und Verzweigungen in C und mit MATLAB

Objektorientierte Programmierung

Klausur: Informatik, am 11. Juli 2013 Gruppe: B Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

3 Funktionsdefinitionen

Ingenieurinformatik Teil 2 (Numerik für Ingenieure)

Hochschule München, FK 03 FA WS 2010/11. Ingenieurinformatik

Praktikum Ingenieurinformatik. Termin 6. Mehrdimensionale Felder, Kurvendarstellung mit Excel

Klausur: Informatik, am 11. Juli 2013 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Kontrollstrukturen und Funktionen in C

Praktikum Ingenieurinformatik. Termin 2. Verzweigungen (if-else), printf und scanf, while-schleife

Grundlagen der Programmierung

Wiederholung C-Programmierung

Labor Software-Entwicklung 1

Praktikum Ingenieurinformatik. Termin 3. Fehlervermeidung, Fehlersuche, Schleifen (while, do-while, for)

Ziele sind das Arbeiten mit Funktionen (Modularisierung, Parameterübergabe), sowie - Reihentyp (Array)

Klausur: Informatik, am 13. August 2015 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

*** Viel Erfolg! ***

FH München, FB 03 FA WS 06/07. Ingenieurinformatik. Name Vorname Matrikelnummer Sem.Gr.: Hörsaal Platz

Die Programmiersprache C

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Kapitel 6. Funktionen

1 Vom Problem zum Programm

Klausur: Grundlagen der Informatik I, am 27. März 2009 Gruppe: F Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Informatik Repetitorium SS Volker Jaedicke

Klausur: Grundlagen der Informatik I, am 27. März 2009 Gruppe: E Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Klausur: Informatik, am 11. Juli 2013 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Abschlußtest Programmieren 30. Juni 2017 Name: Punkte von 32: Gruppe: Haase-Di Haase-Do Stanek-Di Stanek-Do

Vom Algorithmus zum Programm

Wiederholung C-Programmierung

Algorithmen & Programmierung. Rekursive Funktionen (1)

Informatik III: Aufgabenblock 3

Einstieg in die Informatik mit Java

5. Unterprogrammtechnik/Module

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: B Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Klausur: Grundlagen der Informatik I, am 06. Februar 2009 Gruppe: A Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Hochschule München, FK 03 FA SS Ingenieurinformatik

Programmierung mit C Funktionen

Programmieren in C (Übungsblatt 1)

2. Programmierung in C

Funktionen. mehrfach benötigte Programmteile nur einmal zu schreiben und mehrfach aufzurufen

float *point(float a, float b); // Funktionsdeklaration Zeiger als Funktionswert // point liefert als Wert die Adresse seines Ergebnisses

Inhalt. 4.7 Funktionen

Klausur: Grundlagen der Informatik I, am 05. Februar 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Programmieren in C/C++ und MATLAB

ANSI C. Grundlagen der Programmierung. Ricardo Hernández García. 3. Ausgabe, 2. Aktualisierung, Dezember 2013 CANSI2

Übungskomplex Reelle Zahlen. Rechnen mit Gleitkommazahlen

Deklarationen in C. Prof. Dr. Margarita Esponda

2. Programmierung in C

6. Unterprogramme 6-1

Ingenieurinformatik Diplom-FA (C-Programmierung)

*** Viel Erfolg! ***

Einstieg in die Informatik mit Java

Programmieren in C (Übungsblatt 1)

Klausur: Grundlagen der Informatik I, am 05. Februar 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Programmieren in C. Zeiger auf Funktionen. Prof. Dr. Nikolaus Wulff

Programmieren in C (Übungsblatt 1)

Probeklausur: Programmierung WS04/05

Musterprüfung Algorithmen & Datenstrukturen (WS 08/09)

Übungspaket 4 Funktionszeiger

Übungen zur Vorlesung EidP (WS 2015/16) Blatt 6

Die Programmiersprache C

Anwendung höherer Programmiersprachen. Formatierte Ausgabe mit cout. Angewandte Informatik I C / C++ Teil B: Formatierte Ein- und Ausgabe

einlesen n > 0? Ausgabe Negative Zahl

2. Programmierung in C

Fachreferat in der Mathematik

Präzedenz von Operatoren

Erste Java-Programme (Scopes und Rekursion)

Programmiertechnik Klassenmethoden

Informatik Funktionen

Einführung in die Programmierung II. 4. Funktionen

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Klassenmethoden

Gültigkeitsbereich. T. Neckel Einführung in die wissenschaftliche Programmierung IN8008 Wintersemester 2016/

Programmierstarthilfe SS 2009 Fakultät für Ingenieurwissenschaften und Informatik 4. Blatt Für die Woche vom bis zum 22.5.

Hochschule Für Angewandte Wissenschaften FH München Sommersemester Thomas Kolarz. Folie 1.

Übung 1 - Betriebssysteme I

Prüfung Algorithmen und Datenstrukturen, WS 2008/2009 (97 Punkte, 4 Seiten)

Transkript:

Praktikum Ingenieurinformatik Termin 4 Funktionen, numerische Integration 1

Praktikum Ingenieurinformatik Termin 4 1. Funktionen. Numerische Integration, Trapezverfahren

1.1. Funktionen Eine Funktion ist ein Teil eines Programms der aus (ggf. mehreren) anderen Programmteilen heraus aufgerufen werden kann. Es ist möglich, Werte ( Parameter ) an Funktionen zu übergeben sowie einen Rückgabewert an die aufrufende Stelle zurückzugeben. Eine Funktion bearbeitet in der Regel eine einzelne, konkrete Aufgabe. Beispielsweise dient die Funktion printf zur Ausgabe auf dem Bildschirm und die Funktion scanf zur Eingabe von der Tastatur. Bei der Programmierung von bzw. mit Funktionen unterscheidet man: - Funktionsdeklaration (Hinweis an den Compiler, dass eine bestimmte Funktion existiert und welche Parameter sie erwartet) - Funktionsaufruf (eine Funktion kann von beliebig vielen Stellen im Programm aus aufgerufen werden, vergl. printf ) - Funktionsdefinition (Beschreibung des internen Funktionsablaufs) 3

1.. Übungsaufgabe, Aufruf einer Funktion #include <stdio.h> int addiere(int param1, int param); int main(void) { int x = 10, y = 0, erg; setvbuf(stdout, 0, _IONBF, 0); erg = addiere(x, y); printf("funktion 'main':\n"); printf("erg: %d\n\n", erg); return 0; } Aufgabe: Geben Sie den Quelltext in den Rechner ein und lassen Sie ein lauffähiges Programm erzeugen. Wo finden Sie die Funktionsdeklaration, Aufruf und Funktionsdefinition der Funktion addiere? int addiere(int param1, int param) { int ret; ret = param1 + param; printf("funktion 'addiere'\n"); printf("param1: %d, param: %d\n", param1, param); printf("ret: %d\n\n", ret); return ret; } 4

1.3. Übungsaufgabe, Funktionsparameter Aufgabe: - Ändern Sie in der Funktion addiere die Variablennamen: statt param1 und param jetzt x und y. Gibt es Probleme, weil die Namen der Variablen in den Funktionen main und addiere gleich sind? - Ändern Sie auch ret in erg. Gibt es nun Probleme? - Lassen Sie das Programm im Debugger ablaufen. Können Sie auch die Befehle innerhalb der Funktion addiere schrittweise ausführen? (Tipp: Mit der F5-Taste in die Funktion hinein gehen ) - Überprüfen Sie den Programmablauf, wenn Sie den Aufruf der Funktion addiere wie ändern: erg = addiere(13, 10); - Fügen Sie die folgende Anweisung in die Funktion main ein: printf("%d\n", addiere(30, 40)); 5

Praktikum Ingenieurinformatik Termin 4 1. Funktionen. Numerische Integration, Trapezverfahren 6

.1. Numerische Integration, Motivation 7

.. Aufgabenstellung 8

.3. Trapezverfahren (a) Die Fläche F1 ist eine erste Näherung für das gesuchte Integral: y = f(x) f(b) f(a) a b x Fläche F 1 F 1 F 1 f(a) f(b) (b f(a 0Δx) a) f(a 1Δx) Δx Breite der Fläche F1: Δx b a 1 9

.4. Trapezverfahren (b) Die Fläche F ist eine bessere Näherung für das gesuchte Integral: f(b) f(a) y = f(x) a = a + 0 x a + 1 x x b = a + x Breite einer Teilfläche: Δx b a F f(a 0Δx) f(a 1Δx) Δx f(a 1Δx) f(a Δx) Δx 10

.5. Trapezverfahren (c) Die Fläche Fn ist eine beliebig gute Näherung für das Integral: Bei n Teilintervallen gilt für die Breite einer Teilfläche: Für die Fläche folgt: Δx b a n F n f f f a 0Δx f a 1Δx a 1Δx f a Δx a (n 1) Δx f a n Δx Δx Δx Δx 11

.6. Übungsaufgabe, Trapezverfahren (a) Aufgabe: Implementieren Sie die folgende Funktion: double trapez(double a, double b, int n); Die Funktion trapez integriert eine Funktion f(x) nach dem Trapezverfahren im Bereich von a bis b. Es werden insgesamt n Teilflächen berechnet und aufsummiert. Tipp: Während der Berechnung der Gesamtfläche muss der Funktionswert f(x) an verschiedenen Stellen x berechnet werden (siehe vorherige Folie). Dazu ist im C-Programm folgende Funktion definiert: double f(double x); Der x-wert wird als Parameter übergeben, der Wert y = f(x) wird als Rückgabewert zurückgegeben. 1

.7. Übungsaufgabe, Trapezverfahren (b) Beispiel für ein Hauptprogramm: #include <stdio.h> #include <math.h> double trapez(double a, double b, int n); double f(double x); int main(void) { double x1, x, flaeche; setvbuf(stdout, 0, _IONBF, 0); printf("integration von x1 = "); scanf("%lf", &x1); printf("integration bis x = "); scanf("%lf", &x); flaeche = trapez(x1, x, 1000); printf("integral = %.4f\n", flaeche); return 0; } double f(double x) { return sin(x) * sin(x); } 13

.8. Übungsaufgabe, Trapezverfahren (c) Aufgabe: Erweitern Sie das numerische Integrationsprogramm, so dass die Anzahl der Teilflächen (n) nicht mehr fest eingestellt ist. Stattdessen soll die Anzahl solange immer weiter verdoppelt werden, bis die Ergebnisse der Funktion trapez genau genug sind. Erstellen Sie dazu eine zusätzliche Funktion integral (siehe folgende Seite), welche die bereits bestehende Funktion trapez aufruft. Vergleichen Sie die Ergebnisse für n und ( n) Teilflächen und brechen Sie das Verfahren ab, wenn der relative Unterschied beider Ergebnisse eine vorgegebene Grenze EPSILON unterschreitet. Wenn die Anzahl der Teilflächen (n) größer als 5000 ist, soll das Verfahren ebenfalls beendet werden. 14

.9. Übungsaufgabe, Trapezverfahren (d) Struktogramm der Funktion integral : Diese Funktion ruft solange die Funktion trapez mit einer wachsenden Anzahl von Teilflächen auf, bis das Ergebnis eine vorgegebene Genauigkeit erreicht hat. Übergabeparameter: Grenzwerte a, b (double) Rückgabewert: berechnetes Integral (double) Variablen: f_alt, f_neu, delta (jeweils double), n (int) f_neu = trapez(a, b, n), n = 1 f_alt = f_neu, n = n * f_neu = trapez(a, b, n) rel. Abweichung (delta) von f_alt und f_neu berechnen solange (delta > EPSILON) und (n < 5000) Rückgabe von f_neu 15

.10. Übungsaufgabe, Trapezverfahren (e) Aufgabe: - Testen Sie das Programm zur numerischen Integration für verschiedene Funktionen f(x) und verschiedene Grenzen a und b. - Vergleichen Sie die vom Programm ermittelten Ergebnisse mit Werten, die Sie entweder von Hand oder mit Hilfe von MATLAB und/oder Maple berechnet haben. - Implementieren Sie andere Funktionen f(x) unter Nutzung von Standardfunktionen, die Sie in der Bibliothek math.h finden. 16