Folgen und Funktionen in der Mathematik
|
|
- Horst Heinrich Stein
- vor 6 Jahren
- Abrufe
Transkript
1 Folgen und Funktionen in der Mathematik Anhand von einigen exemplarischen Beispielen soll die Implementierung von mathematischen Algorithmen in C/C++ gezeigt werden: Reelle Funktionen in C/C++ Diese wird man meist als double-funktion mit einem oder mehreren Argumenten programmieren, also z.b: double f(double x) oder double f(double x, double a,...) Verwendet man mathematische Funktionen wie Exponentialfunktionen, Winkelfunktionen usw., so ist in C meist die Headerdatei math.h zu inkludieren und das Programm mit gcc lm zu kompilieren. In C++ genügt es, den Header cmath zu inkludieren. Folgen in C/C++ bzw. Funktionen von ganzzahligen positiven Argumenten a) Folgen sind in der Mathematik oft durch einen Funktionsterm wie a = ( n^2-n+3 ) definiert. Folgen natürlicher Zahlen können sehr leicht durch eine int a(int n) oder auch int a(unsigned n) Funktion nachgebildet werden, z.b. hier int a(int n) return n*n-n+3; // NICHT VERGESSEN: ^ ist nicht das Quadrat Reelle Zahlenfolgen wird man eher mit double-ergebnis definieren: double a(int n) return (n+1.0)/n; // NICHT VERGESSEN: Vermeide int-division Manchmal macht es durchaus Sinn, bei der Berechnung der Funktionsterme Gleitkommazahlen zu verwenden, um Überläufe zu vermeiden und um Ganzzahldivisionen zu verhindern: double a(int n) return (n*n*n-1)/(n*n+3); // Überlauf und Ganzzahldivision!
2 double a(int n) double x = n; return (x*x*x-1)/(x*x+3); // Alles behoben! Natürlich lassen sich Folgen auch durch Lambdas definieren: auto a = [](int n) double x = n; return (x*x*x-1)/(x*x+3); ; b) Manchmal sind Folgen in der Mathematik rekursiv definiert, d.h. man erfährt nur, wie man aus alten Folgengliedern neue berechnen kann: Fibonacci-Folge und ähnliche rekursive Folgen: Die klassische Fibonacci-Folge ist festgelegt durch F(0) = 0, F(1) = 1, F(n) = F(n-2)+F(n-1) für alle n >= 2 d.h. aus 2 Folgengliedern ergibt sich das nächste als deren Summe. Es gibt auch nichtrekursive Formeln für diese Folge, aber die einfachste Art der Berechnung ist die Rekursion. C/C++/Java erlauben rekursive Funktionen, sodass sich diese Definition fast wörtlich umsetzen lässt: int Fibonacci(int n) // berechne Folgenglied mit Index n if (n >= 2) // der Hauptfall, n = 2, 3, 4, return Fibonacci(n-2)+Fibonacci(n-1); if (n == 0) // man braucht wegen des return hier kein else return 0; if (n == 1) return 1; // ab hier Fehler, das darf nicht sein cerr << "Fehler: Fibonacci(" << n << ")\n"; return -1; Man stellt aber trotz Optimierung fest, dass z.b. der Aufruf Fibonacci(50) ewig braucht. Der Grund liegt darin, dass z.b. Fibonacci(50) die Aufrufe Fibonacci(49) und Fibonacci(48) verursacht, diese erzeugen Aufrufe von Fibonacci(48),
3 Fibonacci(47) sowie Fibonacci(47), Fibonacci(46). D.h. jeder Aufruf erzeugt 2 weitere Aufrufe und die Arbeitslast steigt wie 2 n. Für n=50 ist das die riesige Zahl 2 50 = , sodass der enorme Zeitaufwand damit erklärbar ist. Manchmal lassen sich rekursiv definierte Funktionen in eine Schleife umschreiben, manchmal lässt sich die Tiefe der Rekursion (aus wie vielen alten Elementen berechnet man das neue) reduzieren, z.b. hier: Die neue Funktion Fibonacci(n, a, b) berechne das n.te Glied der Fibonacci-Folge mit den Startwerten a und b: Fibonacci(0, a, b) = a, Fibonacci(1, a, b) = b und Fibonacci(n, a, b) = Fibonacci(n-2, a, b) + Fibonacci(n-1, a, b) für alle n >= 2. schreibt man die ersten Glieder dieser Folge an, erhält man: a, b, a+b, a+2b, 2a+3b und man sieht, dass das n. Glied dieser Folge das (n-1). Glied der Folge ist, bei der man den allerersten Wert weglässt: b, a+b, a+2b, 2a+3b d.h. Fibonacci(n, a, b) = Fibonacci(n-1, b, a+b) Diese Rekursion hat nur noch eine Tiefe von 1 und wächst linear. Größter gemeinsamer Teiler ggt und der Euklidische Algorithmus Euklidischer Algorithmus: Es seien a >= b > 0 natürliche Zahlen; a = q*b + r (Division von a durch b mit Rest r, Quotient q) Es gilt: r == 0: ggt(a,b) = b r!= 0: ggt(a,b) = ggt(b,r) (Rekursion) die ggt-funktion kann man genauso programmieren, sie ruft sich dann selbst auf -> rekursive Funktion int ggt(int a,int b) // berechnet rekursiv den ggt von a >= b > 0 int r; r = a % b; // Divisionsrest if (r == 0) return b; else return ggt(b,r);
4 Noch kürzer kann man die Funktion noch schreiben, wenn man den if else-block durch den?: Operator ersetzt. Die Syntax ist Bedingung? Wert_if_true : Wert_if_false Damit lassen sich kurze if else-blöcke oft vermeiden: int ggt(int a,int b) // berechnet rekursiv den ggt von a, b // a,b muessen positiv sein!!! // außerdem muss a >= b sein int r = a % b; return (r == 0)? b : gtt(b, r); Bei dieser Rekursion erzeugt ein Aufruf des ggt nur einen weiteren Aufruf, sodass hier kein exponentielles Wachstum der Aufrufe erfolgt und die Rechenzeit erträglich klein bleibt. Trotzdem kann man auch hier die Abarbeitung in eine Schleife verlagern und dadurch Ressourcen einsparen: int ggt(int a, int b) // berechnet den ggt in Schleife, a >= b > 0 int r; do r = a % b; // Divisionsrest a = b; b = r; while (r!= 0); return a; // eigentlich muss man b zurückgeben // b wurde in der Schleife schon mit r = 0 überschrieben // ist aber Gott sei Dank noch in a gespeichert Wenn es möglich ist, Algorithmen nichtrekursiv zu formulieren, wird man meist mit Zeitoder Speicherplatzersparnis belohnt. Nicht alle rekursiven Folgen lassen sich in eine nichtrekursive Form bringen! In beiden Varianten muss man noch eine zusätzliche Funktion int ggt(int a, int b) schreiben, die vorher dafür sorgt, dass die Bedingungen an a und b (a >= b > 0) zutreffen oder hergestellt werden, und die abschließend ggt() aufruft:
5 int ggt(int a, int b) if (a < 0) a = -a; // jetzt ist sicher a >= 0 if (b < 0) b = -b; // jetzt ist sicher b >= 0 if (a < b) // vertausche a und b std::swap(a, b); // jetzt gilt 0 <= b <= a return b == 0? a // bei b == 0 gib a zurueck : ggt(a,b); // ansonsten berechne den ggt Wenn man die Schleifen-Variante zur Berechnung verwendet, kann man beide Funktionen zu einer zusammenfassen: int ggt(int a, int b) if (a < 0) a = -a; // jetzt ist sicher a >= 0 if (b < 0) b = -b; // jetzt ist sicher b >= 0 if (a < b) // vertausche a und b std::swap(a, b); // jetzt gilt 0 <= b <= a if (b!= 0) int r; // ab hier der Euklidische Algorithmus als Schleife do r = a % b; a = b; b = r; while (r!= 0); return a; Die Potenz-Funktion Da C/C++ keine eingebaute Potenzfunktion besitzt, könnte man Sie recht leicht mithilfe von Schleifen und Multiplikationen realisieren (oder die Exponentialfunktion und Logarithmusfunktion verwenden). Eine sehr elegante rekursive Version: double hoch(double x, int n) if (n > 0) // Hauptfall return (n % 2!= 0)? x * hoch(x, n-1)// n ist ungerade?
6 : hoch(x*x, n/2); // n ist gerade! if (n < 0) return hoch(1/x, -n); return 1; Noch universeller wird diese Funktion, wenn man Sie als Template für einen beliebigen Grundtyp T schreibt (siehe später): template<typename T> T hoch(const T& x, int n) if (n > 0) // Hauptfall return (n % 2!= 0)? x*hoch(x, n-1) // n ist ungerade? : hoch(x*x, n/2); // n ist gerade! if (n < 0) return hoch(1/x, -n); return 1; Diese Funktion kann double, float, complex<double>, complex<float> potenzieren und könnte auch für das Potenzieren von quadratischen Matrizen verwendet werden (wenn man diesen Typ definiert hat!).
Einführung in die Informatik I
Einführung in die Informatik I Fortgeschrittene Rekursion Prof. Dr. Nikolaus Wulff Problematische Rekursion Mittels Rekursion lassen sich Spezifikationen recht elegant und einfach implementieren. Leider
MehrKomplexität von Algorithmen
Komplexität von Algorithmen Prof. Dr. Christian Böhm WS 07/08 in Zusammenarbeit mit Gefei Zhang http://www.dbs.informatik.uni-muenchen.de/lehre/nfinfosw Ressourcenbedarf - Größenordnungen Prozesse verbrauchen
MehrLösungsvorschlag Serie 2 Rekursion
(/) Lösungsvorschlag Serie Rekursion. Algorithmen-Paradigmen Es gibt verschiedene Algorithmen-Paradigmen, also grundsätzliche Arten, wie man einen Algorithmus formulieren kann. Im funktionalen Paradigma
MehrSchleifen in C/C++/Java
Schleifen in C/C++/Java Alle 3 Sprachen stellen mindestens die folgenden 3 Schleifenkonstruktionen zur Verfügung. In C gibt es auch keine weiteren, C++, Java und C# haben noch weitere nützliche Varianten.
MehrEinschub: Anweisungen und Bedingungen für PAP und Struktogramme (1)
Einschub: Anweisungen und Bedingungen für PAP und Struktogramme (1) Anweisungen: Eingabeanweisungen, z.b. Eingabe: x Ausgabeanweisungen, z.b. Ausgabe: Das Maximum ist, max Die Symbole x und max werden
Mehr3. Der größte gemeinsame Teiler
Chr.Nelius: Zahlentheorie (SoSe 2016) 18 3. Der größte gemeinsame Teiler (3.1) DEF: a und b seien beliebige ganze Zahlen. a) Eine ganze Zahl t heißt gemeinsamer Teiler von a und b, wenn gilt t a und t
MehrEinstieg in die Informatik mit Java
1 / 20 Einstieg in die Informatik mit Java Rekursion Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 20 1 Überblick 2 Rekursion 3 Rekursive Sortieralgorithmen 4 Backtracking
MehrÜbungskomplex Reelle Zahlen. Rechnen mit Gleitkommazahlen
Übungskomplex Reelle Zahlen Rechnen mit Gleitkommazahlen Hinweise zur Übung Benötigter Vorlesungsstoff Einheiten 1-3 (C-Tutorial) Einheiten Reelle Zahlen 61 Aufgabe Kreisberechnung a) Schreiben Sie zwei
MehrGrundlagen der Programmierung
Grundlagen der Programmierung Algorithmen und Datenstrukturen Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Darüber hinaus sind ausgewählte Teile in Anlehnung an
MehrBeispiel 1: Fakultät
16. Rekursion Beispiel 1: Fakultät Rekursive Definition der Fakultät (Mathematik) n! = 1 falls n=0 n*(n-1)! falls n>0 Programmierung mittels einer rekursiven Funktion in C++ double fakultaet(int n) if
MehrDr. Monika Meiler. Inhalt
Inhalt 3 C-Ausdrücke...3-2 3.1 Arithmetische Ausdrücke...3-3 3.2 Wertzuweisungen...3-5 3.3 Inkrementieren und Dekrementieren...3-6 3.4 Logische Ausdrücke (Bedingungen)...3-7 3.5 Bedingte Ausdrücke...3-8
MehrMathematik für Naturwissenschaftler I WS 2009/2010
Mathematik für Naturwissenschaftler I WS 2009/2010 Lektion 8 10. November 2009 Kapitel 2. Konvergenz von Folgen und Reihen Definition 27. Eine (reelle bzw. komplexe) Zahlenfolge ist eine R- bzw. C-wertige
MehrVorkurs Informatik 2011
Vorkurs Informatik 2011 Randolf Rotta Lehrstuhl Theoretische Informatik Brandenburgische Technische Universität Cottbus Mittwoch 28.09.2011 Funktionen und Operatoren (Wiederholung) Funktionen die sich
MehrAlgorithmen & Programmierung. Rekursive Funktionen (1)
Algorithmen & Programmierung Rekursive Funktionen (1) Berechnung der Fakultät Fakultät Die Fakultät N! einer nichtnegativen ganzen Zahl N kann folgendermaßen definiert werden: d.h. zur Berechnung werden
MehrRekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung
Rekursion Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Aufgabe 1: Potenzfunktion Schreiben Sie eine Methode, die
MehrVorab : Von dem indischen Mathematiker D. R. Kaprekar stammt folgender Zusammenhang :
Seite 1 Algorithmen zur Erzeugung von Kaprekar- Konstanten Autor : Dipl.- Ing. Josef Meiler ; Datum : März 015 Vorab : Von dem indischen Mathematiker D. R. Kaprekar stammt folgender Zusammenhang : a) man
MehrProgrammieren lernen mit Groovy Rekursion Rekursion und Iteration
Programmieren lernen mit Groovy Rekursion Seite 1 Rekursion Rekursion Ursprung lat. recurrere ~ zurücklaufen rekursive Definition Definition mit Bezug auf sich selbst Beispiel Fakultätsfunktion n! 0! =
MehrEinführung in die Informatik 1
Einführung in die Informatik 1 Algorithmen und algorithmische Sprachkonzepte Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag,
MehrAlgorithmen und Datenstrukturen 1. EINLEITUNG. Algorithmen und Datenstrukturen - Ma5hias Thimm 1
Algorithmen und Datenstrukturen 1. EINLEITUNG Algorithmen und Datenstrukturen - Ma5hias Thimm (thimm@uni-koblenz.de) 1 Allgemeines Einleitung Zu den Begriffen: Algorithmen und Datenstrukturen systematische
MehrJAVA-Datentypen und deren Wertebereich
Folge 8 Variablen & Operatoren JAVA 8.1 Variablen JAVA nutzt zum Ablegen (Zwischenspeichern) von Daten Variablen. (Dies funktioniert wie beim Taschenrechner. Dort können Sie mit der Taste eine Zahl zwischenspeichern).
MehrAK-Automatisierungs und Kommunikationstechnik TI Technische Informatik. NWT Netzwerktechnik
Rekursion kurz Einführung Die Rekursion ist ein Bauprinzip, das in vielen Dingen steckt. Wir lernen es hier kennen und experimentieren dann damit in der Igelgrafik (s.später). Es führt uns bis zu den Fraktalen.
MehrStudent: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum:
Berufsakademie Stuttgart / Außenstelle Horb Studienbereich Technik Studiengang Informationstechnik Kurs IT2006, 2.Semester Dozent: Olaf Herden Student: Alexander Carls Matrikelnummer: 166270 Aufgabe: Beschreibung
Mehr2. Algorithmenbegriff
2. Algorithmenbegriff Keine Algorithmen: Anleitungen, Kochrezepte, Wegbeschreibungen,... Algorithmus: Berechnungsvorschrift, die angibt, wie durch Ausführung bestimmter Elementaroperationen aus Eingabegrößen
Mehr2 Teilbarkeit in Z. (a) Aus a b folgt a b und a b und a b und a b. (b) Aus a b und b c folgt a c.
2 Teilbarkeit in Z Bis auf weiteres stehen kleine Buchstaben für ganze Zahlen. Teilbarkeit. Sei a 0. Eine Zahl b heißt durch a teilbar, wenn es ein q gibt mit b = qa. Wir sagen dann auch: a teilt b (ist
MehrProgrammieren in C (Übungsblatt 1)
21.02.2017 Aufgabe 1: Programmausführung Programmieren in C (Übungsblatt 1) a) Bitte geben Sie den folgenden Programmcode ein: /* Beispiel fuer Textausgaben */ #include int main() { printf("c-programmierung
MehrFunktionale Programmierung mit Haskell
Funktionale Programmierung mit Haskell Dr. Michael Savorić Hohenstaufen-Gymnasium (HSG) Kaiserslautern Version 20120622 Überblick Wichtige Eigenschaften Einführungsbeispiele Listenerzeugung und Beispiel
MehrProf. Dr. Heinrich Müller; Dr. Frank Weichert 7. September 2015
Technische Universität Dortmund Informatik VII (Graphische Systeme) Prof. Dr. Heinrich Müller; Dr. Frank Weichert 7. September 2015 Übungsaufgaben zum Vorkurs Informatik Wintersemester 2015/2016 Teil I
Mehr1 Zahlentheorie. 1.1 Kongruenzen
3 Zahlentheorie. Kongruenzen Der letzte Abschnitt zeigte, daß es sinnvoll ist, mit großen Zahlen möglichst einfach rechnen zu können. Oft kommt es nicht darauf, an eine Zahl im Detail zu kennen, sondern
MehrC.3 Funktionen und Prozeduren
C3 - Funktionen und Prozeduren Funktionsdeklarationen in Pascal auch in Pascal kann man selbstdefinierte Funktionen einführen: Funktionen und Prozeduren THEN sign:= 0 Funktion zur Bestimmung des Vorzeichens
MehrInformatik I: Einführung in die Programmierung
Informatik I: Einführung in die Programmierung 7. Albert-Ludwigs-Universität Freiburg Bernhard Nebel 31. Oktober 2014 1 31. Oktober 2014 B. Nebel Info I 3 / 20 Um zu, muss man zuerst einmal. Abb. in Public
MehrProjekt Systementwicklung
Projekt Systementwicklung Effiziente Codierung: Laufzeitoptimierung Prof. Dr. Nikolaus Wulff Effiziente Codierung Der Wunsch effizienten Code zu schreiben entstammt mehreren Quellen: Zielplattformen mit
MehrEinführung in die Informatik I
Einführung in die Informatik I Algorithmen und deren Programmierung Prof. Dr. Nikolaus Wulff Definition Algorithmus Ein Algorithmus ist eine präzise formulierte Handlungsanweisung zur Lösung einer gleichartigen
MehrLangzahlarithmetik implementieren Ac 1990 bis 2016
Langzahlarithmetik implementieren Ac 1990 bis 2016 Wie konstruiert man einen BigInteger-Typ (Langzahlarithmetik)? Zur Berechnung von sehr großen Ganzzahlen ( Big Integers ) kann man Register verwenden,
MehrEinführung in die Informatik I
Einführung in die Informatik I Berechenbarkeit und Komplexität Prof. Dr. Nikolaus Wulff Berechenbarkeit Im Rahmen der Turingmaschine fiel zum ersten Mal der Begriff Berechenbarkeit. Ein Funktion f heißt
Mehr1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster
1 Aufgaben 1.1 Objektorientiert: ("extended-hamster") Sammel-Hamster Aufgabe: Bearbeitungszeit: ca. 1/4 Std) Schreiben Sie ein "objektorientiertes" Programm ("CuB_05_1") für das Sammeln der Körner. Aufgabenbeschreibung:
MehrEs ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.
Ziele sind das Arbeiten mit Funktionen und dem Aufzählungstyp (enum), sowie - einfache Verzweigung (if else) - Alternativen switch case - einfache Schleifen (while oder do while) Aufgabe 3: Diese Aufgabe
MehrEinstieg in die Informatik mit Java
1 / 32 Einstieg in die Informatik mit Java Effizienz Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 32 1 Überblick: was ist Effizienz? 2 Landau-Symbole 3 Eier im Korb 4
MehrInhalt. 3. Spezielle Algorithmen
Inhalt 0. Rechner und Programmierung für Kommunikationstechniker und Mechatroniker 1. Algorithmen - Wesen, Eigenschaften, Entwurf 2. Darstellung von Algorithmen mit Struktogrammen und Programmablaufplänen
Mehr( )= c+t(n-1) n>1. Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3)
Stand der Vorlesung Komplexität von Algorithmen (Kapitel 3) Motivation: IT gestützte Steuerung, Überwachung, Fertigung, Produktion,. : erfordert effiziente Berechnungsvorschriften Ziel: Methoden kennen
MehrGrundlagen der Arithmetik und Zahlentheorie
Grundlagen der Arithmetik und Zahlentheorie 1.0 Teilbarkeit In diesem Abschnitt werden wir einerseits die ganzen Zahlen an sich studieren und dabei besonders wichtige Zahlen, die Primzahlen, entsprechend
Mehr4. ggt und kgv. Chr.Nelius: Zahlentheorie (SS 2007) 9
Chr.Nelius: Zahlentheorie (SS 2007) 9 4. ggt und kgv (4.1) DEF: Eine ganze Zahl g heißt größter gemeinsamer Teiler (ggt) zweier ganzer Zahlen a und b, wenn gilt: GGT 0 ) g 0 GGT 1 ) g a und g b GGT 2 )
MehrProgrammierkurs Python I
Programmierkurs Python I Michaela Regneri & Stefan Thater Universität des Saarlandes FR 4.7 Allgemeine Linguistik (Computerlinguistik) Winter 2010/11 Übersicht Kurze Wiederholung: while Sammeltypen (kurz
MehrEinführung in die Programmierung
: Inhalt Einführung in die Programmierung Wintersemester 2009/0 : Technik vs. Iteration Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund 2 Definition (einfache,
Mehr31 Polynomringe Motivation Definition: Polynomringe
31 Polynomringe 31.1 Motivation Polynome spielen eine wichtige Rolle in vielen Berechnungen, einerseits weil oftmals funktionale Zusammenhänge durch Polynome beschrieben werden, andererseits weil Polynome
MehrAlgorithmen und Datenstrukturen"
Lehrstuhl für Medieninformatik Universität Siegen Fakultät IV 9 Rekursion Version: WS 14/15 Fachgruppe Medieninformatik 9.1 9 Rekursion... Motivation: Rekursive Formulierung von Algorithmen führt in vielen
Mehr4. Einfache Programmstrukturen in C Einfache Programmstrukturen in C
Einfache Programmstrukturen in C 4-1 Welche einfache Programmstrukturen sind zu unterscheiden? Arithmetische und logische Ausdrücke und Zuweisungen Verzweigungen Unvollständige bedingte Anweisungen Vollständige
MehrProgrammiertechnik II
Analyse von Algorithmen Algorithmenentwurf Algorithmen sind oft Teil einer größeren Anwendung operieren auf Daten der Anwendung, sollen aber unabhängig von konkreten Typen sein Darstellung der Algorithmen
MehrLineare Differenzengleichungen und Polynome. Franz Pauer
Lineare Differenzengleichungen und Polynome Franz Pauer Institut für Mathematik, Universität Innsbruck, Technikerstr. 13/7, A-600 Innsbruck, Österreich. Franz.Pauer@uibk.ac.at Vortrag beim ÖMG-LehrerInnenfortbildungstag
MehrJavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.
JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung
MehrKanonische Primfaktorzerlegung
Mathematik I für Informatiker Zahlen p. 1 Kanonische Primfaktorzerlegung Jede natürliche Zahl n kann auf eindeutige Weise in der Form n = p α 1 1 pα 2 2... pα k k geschrieben werden, wobei k N 0, α i N
MehrSpeicher und Adressraum
Linearer Speicher (Adressraum) Technische Universität München Speicher und Adressraum Freie Speicherhalde (Heap) Freier Speicherstapel (Stack) Globale Variablen Bibliotheksfunktionen Laufzeitsystem Programmcode
Mehr12. Rekursion Grundlagen der Programmierung 1 (Java)
12. Rekursion Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 24. Januar 2006 Einordnung im Kontext der Vorlesung
Mehr1 Die Mandelbrotmenge
1 Die Mandelbrotmenge In diesem Abschnitt wollen wir mathematische Aspekte der sogenannten Mandelbrotmenge beleuchten, die wir im Folgenden mit M bezeichnen wollen. 1 Ihr Name ist ihrem Entdecker Benoît
MehrBeispiel: Fibonacci-Zahlen
Beispiel: Fibonacci-Zahlen Unendliche Reihe: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34,... Fibonacci-Kaninchen: L. P. Fibonacci (1170-1250) G. Zachmann Informatik 1 - WS 05/06 Rekursion 23 Fibonacci Zahlen in der
MehrEffiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra
Effiziente Algorithmen und Datenstrukturen I Kapitel 10: Lineare Algebra Christian Scheideler WS 2008 19.02.2009 Kapitel 10 1 Überblick Notation Arithmetik auf großen Zahlen (Addition und Multiplikation)
MehrEinführung in die C-Programmierung
Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).
Mehr1 Potenzen und Polynome
1 Potenzen und Polynome Für eine reelle Zahl x R und eine natürliche Zahl n N definieren wir x n := x x x... x }{{} n-mal Einschub über die bisher aufgetretenen mathematischen Symbole: Definition mittels
MehrJava: Eine kurze Einführung an Beispielen
Java: Eine kurze Einführung an Beispielen Quellcode, javac und die JVM Der Quellcode eines einfachen Java-Programms besteht aus einer Datei mit dem Suffix.java. In einer solchen Datei wird eine Klasse
MehrVorkurs Mathematik. Vorlesung 5. Cauchy-Folgen
Prof. Dr. H. Brenner Osnabrück WS 2014/2015 Vorkurs Mathematik Vorlesung 5 Cauchy-Folgen Ein Problem des Konvergenzbegriffes ist, dass zur Formulierung der Grenzwert verwendet wird, den man unter Umständen
MehrÜbung zur Vorlesung Berechenbarkeit und Komplexität
RWTH Aachen Lehrgebiet Theoretische Informatik Reidl Ries Rossmanith Sanchez Tönnis WS 2012/13 Übungsblatt 7 26.11.2012 Übung zur Vorlesung Berechenbarkeit und Komplexität Aufgabe T15 Entwickeln Sie ein
MehrNumerische Verfahren und Grundlagen der Analysis
Numerische Verfahren und Grundlagen der Analysis Rasa Steuding Hochschule RheinMain Wiesbaden Wintersemester 2011/12 R. Steuding (HS-RM) NumAna Wintersemester 2011/12 1 / 16 4. Groß-O R. Steuding (HS-RM)
MehrZugriff auf Matrizen. Anhängen von Elementen. Punktweise Operatoren. Vektoren und Matrizen in MATLAB II
Zugriff auf Matrizen. Anhängen von Elementen. Punktweise Operatoren. Vektoren und Matrizen in MATLAB II Matrixzugriff Wir wollen nun unsere Einführung in die Arbeit mit Vektoren und Matrizen in MATLAB
MehrErwin Grüner 09.02.2006
FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife
MehrKombinatorik von Zahlenfolgen
6. April 2006 Vorlesung in der Orientierungswoche 1 Kombinatorik von Zahlenfolgen Einige Beispiele Jeder kennt die Fragen aus Intelligenztests, in denen man Zahlenfolgen fortsetzen soll. Zum Beispiel könnten
MehrÜbungen zu Algorithmen
Institut für Informatik Universität Osnabrück, 08.11.2016 Prof. Dr. Oliver Vornberger http://www-lehre.inf.uos.de/~ainf Lukas Kalbertodt, B.Sc. Testat bis 16.11.2016, 14:00 Uhr Nils Haldenwang, M.Sc. Übungen
MehrProgrammieren in C. Rekursive Funktionen. Prof. Dr. Nikolaus Wulff
Programmieren in C Rekursive Funktionen Prof. Dr. Nikolaus Wulff Rekursive Funktionen Jede C Funktion besitzt ihren eigenen lokalen Satz an Variablen. Dies bietet ganze neue Möglichkeiten Funktionen zu
MehrDr. Monika Meiler. Inhalt
Inhalt 4 C-Anweisungen...4-2 4.1 Ausdrucksanweisungen...4-3 4.2 Zusammengesetzte Anweisungen (Anweisungsblöcke)...4-3 4.3 Schleifenanweisungen...4-4 4.3.1 while - Schleife...4-4 4.3.2 do - Schleife...4-5
MehrEinführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)
Wintersemester 2007/08 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät für Informatik Lehrstuhl
MehrIm Folgenden möchte ich einige einfache Algorithmen zur Berechnung dieser Zahlenfolge besprechen.
Die Fibonacci-Folge Leonardo Fibonacci (er vermittelte dem Abendland die arabischen Rechentechniken) stellte 1202 in seinem liber abaci folgende Aufgabe: Gegeben sei ein Kaninchenpaar. Jedes Kaninchenweibchen
MehrHans Walser. Die allgemeine Fibonacci-Folge
Hans Walser Die allgemeine Fibonacci-Folge Hans Walser: Die allgemeine Fibonacci-Folge ii Inhalt Die Rekursion... Heuristischer Hintergrund... 3 Formel von Binet... 4 Übersicht... 5 Sonderfälle...3 6 Beispiele...3
Mehr1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH
1 Aufgaben 1.1 Umgebungsvariable setzen: CLASSPATH Die Umgebungsvariable CLASSPATH kann im Hamster-Simulator sowohl für Compiler als auch für die Ausführung des Hamster-Programms gesetzt werden: Hierdurch
MehrProbeklausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 12. April 2007, Uhr Bearbeitungszeit: 105 Minuten
Probeklausur Programmieren in C Sommersemester 2007 Dipl. Biol. Franz Schenk 12. April 2007, 13.00-14.45 Uhr Bearbeitungszeit: 105 Minuten Schalten Sie ihr Mobiltelefon aus. Bei der Klausur ist als einziges
MehrKlausur Informatik 1 SS 08. Aufgabe 1 2 3 4 Max. Punkte 30 40 40 10 Punkte. Gesamtpunkte:
Klausur Informatik 1 SS 08 Aufgabe 1 2 3 4 Max. Punkte 30 40 40 10 Punkte Gesamtpunkte: Note: Bearbeitungszeit 120 Minuten Keine Hilfsmittel Tragen Sie als erstes Ihren vollständigen Namen und Ihre Matrikelnummer
Mehr1 Modulare Arithmetik
$Id: modul.tex,v 1.10 2012/04/12 12:24:19 hk Exp $ 1 Modulare Arithmetik 1.2 Euklidischer Algorithmus Am Ende der letzten Sitzung hatten wir den größten gemeinsamen Teiler zweier ganzer Zahlen a und b
MehrBabeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Rekursion
Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005 Rekursion Rekursion Neue Denkweise Wikipedia: Als Rekursion bezeichnet man den Aufruf
MehrÜbungen zum Vorkurs Mathematik für Studienanfänger Ein leeres Produkt ist gleich 1, eine leere Summe 0. ***
Universität Bonn Mathematisches Institut Dr. Michael Welter Übungen zum Vorkurs Mathematik für Studienanfänger 2013 Einige Zeichen und Konventionen: IN := {1, 2, 3, 4,...} Die Menge der natürlichen Zahlen
MehrInhaltsverzeichnis. Vorwort 1. I Zahlen 5. II Algebra 29
Inhaltsverzeichnis Vorwort 1 I Zahlen 5 1. Rechnen mit ganzen Zahlen 6 Addition, Subtraktion und Multiplikation............. 7 Division mit Rest........................... 7 Teiler und Primzahlen........................
MehrPass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl
Funktionen Zusammenfassung von Befehlssequenzen als aufrufbare/wiederverwendbare Funktionen in einem Programmblock mit festgelegter Schnittstelle (Signatur) Derartige prozedurale Programmierung erlaubt
MehrEinführung in die Programmierung mit VBA
Einführung in die Programmierung mit VBA Vorlesung vom 07. November 2016 Birger Krägelin Inhalt Vom Algorithmus zum Programm Programmiersprachen Programmieren mit VBA in Excel Datentypen und Variablen
MehrJAVA - Methoden - Rekursion
Übungen Informatik I JAVA - Methoden - Rekursion http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 1 Methoden Methoden sind eine Zusammenfassung von Deklarationen und Anweisungen
MehrAlgorithmen II Vorlesung am 15.11.2012
Algorithmen II Vorlesung am 15.11.2012 Kreisbasen, Matroide & Algorithmen INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmen nationales
MehrErste Schritte der Programmierung in C
Erste Schritte der Programmierung in C C versus C++ Anatomie von C-Programmen für AVR- Mikrocontroller Unterschiede zwischen C++ und C 1 Grundlegende Unterschiede File-Extensions (Header und Quellcode)
MehrDifferenzengleichungen. und Polynome
Lineare Differenzengleichungen und Polynome Franz Pauer Institut für Mathematik, Universität Innsbruck Technikerstr. 13/7, A-600 Innsbruck, Österreich franz.pauer@uibk.ac.at 1 Einleitung Mit linearen Differenzengleichungen
MehrSystem.out.println("TEXT");
Inhaltsübersicht - Erstes Beispiel - Datentypen - Ausdrücke und Operatoren - Schleifen / Bedinungen - Struktogramme - Grundgerüst eines Programms in JAVA - Einlesen von Daten Erstes Beispiel public class
Mehr2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik
Stefan Lucks Diskrete Strukturen (WS 2009/10) 57 2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Uhr: Stunden mod 24, Minuten mod 60, Sekunden mod 60,... Rechnerarithmetik: mod 2 w, w {8, 16, 32,
MehrPotenzen - Wurzeln - Logarithmen
Potenzen - Wurzeln - Logarithmen Anna Geyer 4. Oktober 2006 1 Potenzrechnung Potenz Produkt mehrerer gleicher Faktoren 1.1 Definition (Potenz): (i) a n : a... a, n N, a R a... Basis n... Exponent od. Hochzahl
MehrProgrammieren in C/C++ und MATLAB
Programmieren in C/C++ und MATLAB Sven Willert Sabine Schmidt Christian-Albrechts-Universität zu Kiel CAU 4-1 Übung 1) Schreiben Sie ein Programm, das die Fläche unter einer Parabel, also das Integral
MehrRekursive Funktionen
Um Rekursion zu verstehen, muss man vor allem Rekursion verstehen. http://www2.norwalk-city.k12.oh.us/wordpress/precalc/files/2009/05/mona-lisa-jmc.jpg Rekursive Funktionen OOPM, Ralf Lämmel Was ist Rekursion?
MehrGrundlagen der Programmierung WS 15/16 (Vorlesung von Prof. Bothe)
Humboldt-Universität zu Berlin Institut für Informatik Grundlagen der Programmierung WS 15/16 (Vorlesung von Prof. Bothe) Übungsblatt 4: Felder und Rekursion Abgabe: bis 9:00 Uhr am 14.12.2015 über Goya
MehrDer Euklidische Algorithmus
Euklid.nb 1 Der Euklidische Algorithmus (Euklid von Alexandria ca. 365-300 v.chr.) Realisierung in den Versionen: Subtraktionsform, Divisionsform, iterativ, rekursiv und regelbasiert Nimmt man abwechselnd
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
MehrKomplexität von Algorithmen
Komplexität von Algorithmen Ziel Angabe der Effizienz eines Algorithmus unabhängig von Rechner, Programmiersprache, Compiler. Page 1 Eingabegröße n n Integer, charakterisiert die Größe einer Eingabe, die
MehrC++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22
C++ Teil 2 Sven Groß IGPM, RWTH Aachen 16. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 2 16. Apr 2015 1 / 22 Themen der letzten Vorlesung Hallo Welt Elementare Datentypen Ein-/Ausgabe Operatoren Sven
MehrMatheBasics Teil 4 Grundlagen der Mathematik
Fernstudium Guide Online Vorlesung Wirtschaftswissenschaft MatheBasics Teil 4 Grundlagen der Mathematik Version vom 02.11.2015 Dieses Werk ist urheberrechtlich geschützt. Jegliche unzulässige Form der
MehrAlgebra und Diskrete Mathematik, PS3. Sommersemester Prüfungsfragen
Algebra und Diskrete Mathematik, PS3 Sommersemester 2016 Prüfungsfragen Erläutern Sie die Sätze über die Division mit Rest für ganze Zahlen und für Polynome (mit Koeffizienten in einem Körper). Wodurch
MehrIdeen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn
Ideen und Konzepte der Informatik Programme und Algorithmen Kurt Mehlhorn November 2016 Algorithmen und Programme Algorithmus = Schritt-für-Schritt Vorschrift zur Lösung eines Problems. Formuliert man
MehrFibonacci-Zahlen. Geschichte. Definition. Quotienten
Mathematik/Informatik Die Fibonacci-Zahlen Gierhardt Fibonacci-Zahlen Geschichte Im Jahre 0 wurde in Pisa ein Buch über das indischarabische Dezimalsystem von dem italienischen Mathematiker Leonardo Fibonacci
MehrSteuerung von Programmabläufen. Vorlesung Computergestützte Mathematik zur Linearen Algebra. Lehrstuhl für Angewandte Mathematik Sommersemester 2009
Steuerung von Programmabläufen Vorlesung Computergestützte Mathematik zur Linearen Algebra Lehrstuhl für Angewandte Mathematik Sommersemester 2009 7. und 14. Mai 2009 For-Schleifen Bisher: Matlab -Kommandos
MehrKonzepte und Methoden der Programmierung Lösungen P. Fierz / FS 2012
Kapitel 1 Rekursion Alle Programme finden Sie im mitgelieferten zip-file. Aufgabe 1.1 [Fakultät] Für diese Übung brauchen Sie die Klassen Factorial Skelett und MyTimer. n! ist rekursiv folgendermassen
MehrSyntax von LOOP-Programmen
LOOP-Berechenbarkeit Syntax von LOOP-Programmen Definition LOOP-Programme bestehen aus: Variablen: x 0, x 1, x 2, x 3,... Konstanten: 0, 1, 2, 3,... Trennsymbolen:; und := Operationen: + und Befehlen:
Mehr