SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Downloaden Sie, um offline zu lesen
Schwerpunktfach Physik und Angewandte Mathematik
Numerische Methoden:
Approximation und Integration
Programmierung TI-89
Bruggmann Roland
Luzern, Mai 2005
Maturitätsschule für Erwachsene MSE, Reussbühl
Inhaltsverzeichnis
1. Einleitung 1
1.1. Inhalt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Erfassen von Funktionen im Y-Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3. Flussdiagramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2. Das Programm 3
2.1. Programmstart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.1. Start mit VAR-LINK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.2. Start mit CATALOG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.3. Konfigurationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.2. Erfassen von Aufgabe, Methode und Funktion . . . . . . . . . . . . . . . . . . . . . . . 5
2.2.1. Aufgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2.2. Methode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2.3. Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3. Erfassen der Parameter für die Approximation . . . . . . . . . . . . . . . . . . . . . . . 7
2.3.1. Bisection oder Regula falsi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3.2. Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.4. Erfassen der Parameter für die Integration . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.4.1. Rechteck- oder Trapez-Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.4.2. Tangenten- oder Simpson-Verfahren . . . . . . . . . . . . . . . . . . . . . . . . 10
2.5. Resultate speichern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.5.1. Variablenname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.5.2. Approximation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.5.3. Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.6. Ende der Berechnungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3. Resultate als Matrizenvariable 15
A. Quellcode 18
A.1. Programmstart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
A.2. Konfigurationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
A.3. Erfassen von Aufgabe, Methode und Funktion . . . . . . . . . . . . . . . . . . . . . . . 20
A.4. Hauptteil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
A.4.1. Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
A.4.2. Approximation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
A.4.3. Resultat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
A.5. Speichern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
A.6. Ende der Berechnungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
A.7. Ausgangslage erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
0
1. Einleitung
1.1. Inhalt
Diese Arbeit dokumentiert eine Implementation numerischer Methoden zur Approximation (Bisection,
Regula falsi und Newton) und Integration (Rechteck-, Trapez-, Tangenten- und Simpson-Verfahren) für
den Taschenrechner TI-89. Als Programmiersprache kommt TI-Basic zum Einsatz, den Quellcode zum
Programm «nummeth() – Numerische Methoden» wurde auf einer Intel-x86-Maschine mit GNU/Linux
als Betriebssystem und dem Editor «Kate» erstellt. Um das Programm auf den TI-89 zu laden, wurde
die Software «TiLP» verwendet. Als Nachschlagwerke und Grundlage zur Programmierung dienten
ausschliesslich das dem TI-89 von Texas Instruments mitgelieferte Benutzerhandbuch zur Advanced
Mathematics Software Version 2.0 [1] in gedruckter Form sowie die Hinweise zur Version 2.8 [2] als PDF.
Der Quellcode ist im Anhang A zu finden – er ist zur Lesehilfe in Absätze gegliedert.
1.2. Erfassen von Funktionen im Y-Editor
Funktionen können im Y-Editor eingegeben und im Bildschirm Graph zur Wahl des Intervalls untersucht
werden. Die im Y-Editor eingegebenen Funktionen y1(x) bis y10(x) stehen dem Programm nummeth
zur Verfügung, können darin also optional ausgewählt werden – sowohl bei einer Approximation als
auch bei einer Integration. Eine Funktion kann aber auch erst nach dem Programmstart mit den anderen
Parametern (Intervall, Iterationen etc.) erfasst werden. Dies wird im folgenden Kapitel erklärt.
1.3. Flussdiagramm
Grundsätzlich werden Kenntnisse zur Bedienung des Taschenrechners TI-89 voraussgesetzt. Dessen
Funktionalität kann z.B. im Benutzerhandbuch [1] nachgeschlagen werden, das zum Rechner mitgeliefert
wurde. Der serielle Ablauf des Programmes nummeth ist in einem Flussdiagramm dargestellt (siehe
Abbildung 1.1). Mit ESC kann jeweils zum vorherigen Fenster gewechselt werden. Numerische Eingaben
werden jeweils auf ihre Gültigkeit geprüft. Bei einer ungültigen Eingabe erscheint eine Fehlermeldung.
Danach besteht die Möglichkeit, die Eingabe zu korrigieren.
1
Abbildung 1.1.: Flussdiagramm zu nummeth
2
2. Das Programm
2.1. Programmstart
Abbildung 2.1.: Eingabezeile mit Pfad zum Programm nummeth
2.1.1. Start mit VAR-LINK
Mit 2nd VAR-LINK kann der Variablen-Bildschirm aufgerufen werden. Im Ordner NUMERIK ist die
Programmvariable nummeth zu finden. Diese ist mit dem Cursor zu markieren und mit der Taste ENTER
zu bestätigen (siehe Abbildung 2.2). Der Pfad der Programmvariablen ist somit in die Eingabezeile kopiert
worden. Dieser muss nun noch mit einer schliessenden runden Klammer ’)’ ergänzt werden. Mit ENTER
wird das Programm gestartet (siehe Abbildung 2.1).
Abbildung 2.2.: Variablen-Bildschirm mit Ordner Numerik und Programmvariable nummeth
3
2.1.2. Start mit CATALOG
Mit CATALOG F4 User-Defined werden gespeicherte Funktions- und Programmvariablen ange-
zeigt. Mit dem Cursor den Pfeil zu ’nummeth(’ bewegen (siehe Abbildung 2.3) und die Taste ENTER
betätigen. Der Pfad der Programmvariablen ist somit in die Eingabezeile kopiert worden. Dieser muss nun
noch mit einer schliessenden runden Klammer ’)’ ergänzt werden (siehe Abbildung 2.1). Mit ENTER wird
das Programm gestartet.
Abbildung 2.3.: Variablen-Katalog mit Eintrag nummeth
2.1.3. Konfigurationen
Mit dem Start des Programms werden einige Konfigurationen ausgelöst. Das Programm wird auf Fehler
überprüft, aktuelles Verzeichnis wird nach Möglichkeit NUMERIK, aktuelle Einstellungen der Modi unter
MODE werden gesichert und für die Dauer des Programmablaufs konfiguriert, eine Parameterliste wird
erstellt und der Y-Editor wird auf erfasste Funktionen untersucht. Dies kann beim erstmaligen Gebrauch
des Programms einige Sekunden dauern.
4
2.2. Erfassen von Aufgabe, Methode und Funktion
2.2.1. Aufgabe
Die Wahl der Aufgabe erfolgt per Cursor im Drop-Down-Menu, bestätigen mit ENTER (siehe Abbildung
2.4).
Abbildung 2.4.: Dialog Numerische Methoden mit Dropdown zur Wahl der Aufgabe
2.2.2. Methode
Die Wahl einer Methode erfolgt sowohl für die numerische Approximation als auch für die numerische
Integration in einem Dropdown per Cursor – mit ENTER kann die Auswahl bestätigt werden (siehe
Abbildung 2.5).
Abbildung 2.5.: Dialoge Numerische Approximation und Numerische Integration mit Dropdown zur Wahl
einer Methode
5
2.2.3. Funktion
Sind im Y-Editor Funktionen erfasst worden, erscheint nach der Wahl einer Methode ein Dialog ’Parameter’
mit der Möglichkeit, eine der erfassten Funktionen zur weiteren Bearbeitung auszuwählen. Dies erfolgt im
Drop-Down-Menu ’Funktion aus dem Y-Editor uebernehmen?’ durch die Wahl des Eintrages ’Ja’ (siehe
Abbildung 2.6).
Abbildung 2.6.: Dialog Parameter zum übernehmen einer Funktion aus dem Y-Editor
Die Wahl der Funktion erfolgt per Cursor im Drop-Down-Menu ’f(x) = ’. Hat eine der erfassten
Funktionen mehr als 18 Zeichen, wird deren Bezeichnung wie im Y-Editor angezeigt, z.B. y3(x) (siehe
Abbildung 2.7).
Abbildung 2.7.: Dialog Parameter mit Dropdown zur Wahl der Funktion aus dem Y-Editor
6
2.3. Erfassen der Parameter für die Approximation
2.3.1. Bisection oder Regula falsi
Zu beachten: Für diese Methoden muss das Intervall so gewählt werden, dass der Funktionswert von
a kleiner Null und der Funktionswert von b grösser Null ist (d.h. f(a) < 0, f(b) > 0). Die Anzahl
Iterationen n muss mit einer ganzen, positiven Zahl angegeben werden (d.h. n ∈ N).
Abbildung 2.8.: Dialog Numerische Approximation für die Methode Bisection
Abbildung 2.9.: Dialog Numerische Approximation für die Methode Regula falsi
7
2.3.2. Newton
Der Startwert für die Methode Newton muss wie folgt gewählt werden:
• Der Funktionswert darf nicht Null betragen (d.h. f(x0) = 0).
• Die Steigung der Tangente durch den Startwert darf nicht Null sein (d.h. f (x0) = 0).
Für die Methode nach Newton kann zwischen der Anzahl Iterationen und der Genauigkeit gewählt werden.
• n Iterationen: Die Berechnung wird nach der gegebene Anzahl Iterationen abgebrochen.
• Genauigkeit eps: Die Berechnung wird abgebrochen, sobald die Differenz der letzten zwei Resultate
kleiner ist als der in eps angegebene Wert.
Abbildung 2.10.: Dialog Numerische Approximation für die Methode Newton
8
2.4. Erfassen der Parameter für die Integration
Für diese Methoden muss das Intervall so gewählt werden, dass die Funktionswerte von a und von b
grösser als Null sind, wobei b grösser als a ist (d.h. a < b, f(a) > 0, f(b) > 0). Die Angabe der Anzahl
Schritte n muss eine ganze, positive Zahl sein (d.h. n ∈ N).
2.4.1. Rechteck- oder Trapez-Verfahren
Abbildung 2.11.: Dialog Numerische Integration für die Methode Rechteck-Verfahren
Abbildung 2.12.: Dialog Numerische Integration für die Methode Trapez-Verfahren
9
2.4.2. Tangenten- oder Simpson-Verfahren
Die Angabe der Anzahl Schritte n muss hier eine ganze, positive und gerade Zahl sein (d.h. n ∈ Ng).
Abbildung 2.13.: Dialog Numerische Integration für die Methode Tangenten-Verfahren
Abbildung 2.14.: Dialog Numerische Integration für die Methode Simpson-Verfahren
10
2.5. Resultate speichern
2.5.1. Variablenname
Um die Resultate zu speichern, werden Variablennamen wie folgt generiert:
• Matrizenvariable für die Ergebnisse:
– die ersten drei Buchstaben der Aufgabe: Approximation oder Integration
– die ersten vier Buchstaben der Methode: Bisection, Regula falsi, Newton, Rechteck, Trapez,
Tangenten oder Simpson
– die Ziffer 1 als möglicher Zähler
– Beispiele: AppRegu1, IntTang1
• Variable für die Nullstellen:
– NS als Kurzform für Nstelle
– die ersten vier Buchstaben der Methode: Bisection, Regula falsi, Newton
– die Ziffer 1 als möglicher Zähler
– Beispiele: NSBise1, NSNewt1
Diese Variablennamen können auch geändert werden, wobei im TI-89 die Länge der Variablennamen
auf acht Zeichen beschränkt ist. Existiert im Verzeichnis Numerik bereits eine Variable mit gewähltem
Variablennamen, wird dies im Dialog ’Matirzenvariable’ gemeldet (siehe Abbildung 2.15). Mit ENTER
wird die bestehende Variable überschrieben, mit ESC kann zurück in die Resultat-Anzeige gewechselt und
die Variable editiert werden.
Abbildung 2.15.: Dialog Matirzenvariable
11
2.5.2. Approximation
Nullstelle sowie Ergebnisse können im Dialog ’Resultat’ ins angegebene Verzeichnis gespeichert werden
(siehe Abbildungen 2.16, 2.17 und 2.18).
Abbildung 2.16.: Dialog Resultat für die Methode Bisection
Abbildung 2.17.: Dialog Resultat für die Methode Regula falsi
Abbildung 2.18.: Dialog Resultat für die Methode Newton
12
2.5.3. Integration
Die Ergebnisse können per Dialog ’Resultat’ ins angegebene Verzeichnis gespeichert werden (siehe
Abbildungen 2.19, 2.20, 2.21 und 2.22).
Abbildung 2.19.: Dialog Resultat für die Methode Rechteck-Verfahren
Abbildung 2.20.: Dialog Resultat für die Methode Trapez-Verfahren
Abbildung 2.21.: Dialog Resultat für die Methode Tangenten-Verfahren
13
Abbildung 2.22.: Dialog Resultat für die Methode Simpson-Verfahren
2.6. Ende der Berechnungen
Abbildung 2.23.: Pop-Up zur Wahl zwischen einer neuen Berechnung oder der Rückkehr zum Home-
Bildschirm
• Neue Berechnung: Die Routine kehrt zurück zur Auswahl der Aufgabe.
• Home: Der Bildschirm Home wird eingeblendet, aktuelles Verzeichnis wird das aktuelle Verzeichnis
vor Programmstart, MODE-Einstellungen werden zurückgesetzt auf den Stand wie vor dem Pro-
grammstart.
Achtung: ESC sollte hier nicht verwendet werden, da sonst ein möglicher Fehler (Undefined Varia-
ble) das Zurückstellen der MODE -Einstellungen auf die zu Beginn gesicherten Parameter umgeht.
14
3. Resultate als Matrizenvariable
Die als Matrizenvariable gespeicherten Resultate können mit APPS 6:Data/Matrix Editor
2:Open... geöffnet werden (siehe Abbildung 3.1). Folgende Einträge in den Drop-Down-Menus müssen
gewählt werden (siehe Abbildung 3.2):
• Als ’Type’ muss ’Matrix’ gewählt werden.
• ’Folder’ ist der Ordner, in das die Matrize gespeichert wurde.
• ’Variable’ ist der Name der Matirzenvariable.
Abbildung 3.1.: Eintrag des Matrix-Editors in der Liste von Applikationen
Abbildung 3.2.: Öffnen-Dialog
15
In die Matrize werden jeweils auch Aufgabe, Methode und Funktion gespeichert, damit ersichtliche ist,
wie die Resultate zustande kamen. In der Tabelle kann mit den Pfeiltasten gearbeitet werden: Der Inhalt
der aktiven Zelle wird jeweils in der Eingabezeile eingeblendet (siehe Abbildung 3.3).
Abbildung 3.3.: Resultat in der Matrizen-Ansicht
16
Abbildungsverzeichnis
1.1. Flussdiagramm zu nummeth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.1. Eingabezeile mit Pfad zum Programm nummeth . . . . . . . . . . . . . . . . . . . . . . 3
2.2. Variablen-Bildschirm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.3. Variablen-Katalog mit Eintrag nummeth . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.4. Dialog Numerische Methoden mit Dropdown zur Wahl der Aufgabe . . . . . . . . . . . 5
2.5. Dialoge Numerische Approximation und Numerische Integration mit Dropdown zur Wahl
einer Methode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.6. Dialog Parameter zum übernehmen einer Funktion aus dem Y-Editor . . . . . . . . . . . 6
2.7. Dialog Parameter mit Dropdown zur Wahl der Funktion aus dem Y-Editor . . . . . . . . 6
2.8. Dialog Numerische Approximation für die Methode Bisection . . . . . . . . . . . . . . 7
2.9. Dialog Numerische Approximation für die Methode Regula falsi . . . . . . . . . . . . . 7
2.10. Dialog Numerische Approximation für die Methode Newton . . . . . . . . . . . . . . . 8
2.11. Dialog Numerische Integration für die Methode Rechteck-Verfahren . . . . . . . . . . . 9
2.12. Dialog Numerische Integration für die Methode Trapez-Verfahren . . . . . . . . . . . . 9
2.13. Dialog Numerische Integration für die Methode Tangenten-Verfahren . . . . . . . . . . 10
2.14. Dialog Numerische Integration für die Methode Simpson-Verfahren . . . . . . . . . . . 10
2.15. Dialog Matirzenvariable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.16. Dialog Resultat für die Methode Bisection . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.17. Dialog Resultat für die Methode Regula falsi . . . . . . . . . . . . . . . . . . . . . . . 12
2.18. Dialog Resultat für die Methode Newton . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.19. Dialog Resultat für die Methode Rechteck-Verfahren . . . . . . . . . . . . . . . . . . . 13
2.20. Dialog Resultat für die Methode Trapez-Verfahren . . . . . . . . . . . . . . . . . . . . . 13
2.21. Dialog Resultat für die Methode Tangenten-Verfahren . . . . . . . . . . . . . . . . . . . 13
2.22. Dialog Resultat für die Methode Simpson-Verfahren . . . . . . . . . . . . . . . . . . . 14
2.23. Pop-Up Neue Berechnung oder Home . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.1. Eintrag des Matrix-Editors in der Liste von Applikationen . . . . . . . . . . . . . . . . 15
3.2. Öffnen-Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3. Resultat in der Matrizen-Ansicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Literaturverzeichnis
[1] TEXAS INSTRUMENTS: TI-89/TI-92 Plus Benutzerhandbuch. Advanced Mathematics Software Version
2.0, 1999.
[2] TEXAS INSTRUMENTS: TI-89/TI-92 Plus/Voyage 200 PLT Version 2.08 - Versionshinweise. Advanced
Mathematics Software Version 2.8, 2002.
17
A. Quellcode
Autor: Roland Bruggmann (mailto:roland.bruggmann@gmx.net)
Version: 1.02, April 29, 2005
Synopsis: nummeth() is a program written in TI-Basic for the pocket calculator TI-89 and serves with
well known methods for numeric approximation and numeric integration.
License: This program is free software; you can redistribute it and/or modify it under the terms of the
GNU General Public License as published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
A.1. Programmstart
:nummeth()
:Prgm
:@Numerische Methoden
Numerische Approximation
(Bisection, Regula falsi, Newton) und
Numerische Integration
(Rechteck−, Trapez−, Tangenten−, Simpson−Verfahren)
Hinweis:
y1 bis y10 des Y-Editors koennen
ins Programm uebernommen werden
:@ Version 1.02, 29. April 2005
:@ Roland Bruggmann
:@ Email: roland.bruggmann@gmx.net
:ClrIO
:Disp ""
:Disp "..."
A.2. Konfigurationen
:@Konfigurationen
:Local i,oldfoldr,yeditor,z,gmlist
:@Verzeichnis
:getFold()→oldfoldr
:Lbl neuverz
:Try
: setFold(numerik)
:Else
: ClrErr
: Try
18
: NewFold numerik
: Else
: ClrErr
: Goto modus
: EndTry
: Goto neuverz
:EndTry
:@Modus
:Lbl modus
:getMode("0")→gmlist
:setMode({
"1","1",
"3","1",
"4","1",
"5","1",
"6","1",
"7","1",
"8","1",
"12","1",
"13","1",
"14","1"})
:@Parameterliste
:Try
: dim(numlist)
:Else
: ClrErr
: {"","","",""}→numlist
:EndTry
:@Y−Editor:y1 bis y10
:DelVar x
:0→z
:For i,1,10
: expr("y"&string(i)&"(x)")→yeditor
: If string(yeditor)="y"&string(i)&"(x)" Then
: 1+z→z
: If dim(string(yeditor))>18 Then
: "y"&string(i)&"(x)"→ylist[z]
: Else
: string(yeditor)→ylist[z]
: EndIf
: EndIf
:EndFor
:Try
: dim(ylist)
:Else
: ClrErr
: {"no"}→ylist
:EndTry
19
A.3. Erfassen von Aufgabe, Methode und Funktion
:@Aufgabe,Methode,Parameter1
:Local auf,meth,msf,msn,msm,mspa,msw,
pml,auflist,m1list,m2list
:"f(x) ="→msf
:"Numerische "→msn
:"Methode: "→msm
:"Parameter:"→mspa
:"Waehle "→msw
:{"Approximation","Integration"}→auflist
:{"Bisection","Regula falsi","Newton"}→m1list
:{"Rechteck","Trapez","Tangenten","Simpson"}→m2list
:{"Ja","Nein"}→qlist
:Lbl aufgabe
:Dialog
: Title msn&"Methoden"
: DropDown msw&"Aufgabe:",auflist,auf
:EndDlog
:If ok=0
: Goto neub
:Lbl methode
:Dialog
: Title msn&auflist[auf]
: DropDown msw&msm,expr("m"&string(auf)&"list"),meth
:EndDlog
:If ok=0
: Goto aufgabe
:Lbl pam1
:If ylist[1]="no" Then
: 2→pml
: Dialog
: Title mspa
: Text "Funktion aus dem Y-Editor"
: DropDown "uebernehmen?",qlist,pml
: DropDown msf,ylist,yl
: EndDlog
: If ok=0
: Goto methode
: If pml=1
: ylist[yl]→numlist[1]
:EndIf
20
A.4. Hauptteil
:@Hauptteil
:Local a,b,k,msfa,msi,msnt,n,titl,w
:" failed"→msfa
:"Interval = [a,b]"→msi
:" isn’t true"→msnt
:Lbl anfang
A.4.1. Integration
:If auf=2 Then
: @Integration
: Local h,s,msger,msv,ms21,ms22
: "-Verfahren"→msv
: "b>a"→ms21
: "f(a)*f(b)≥0"→ms22
: numlist[1]→fstring
: numlist[2]→n
: numlist[3]→a
: numlist[4]→b
: If meth>2 Then
: "n = Gerade Zahl "→msger
: Else
: ""→msger
: EndIf
: @Parameter
: Dialog
: Title msn&auflist[auf]
: Text msm&m2list[meth]&msv
: Text mspa
: Text ""
: Request msf,fstring,0
: Text msi&"; "&ms21&"; "&ms22
: Request "untere Grenze a =",a
: Request "obere Grenze
: b =",b
: Text msger
: Request "n Schritte",n
: EndDlog
: If ok=0 Then
: If ylist[1]="no"
: Goto methode
: Goto pam1
: EndIf
: {fstring,n,a,b}→numlist
: For i,1,dim(numlist)
: If numlist[i]=""
: Goto anfang
21
: EndFor
: @Test n=gerade
: If meth>2 and remain(expr(n),2)>0 Then
: Text msger&msnt
: Goto anfang
: EndIf
: @Test Interval
: expr(fstring)→f(x)
: expr(a)→a
: expr(b)→b
: For i,1,2
: If not expr(#("ms2"&string(i))) Then
: Text expr("ms2"&string(i))&msnt
: Goto anfang
: EndIf
: EndFor
: @Kern
: expr(n)→n
: (b-a)/n→h
Rechteck- und Trapez-Methode
: If meth<3 Then
: @Kern rechteck u. trapez
: f(a)/meth→s
: setMode({"14","3"})
: [[0,a,f(a),s,h*s]]→loesung
: For i,1,n-1
: a+i*h→w
: s+f(w)→s
: augment(loesung;[[i,w,f(w),s,h*s]])→loesung
: EndFor
: If meth=2 Then
: @trapez
: s+f(b)/2→s
: augment(loesung;[[n,b,f(b),s,h*s]])→loesung
: EndIf
: h*s→res
Tangenten-Methode
: ElseIf meth=3 Then
: @Kern tangenten
: a+h→w
: f(w)→s
: setMode({"14","3"})
: [[1,w,f(w),s,2*h*s]]→loesung
: For i,3,n-1,2
: a+i*h→w
: s+f(w)→s
22
: augment(loesung;[[i,w,f(w),s,2*h*s]])→loesung
: EndFor
: 2*h*s→res
Simpson-Methode
: ElseIf meth=4 Then
: @Kern simpson
: f(a)→s
: 2→k
: setMode({"14","3"})
: [[0,a,f(a),s,h/3*s]]→loesung
: For i,1,n-1
: 6-k→k
: a+i*h→w
: s+k*f(w)→s
: augment(loesung;[[i,w,f(w),s,h/3*s]])→loesung
: EndFor
: s+f(b)→s
: augment(loesung;[[n,b,f(b),s,h/3*s]])→loesung
: h/3*s→res
: EndIf
Exakt – Fehler – Titelmatrize
: @Exakt,Fehler,Titelmatrize
: Local exakt,fehler
: Try
: string(approx( (f(x),x,a,b)))→exakt
: Else
: ClrErr
: msfa→exakt
: msfa→fehler
: Goto titel
: EndTry
: string(approx(round(abs((res-expr(exakt))
/(expr(exakt)))*100,2)))&"%"→fehler
: Lbl titel
: setMode({"14","1"})
: [[auflist[auf]&";"&expr("m"&string(auf)&"list")[meth]&msv,
fstring,
"h="&string(approx(h)),
"Exakt="&exakt,
"Fehler="&fehler],
["i","xi","f(xi)","ε","ΣA"]]→titl
23
A.4.2. Approximation
:Else
: @Approximation
: Local msit,stel
: "n Iterationen "→msit
: If meth=3 Then
: @Newton
: Local bed,bed1,bed2,eps,ms13,pa,palist,x0,x1
: "Startwert "→ms13
: {"n","eps"}→palist
: numlist[1]→fstring
: numlist[2]→n
: "0.0001"→eps
: numlist[4]→x0
: @Parameter
: Dialog
: Title msn&auflist[auf]
: Text msm&m1list[meth]
: Text mspa
: Text ""
: Request msf,fstring,0
: Request ms13&"x0=",x0
: DropDown msw&mspa,palist,pa
: Request msit,n
: Request "Genauigkeit eps",eps
: EndDlog
: If ok=0 Then
: If ylist[1]="no"
: Goto methode
: Goto pam1
: EndIf
: {fstring,n,eps,x0}→numlist
: If fstring="" or numlist[pa+1]="" or x0=""
: Goto anfang
: @Test Startwert
: expr(fstring)→f(x)
: expr(x0)→x0
: d(f(x),x)→g(x)
: If f(x0)*g(x0)=0 Then
: Text ms13&msfa&": f(x0)*f’(x0)=0"
: Goto anfang
: EndIf
Newton
: @Kern Newton
: expr(n)→n
: expr(eps)→eps
: "i=n"→bed1
24
: "abs(x1-x0)<eps"→bed2
: expr("bed"&string(pa))→bed
: [[auflist[auf],expr("m"&string(auf)&"list")[meth],
fstring,""]
["i","xi","f(xi)","f’(xi)"]]→titl
: setMode({"14","3"})
: [[0,x0,f(x0),g(x0)]]→loesung
: 1→i
: Loop
: x0-f(x0)/(g(x0))→x1
: augment(loesung;[[i,x1,f(x1),g(x1)]])→loesung
: If expr(bed)
: Exit
: x1→x0
: i+1→i
: EndLoop
: setMode({"14","1"})
: If pa=1 Then
: 7→stel
: Else
: dim(string(fPart(eps)))+1→stel
: EndIf
: x1→res
Bisection und Regula falsi
: Else
: @Bisection/Regula falsi
: Local kern,kern1,kern2,ms11,ms12
: "f(a)<0"→ms11
: "f(b)>0"→ms12
: numlist[1]→fstring
: numlist[2]→n
: numlist[3]→a
: numlist[4]→b
: @Parameter
: Dialog
: Title msn&auflist[auf]
: Text msm&m1list[meth]
: Text mspa
: Text ""
: Request msf,fstring,0
: Text msi
: Request ms11&"; a=",a
: Request ms12&"; b=",b
: Request msit,n
: EndDlog
: If ok=0 Then
: If ylist[1]="no"
25
: Goto methode
: Goto pam1
: EndIf
: {fstring,n,a,b}→numlist
: For i,1,dim(numlist)
: If numlist[i]=""
: Goto anfang
: EndFor
: @Test Interval
: expr(fstring)→f(x)
: expr(a)→a
: expr(b)→b
: For i,1,2
: If not expr(#("ms1"&string(i))) Then
: Text expr("ms1"&string(i))&msnt
: Goto anfang
: EndIf
: EndFor
: @Kern Bisection/Regula falsi
: expr(n)→n
: @Formel bisection
: "(a+b)/2"→kern1
: @Formel regula-falsi
: "a-(b-a)/(f(b)-f(a))*f(a)"→kern2
: expr("kern"&string(meth))→kern
: [[auflist[auf],expr("m"&string(auf)&"list")[meth],
fstring,"",""]
["i","a","b","xi","f(xi)"]]→titl
: expr(kern)→w
: setMode({"14","3"})
: [[1,a,b,w,f(w)]]→loesung
: For i,2,n
: If f(w)<0 Then
: w→a
: Else
: w→b
: EndIf
: expr(kern)→w
: augment(loesung;[[i,a,b,w,f(w)]])→loesung
: EndFor
: 7→stel
: w→res
: EndIf
: setMode({"14","1"})
:EndIf
:augment(titl;loesung)→loesung
:@Hauptteil Ende
26
A.4.3. Resultat
:@Resultat
:Local msa,mse,msma,msns,msr,mssp,msvn,msvz,
fldr,namelist,reslist,splist,varlist,ma,ns
:getFold()→fldr
:"max. acht Zeichen)"→msa
:"Ergebnisse als "→mse
:"Matrizenvariable "→msma
:"Nullstelle "→msns
:"Resultat "→msr
:"speichern? "→mssp
:"Variablenname "→msvn
:" Verzeichnis:"→msvz
:left(auflist[auf],3)
&left(expr("m"&string(auf)&"list")[meth],4)
&"1"→name1
:2→ns
:Lbl resultat
:If auf=1 Then
: @Approximation
: "NS"&left(m1list[meth],4)&"1"→name2
: Dialog
: Title msr&m1list[meth]
: Text msns&"= "&string(round(res,stel))
: DropDown " "&msns&mssp,qlist,ns
: Text msvz&fldr
: Request msvn,name2
: Text mse&msma
: DropDown mssp&" ",qlist,ma
: Text msvz&fldr
: Request msvn,name1
: Text " ("&msvn&msa
: EndDlog
:Else
: @Integration
: ""→name2
: Dialog
: Title msr&m2list[meth]&msv
: Text " h = (b-a)/n = "&string(round(h,3))
: Text " Naeherung N = "&string(round(res,6))
: Text " Exakt
: E = "&exakt
: Text " Fehler =|(N-E)/E|*100 = "&fehler
: Text mse&msma
: DropDown mssp&" ",qlist,ma
: Text msvz&fldr
: Request msvn,name1
: Text " ("&msvn&msa
27
: EndDlog
:EndIf
:If ok=0
: Goto anfang
:{ma,ns}→splist
:If splist={2,2}
: Goto neub
:@Test Variablennamen
:{name1,name2}→namelist
:For i,1,2
: If splist[i]=1 and (namelist[i]="" or dim(namelist[i])>8)
: Goto resultat
:EndFor
:If splist[2]=1 and namelist[2]="x" Then
: Dialog
: Title msns
: Text msvn&"x unzulaessig"
: EndDlog
: If ok=0
: Goto resultat
: Goto resultat
:EndIf
A.5. Speichern
:@Speichern
:{msma,msns}→varlist
:0→z
:For i,1,2
: Lbl neuname
: If z=1 Then
: Dialog
: Title varlist[i]
: Text msvn&namelist[i]
: Text "wird bereits verwendet."
: Text "Variable ueberschreiben?"
: EndDlog
: If ok=0
: Goto resultat
: DelVar #(expr("name"&string(i)))
: 0→z
: EndIf
: If i=1 and splist[1]=1 Then
: Try
: @Matirzenvariable
: Rename loesung,#name1
: Else
: If errornum=270 Then
28
: ClrErr
: 1→z
: Goto neuname
: Else
: PassErr
: EndIf
: EndTry
: ElseIf i=2 and splist[2]=1 Then
: Try
: @Nullstelle
: Rename res,#name2
: Else
: If errornum=270 Then
: ClrErr
: 1→z
: Goto neuname
: Else
: PassErr
: EndIf
: EndTry
: EndIf
:EndFor
A.6. Ende der Berechnungen
:@Neue Berechnung?
:Lbl neub
:Local nb
:PopUp {"Neue Berechnung","Home"},nb
:If nb=1 Then
: Goto aufgabe
:ElseIf nb=2 Then
: DispHome
:EndIf
A.7. Ausgangslage erstellen
:@Ausgangslage erstellen
:DelVar fstring,f,g,loesung,name1,name2,res,yl,qlist,ylist
:setMode(gmlist)
:Try
: setFold(#oldfoldr)
:Else
: ClrErr
:EndTry
:EndPrgm
29

Weitere ähnliche Inhalte

Was ist angesagt?

Informationsvisualisierung Im Semantic Web1
Informationsvisualisierung Im Semantic Web1Informationsvisualisierung Im Semantic Web1
Informationsvisualisierung Im Semantic Web1
brisvegas1
 
Sn Ikey Tft A 2 Operating Manual English
Sn Ikey Tft A 2 Operating Manual EnglishSn Ikey Tft A 2 Operating Manual English
Sn Ikey Tft A 2 Operating Manual English
guest16d235f
 

Was ist angesagt? (14)

J3dboolop
J3dboolopJ3dboolop
J3dboolop
 
agorum core-benutzer-handbuch-6 4-0
agorum core-benutzer-handbuch-6 4-0agorum core-benutzer-handbuch-6 4-0
agorum core-benutzer-handbuch-6 4-0
 
Creation ii v0.93 vorläufig
Creation ii v0.93 vorläufigCreation ii v0.93 vorläufig
Creation ii v0.93 vorläufig
 
Da Hanno Rabe
Da Hanno RabeDa Hanno Rabe
Da Hanno Rabe
 
Informationsvisualisierung Im Semantic Web1
Informationsvisualisierung Im Semantic Web1Informationsvisualisierung Im Semantic Web1
Informationsvisualisierung Im Semantic Web1
 
mabio
mabiomabio
mabio
 
Large Scale Multilayer Perceptron
Large Scale Multilayer PerceptronLarge Scale Multilayer Perceptron
Large Scale Multilayer Perceptron
 
Benutzerhandbuch Zeta Producer 9 CMS
Benutzerhandbuch Zeta Producer 9 CMSBenutzerhandbuch Zeta Producer 9 CMS
Benutzerhandbuch Zeta Producer 9 CMS
 
Homematic
HomematicHomematic
Homematic
 
Homematic
HomematicHomematic
Homematic
 
Serious Game "Virtual Surgery" - Game Design Document
Serious Game "Virtual Surgery" - Game Design DocumentSerious Game "Virtual Surgery" - Game Design Document
Serious Game "Virtual Surgery" - Game Design Document
 
Masterarbeit / Fakultät für Mathematik und Informatik / Lehrgebiet Datenverar...
Masterarbeit / Fakultät für Mathematik und Informatik / Lehrgebiet Datenverar...Masterarbeit / Fakultät für Mathematik und Informatik / Lehrgebiet Datenverar...
Masterarbeit / Fakultät für Mathematik und Informatik / Lehrgebiet Datenverar...
 
Vergleich des Scala Web-Frameworks Lift mit dem Java EE Programmiermodell
Vergleich des Scala Web-Frameworks Lift mit dem Java EE ProgrammiermodellVergleich des Scala Web-Frameworks Lift mit dem Java EE Programmiermodell
Vergleich des Scala Web-Frameworks Lift mit dem Java EE Programmiermodell
 
Sn Ikey Tft A 2 Operating Manual English
Sn Ikey Tft A 2 Operating Manual EnglishSn Ikey Tft A 2 Operating Manual English
Sn Ikey Tft A 2 Operating Manual English
 

Ähnlich wie Numerische Methoden: Approximation und Integration

Abaqus tutorial20060721 endversion
Abaqus tutorial20060721 endversionAbaqus tutorial20060721 endversion
Abaqus tutorial20060721 endversion
imranmahsud
 
Master thesis pascal_mueller01
Master thesis pascal_mueller01Master thesis pascal_mueller01
Master thesis pascal_mueller01
guest39ce4e
 
Lx7007 pro igc manual v2.02 (german)
Lx7007 pro igc manual v2.02 (german)Lx7007 pro igc manual v2.02 (german)
Lx7007 pro igc manual v2.02 (german)
televe
 
Lx7007 pro igc manual v2.02 (german)
Lx7007 pro igc manual v2.02 (german)Lx7007 pro igc manual v2.02 (german)
Lx7007 pro igc manual v2.02 (german)
televe
 
Manual kalypso risk_de_v2.0.1
Manual kalypso risk_de_v2.0.1Manual kalypso risk_de_v2.0.1
Manual kalypso risk_de_v2.0.1
Murtuja Alam
 
Planungshandbuch Ok
Planungshandbuch OkPlanungshandbuch Ok
Planungshandbuch Ok
guestf1f9fd
 

Ähnlich wie Numerische Methoden: Approximation und Integration (20)

Abaqus tutorial20060721 endversion
Abaqus tutorial20060721 endversionAbaqus tutorial20060721 endversion
Abaqus tutorial20060721 endversion
 
Dsvdoc
DsvdocDsvdoc
Dsvdoc
 
Dsvdoc
DsvdocDsvdoc
Dsvdoc
 
Dsvdoc
DsvdocDsvdoc
Dsvdoc
 
Dsvdoc
DsvdocDsvdoc
Dsvdoc
 
Bachelorarbeit paul gerber.pdf
Bachelorarbeit paul gerber.pdfBachelorarbeit paul gerber.pdf
Bachelorarbeit paul gerber.pdf
 
Dsvdoc
DsvdocDsvdoc
Dsvdoc
 
Dsvdoc
DsvdocDsvdoc
Dsvdoc
 
Dsvdoc
DsvdocDsvdoc
Dsvdoc
 
Master thesis pascal_mueller01
Master thesis pascal_mueller01Master thesis pascal_mueller01
Master thesis pascal_mueller01
 
OSG Volume Rendering
OSG Volume RenderingOSG Volume Rendering
OSG Volume Rendering
 
Entwicklung eines Frameworks zum automatisierten Handel eines Multi-Broker-PA...
Entwicklung eines Frameworks zum automatisierten Handel eines Multi-Broker-PA...Entwicklung eines Frameworks zum automatisierten Handel eines Multi-Broker-PA...
Entwicklung eines Frameworks zum automatisierten Handel eines Multi-Broker-PA...
 
Lx7007 pro igc manual v2.02 (german)
Lx7007 pro igc manual v2.02 (german)Lx7007 pro igc manual v2.02 (german)
Lx7007 pro igc manual v2.02 (german)
 
Lx7007 pro igc manual v2.02 (german)
Lx7007 pro igc manual v2.02 (german)Lx7007 pro igc manual v2.02 (german)
Lx7007 pro igc manual v2.02 (german)
 
Mocek Thesis
Mocek ThesisMocek Thesis
Mocek Thesis
 
Handbuch CONSIDEO Modeler V 5.0
Handbuch CONSIDEO Modeler V 5.0Handbuch CONSIDEO Modeler V 5.0
Handbuch CONSIDEO Modeler V 5.0
 
Dokumentation EMV-Messtechnik (Würth Elektronik Energy Harvesting Solution To...
Dokumentation EMV-Messtechnik (Würth Elektronik Energy Harvesting Solution To...Dokumentation EMV-Messtechnik (Würth Elektronik Energy Harvesting Solution To...
Dokumentation EMV-Messtechnik (Würth Elektronik Energy Harvesting Solution To...
 
Msrbas
MsrbasMsrbas
Msrbas
 
Manual kalypso risk_de_v2.0.1
Manual kalypso risk_de_v2.0.1Manual kalypso risk_de_v2.0.1
Manual kalypso risk_de_v2.0.1
 
Planungshandbuch Ok
Planungshandbuch OkPlanungshandbuch Ok
Planungshandbuch Ok
 

Mehr von Roland Bruggmann

Mehr von Roland Bruggmann (20)

Fingerprint Analysis – Preprocessing and Feature Extraction
Fingerprint Analysis – Preprocessing and Feature ExtractionFingerprint Analysis – Preprocessing and Feature Extraction
Fingerprint Analysis – Preprocessing and Feature Extraction
 
Unreal Engine IoT Project: Heartbeat
Unreal Engine IoT Project: HeartbeatUnreal Engine IoT Project: Heartbeat
Unreal Engine IoT Project: Heartbeat
 
3D Content for Dream-like VR
3D Content for Dream-like VR3D Content for Dream-like VR
3D Content for Dream-like VR
 
OSG Volume Rendering - Presentation
OSG Volume Rendering - PresentationOSG Volume Rendering - Presentation
OSG Volume Rendering - Presentation
 
Swiss National Supercomputing Centre CSCS
Swiss National Supercomputing Centre CSCSSwiss National Supercomputing Centre CSCS
Swiss National Supercomputing Centre CSCS
 
Sprechen als Handeln
Sprechen als HandelnSprechen als Handeln
Sprechen als Handeln
 
Multicore and GPU Programming
Multicore and GPU ProgrammingMulticore and GPU Programming
Multicore and GPU Programming
 
Unity® Volume Rendering - Abstract
Unity® Volume Rendering - AbstractUnity® Volume Rendering - Abstract
Unity® Volume Rendering - Abstract
 
Unity® Volume Rendering - Benutzerhandbuch
Unity® Volume Rendering - BenutzerhandbuchUnity® Volume Rendering - Benutzerhandbuch
Unity® Volume Rendering - Benutzerhandbuch
 
Digitale Kamera und Modulationstransferfunktion
Digitale Kamera und ModulationstransferfunktionDigitale Kamera und Modulationstransferfunktion
Digitale Kamera und Modulationstransferfunktion
 
Quadriken im Raum
Quadriken im RaumQuadriken im Raum
Quadriken im Raum
 
Ondes stationnaires
Ondes stationnairesOndes stationnaires
Ondes stationnaires
 
Passwords Safe
Passwords SafePasswords Safe
Passwords Safe
 
Stehende Wellen
Stehende WellenStehende Wellen
Stehende Wellen
 
TOGAF Architecture Content Framework
TOGAF Architecture Content FrameworkTOGAF Architecture Content Framework
TOGAF Architecture Content Framework
 
Cultural Dimensions
Cultural DimensionsCultural Dimensions
Cultural Dimensions
 
Hinderniserkennung mit LiDAR
Hinderniserkennung mit LiDARHinderniserkennung mit LiDAR
Hinderniserkennung mit LiDAR
 
Quadriken im Raum
Quadriken im RaumQuadriken im Raum
Quadriken im Raum
 
TOGAF Architecture Content Framework
TOGAF Architecture Content FrameworkTOGAF Architecture Content Framework
TOGAF Architecture Content Framework
 
Unity® Volume Rendering
Unity® Volume RenderingUnity® Volume Rendering
Unity® Volume Rendering
 

Numerische Methoden: Approximation und Integration

  • 1. Schwerpunktfach Physik und Angewandte Mathematik Numerische Methoden: Approximation und Integration Programmierung TI-89 Bruggmann Roland Luzern, Mai 2005 Maturitätsschule für Erwachsene MSE, Reussbühl
  • 2.
  • 3. Inhaltsverzeichnis 1. Einleitung 1 1.1. Inhalt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2. Erfassen von Funktionen im Y-Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.3. Flussdiagramm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2. Das Programm 3 2.1. Programmstart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1.1. Start mit VAR-LINK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.1.2. Start mit CATALOG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.1.3. Konfigurationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.2. Erfassen von Aufgabe, Methode und Funktion . . . . . . . . . . . . . . . . . . . . . . . 5 2.2.1. Aufgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2.2. Methode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2.3. Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.3. Erfassen der Parameter für die Approximation . . . . . . . . . . . . . . . . . . . . . . . 7 2.3.1. Bisection oder Regula falsi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2.3.2. Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2.4. Erfassen der Parameter für die Integration . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.4.1. Rechteck- oder Trapez-Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.4.2. Tangenten- oder Simpson-Verfahren . . . . . . . . . . . . . . . . . . . . . . . . 10 2.5. Resultate speichern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.5.1. Variablenname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.5.2. Approximation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.5.3. Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.6. Ende der Berechnungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3. Resultate als Matrizenvariable 15 A. Quellcode 18 A.1. Programmstart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 A.2. Konfigurationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 A.3. Erfassen von Aufgabe, Methode und Funktion . . . . . . . . . . . . . . . . . . . . . . . 20 A.4. Hauptteil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 A.4.1. Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 A.4.2. Approximation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 A.4.3. Resultat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 A.5. Speichern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 A.6. Ende der Berechnungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 A.7. Ausgangslage erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 0
  • 4. 1. Einleitung 1.1. Inhalt Diese Arbeit dokumentiert eine Implementation numerischer Methoden zur Approximation (Bisection, Regula falsi und Newton) und Integration (Rechteck-, Trapez-, Tangenten- und Simpson-Verfahren) für den Taschenrechner TI-89. Als Programmiersprache kommt TI-Basic zum Einsatz, den Quellcode zum Programm «nummeth() – Numerische Methoden» wurde auf einer Intel-x86-Maschine mit GNU/Linux als Betriebssystem und dem Editor «Kate» erstellt. Um das Programm auf den TI-89 zu laden, wurde die Software «TiLP» verwendet. Als Nachschlagwerke und Grundlage zur Programmierung dienten ausschliesslich das dem TI-89 von Texas Instruments mitgelieferte Benutzerhandbuch zur Advanced Mathematics Software Version 2.0 [1] in gedruckter Form sowie die Hinweise zur Version 2.8 [2] als PDF. Der Quellcode ist im Anhang A zu finden – er ist zur Lesehilfe in Absätze gegliedert. 1.2. Erfassen von Funktionen im Y-Editor Funktionen können im Y-Editor eingegeben und im Bildschirm Graph zur Wahl des Intervalls untersucht werden. Die im Y-Editor eingegebenen Funktionen y1(x) bis y10(x) stehen dem Programm nummeth zur Verfügung, können darin also optional ausgewählt werden – sowohl bei einer Approximation als auch bei einer Integration. Eine Funktion kann aber auch erst nach dem Programmstart mit den anderen Parametern (Intervall, Iterationen etc.) erfasst werden. Dies wird im folgenden Kapitel erklärt. 1.3. Flussdiagramm Grundsätzlich werden Kenntnisse zur Bedienung des Taschenrechners TI-89 voraussgesetzt. Dessen Funktionalität kann z.B. im Benutzerhandbuch [1] nachgeschlagen werden, das zum Rechner mitgeliefert wurde. Der serielle Ablauf des Programmes nummeth ist in einem Flussdiagramm dargestellt (siehe Abbildung 1.1). Mit ESC kann jeweils zum vorherigen Fenster gewechselt werden. Numerische Eingaben werden jeweils auf ihre Gültigkeit geprüft. Bei einer ungültigen Eingabe erscheint eine Fehlermeldung. Danach besteht die Möglichkeit, die Eingabe zu korrigieren. 1
  • 6. 2. Das Programm 2.1. Programmstart Abbildung 2.1.: Eingabezeile mit Pfad zum Programm nummeth 2.1.1. Start mit VAR-LINK Mit 2nd VAR-LINK kann der Variablen-Bildschirm aufgerufen werden. Im Ordner NUMERIK ist die Programmvariable nummeth zu finden. Diese ist mit dem Cursor zu markieren und mit der Taste ENTER zu bestätigen (siehe Abbildung 2.2). Der Pfad der Programmvariablen ist somit in die Eingabezeile kopiert worden. Dieser muss nun noch mit einer schliessenden runden Klammer ’)’ ergänzt werden. Mit ENTER wird das Programm gestartet (siehe Abbildung 2.1). Abbildung 2.2.: Variablen-Bildschirm mit Ordner Numerik und Programmvariable nummeth 3
  • 7. 2.1.2. Start mit CATALOG Mit CATALOG F4 User-Defined werden gespeicherte Funktions- und Programmvariablen ange- zeigt. Mit dem Cursor den Pfeil zu ’nummeth(’ bewegen (siehe Abbildung 2.3) und die Taste ENTER betätigen. Der Pfad der Programmvariablen ist somit in die Eingabezeile kopiert worden. Dieser muss nun noch mit einer schliessenden runden Klammer ’)’ ergänzt werden (siehe Abbildung 2.1). Mit ENTER wird das Programm gestartet. Abbildung 2.3.: Variablen-Katalog mit Eintrag nummeth 2.1.3. Konfigurationen Mit dem Start des Programms werden einige Konfigurationen ausgelöst. Das Programm wird auf Fehler überprüft, aktuelles Verzeichnis wird nach Möglichkeit NUMERIK, aktuelle Einstellungen der Modi unter MODE werden gesichert und für die Dauer des Programmablaufs konfiguriert, eine Parameterliste wird erstellt und der Y-Editor wird auf erfasste Funktionen untersucht. Dies kann beim erstmaligen Gebrauch des Programms einige Sekunden dauern. 4
  • 8. 2.2. Erfassen von Aufgabe, Methode und Funktion 2.2.1. Aufgabe Die Wahl der Aufgabe erfolgt per Cursor im Drop-Down-Menu, bestätigen mit ENTER (siehe Abbildung 2.4). Abbildung 2.4.: Dialog Numerische Methoden mit Dropdown zur Wahl der Aufgabe 2.2.2. Methode Die Wahl einer Methode erfolgt sowohl für die numerische Approximation als auch für die numerische Integration in einem Dropdown per Cursor – mit ENTER kann die Auswahl bestätigt werden (siehe Abbildung 2.5). Abbildung 2.5.: Dialoge Numerische Approximation und Numerische Integration mit Dropdown zur Wahl einer Methode 5
  • 9. 2.2.3. Funktion Sind im Y-Editor Funktionen erfasst worden, erscheint nach der Wahl einer Methode ein Dialog ’Parameter’ mit der Möglichkeit, eine der erfassten Funktionen zur weiteren Bearbeitung auszuwählen. Dies erfolgt im Drop-Down-Menu ’Funktion aus dem Y-Editor uebernehmen?’ durch die Wahl des Eintrages ’Ja’ (siehe Abbildung 2.6). Abbildung 2.6.: Dialog Parameter zum übernehmen einer Funktion aus dem Y-Editor Die Wahl der Funktion erfolgt per Cursor im Drop-Down-Menu ’f(x) = ’. Hat eine der erfassten Funktionen mehr als 18 Zeichen, wird deren Bezeichnung wie im Y-Editor angezeigt, z.B. y3(x) (siehe Abbildung 2.7). Abbildung 2.7.: Dialog Parameter mit Dropdown zur Wahl der Funktion aus dem Y-Editor 6
  • 10. 2.3. Erfassen der Parameter für die Approximation 2.3.1. Bisection oder Regula falsi Zu beachten: Für diese Methoden muss das Intervall so gewählt werden, dass der Funktionswert von a kleiner Null und der Funktionswert von b grösser Null ist (d.h. f(a) < 0, f(b) > 0). Die Anzahl Iterationen n muss mit einer ganzen, positiven Zahl angegeben werden (d.h. n ∈ N). Abbildung 2.8.: Dialog Numerische Approximation für die Methode Bisection Abbildung 2.9.: Dialog Numerische Approximation für die Methode Regula falsi 7
  • 11. 2.3.2. Newton Der Startwert für die Methode Newton muss wie folgt gewählt werden: • Der Funktionswert darf nicht Null betragen (d.h. f(x0) = 0). • Die Steigung der Tangente durch den Startwert darf nicht Null sein (d.h. f (x0) = 0). Für die Methode nach Newton kann zwischen der Anzahl Iterationen und der Genauigkeit gewählt werden. • n Iterationen: Die Berechnung wird nach der gegebene Anzahl Iterationen abgebrochen. • Genauigkeit eps: Die Berechnung wird abgebrochen, sobald die Differenz der letzten zwei Resultate kleiner ist als der in eps angegebene Wert. Abbildung 2.10.: Dialog Numerische Approximation für die Methode Newton 8
  • 12. 2.4. Erfassen der Parameter für die Integration Für diese Methoden muss das Intervall so gewählt werden, dass die Funktionswerte von a und von b grösser als Null sind, wobei b grösser als a ist (d.h. a < b, f(a) > 0, f(b) > 0). Die Angabe der Anzahl Schritte n muss eine ganze, positive Zahl sein (d.h. n ∈ N). 2.4.1. Rechteck- oder Trapez-Verfahren Abbildung 2.11.: Dialog Numerische Integration für die Methode Rechteck-Verfahren Abbildung 2.12.: Dialog Numerische Integration für die Methode Trapez-Verfahren 9
  • 13. 2.4.2. Tangenten- oder Simpson-Verfahren Die Angabe der Anzahl Schritte n muss hier eine ganze, positive und gerade Zahl sein (d.h. n ∈ Ng). Abbildung 2.13.: Dialog Numerische Integration für die Methode Tangenten-Verfahren Abbildung 2.14.: Dialog Numerische Integration für die Methode Simpson-Verfahren 10
  • 14. 2.5. Resultate speichern 2.5.1. Variablenname Um die Resultate zu speichern, werden Variablennamen wie folgt generiert: • Matrizenvariable für die Ergebnisse: – die ersten drei Buchstaben der Aufgabe: Approximation oder Integration – die ersten vier Buchstaben der Methode: Bisection, Regula falsi, Newton, Rechteck, Trapez, Tangenten oder Simpson – die Ziffer 1 als möglicher Zähler – Beispiele: AppRegu1, IntTang1 • Variable für die Nullstellen: – NS als Kurzform für Nstelle – die ersten vier Buchstaben der Methode: Bisection, Regula falsi, Newton – die Ziffer 1 als möglicher Zähler – Beispiele: NSBise1, NSNewt1 Diese Variablennamen können auch geändert werden, wobei im TI-89 die Länge der Variablennamen auf acht Zeichen beschränkt ist. Existiert im Verzeichnis Numerik bereits eine Variable mit gewähltem Variablennamen, wird dies im Dialog ’Matirzenvariable’ gemeldet (siehe Abbildung 2.15). Mit ENTER wird die bestehende Variable überschrieben, mit ESC kann zurück in die Resultat-Anzeige gewechselt und die Variable editiert werden. Abbildung 2.15.: Dialog Matirzenvariable 11
  • 15. 2.5.2. Approximation Nullstelle sowie Ergebnisse können im Dialog ’Resultat’ ins angegebene Verzeichnis gespeichert werden (siehe Abbildungen 2.16, 2.17 und 2.18). Abbildung 2.16.: Dialog Resultat für die Methode Bisection Abbildung 2.17.: Dialog Resultat für die Methode Regula falsi Abbildung 2.18.: Dialog Resultat für die Methode Newton 12
  • 16. 2.5.3. Integration Die Ergebnisse können per Dialog ’Resultat’ ins angegebene Verzeichnis gespeichert werden (siehe Abbildungen 2.19, 2.20, 2.21 und 2.22). Abbildung 2.19.: Dialog Resultat für die Methode Rechteck-Verfahren Abbildung 2.20.: Dialog Resultat für die Methode Trapez-Verfahren Abbildung 2.21.: Dialog Resultat für die Methode Tangenten-Verfahren 13
  • 17. Abbildung 2.22.: Dialog Resultat für die Methode Simpson-Verfahren 2.6. Ende der Berechnungen Abbildung 2.23.: Pop-Up zur Wahl zwischen einer neuen Berechnung oder der Rückkehr zum Home- Bildschirm • Neue Berechnung: Die Routine kehrt zurück zur Auswahl der Aufgabe. • Home: Der Bildschirm Home wird eingeblendet, aktuelles Verzeichnis wird das aktuelle Verzeichnis vor Programmstart, MODE-Einstellungen werden zurückgesetzt auf den Stand wie vor dem Pro- grammstart. Achtung: ESC sollte hier nicht verwendet werden, da sonst ein möglicher Fehler (Undefined Varia- ble) das Zurückstellen der MODE -Einstellungen auf die zu Beginn gesicherten Parameter umgeht. 14
  • 18. 3. Resultate als Matrizenvariable Die als Matrizenvariable gespeicherten Resultate können mit APPS 6:Data/Matrix Editor 2:Open... geöffnet werden (siehe Abbildung 3.1). Folgende Einträge in den Drop-Down-Menus müssen gewählt werden (siehe Abbildung 3.2): • Als ’Type’ muss ’Matrix’ gewählt werden. • ’Folder’ ist der Ordner, in das die Matrize gespeichert wurde. • ’Variable’ ist der Name der Matirzenvariable. Abbildung 3.1.: Eintrag des Matrix-Editors in der Liste von Applikationen Abbildung 3.2.: Öffnen-Dialog 15
  • 19. In die Matrize werden jeweils auch Aufgabe, Methode und Funktion gespeichert, damit ersichtliche ist, wie die Resultate zustande kamen. In der Tabelle kann mit den Pfeiltasten gearbeitet werden: Der Inhalt der aktiven Zelle wird jeweils in der Eingabezeile eingeblendet (siehe Abbildung 3.3). Abbildung 3.3.: Resultat in der Matrizen-Ansicht 16
  • 20. Abbildungsverzeichnis 1.1. Flussdiagramm zu nummeth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.1. Eingabezeile mit Pfad zum Programm nummeth . . . . . . . . . . . . . . . . . . . . . . 3 2.2. Variablen-Bildschirm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.3. Variablen-Katalog mit Eintrag nummeth . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.4. Dialog Numerische Methoden mit Dropdown zur Wahl der Aufgabe . . . . . . . . . . . 5 2.5. Dialoge Numerische Approximation und Numerische Integration mit Dropdown zur Wahl einer Methode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.6. Dialog Parameter zum übernehmen einer Funktion aus dem Y-Editor . . . . . . . . . . . 6 2.7. Dialog Parameter mit Dropdown zur Wahl der Funktion aus dem Y-Editor . . . . . . . . 6 2.8. Dialog Numerische Approximation für die Methode Bisection . . . . . . . . . . . . . . 7 2.9. Dialog Numerische Approximation für die Methode Regula falsi . . . . . . . . . . . . . 7 2.10. Dialog Numerische Approximation für die Methode Newton . . . . . . . . . . . . . . . 8 2.11. Dialog Numerische Integration für die Methode Rechteck-Verfahren . . . . . . . . . . . 9 2.12. Dialog Numerische Integration für die Methode Trapez-Verfahren . . . . . . . . . . . . 9 2.13. Dialog Numerische Integration für die Methode Tangenten-Verfahren . . . . . . . . . . 10 2.14. Dialog Numerische Integration für die Methode Simpson-Verfahren . . . . . . . . . . . 10 2.15. Dialog Matirzenvariable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.16. Dialog Resultat für die Methode Bisection . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.17. Dialog Resultat für die Methode Regula falsi . . . . . . . . . . . . . . . . . . . . . . . 12 2.18. Dialog Resultat für die Methode Newton . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.19. Dialog Resultat für die Methode Rechteck-Verfahren . . . . . . . . . . . . . . . . . . . 13 2.20. Dialog Resultat für die Methode Trapez-Verfahren . . . . . . . . . . . . . . . . . . . . . 13 2.21. Dialog Resultat für die Methode Tangenten-Verfahren . . . . . . . . . . . . . . . . . . . 13 2.22. Dialog Resultat für die Methode Simpson-Verfahren . . . . . . . . . . . . . . . . . . . 14 2.23. Pop-Up Neue Berechnung oder Home . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.1. Eintrag des Matrix-Editors in der Liste von Applikationen . . . . . . . . . . . . . . . . 15 3.2. Öffnen-Dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.3. Resultat in der Matrizen-Ansicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Literaturverzeichnis [1] TEXAS INSTRUMENTS: TI-89/TI-92 Plus Benutzerhandbuch. Advanced Mathematics Software Version 2.0, 1999. [2] TEXAS INSTRUMENTS: TI-89/TI-92 Plus/Voyage 200 PLT Version 2.08 - Versionshinweise. Advanced Mathematics Software Version 2.8, 2002. 17
  • 21. A. Quellcode Autor: Roland Bruggmann (mailto:roland.bruggmann@gmx.net) Version: 1.02, April 29, 2005 Synopsis: nummeth() is a program written in TI-Basic for the pocket calculator TI-89 and serves with well known methods for numeric approximation and numeric integration. License: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. A.1. Programmstart :nummeth() :Prgm :@Numerische Methoden Numerische Approximation (Bisection, Regula falsi, Newton) und Numerische Integration (Rechteck−, Trapez−, Tangenten−, Simpson−Verfahren) Hinweis: y1 bis y10 des Y-Editors koennen ins Programm uebernommen werden :@ Version 1.02, 29. April 2005 :@ Roland Bruggmann :@ Email: roland.bruggmann@gmx.net :ClrIO :Disp "" :Disp "..." A.2. Konfigurationen :@Konfigurationen :Local i,oldfoldr,yeditor,z,gmlist :@Verzeichnis :getFold()→oldfoldr :Lbl neuverz :Try : setFold(numerik) :Else : ClrErr : Try 18
  • 22. : NewFold numerik : Else : ClrErr : Goto modus : EndTry : Goto neuverz :EndTry :@Modus :Lbl modus :getMode("0")→gmlist :setMode({ "1","1", "3","1", "4","1", "5","1", "6","1", "7","1", "8","1", "12","1", "13","1", "14","1"}) :@Parameterliste :Try : dim(numlist) :Else : ClrErr : {"","","",""}→numlist :EndTry :@Y−Editor:y1 bis y10 :DelVar x :0→z :For i,1,10 : expr("y"&string(i)&"(x)")→yeditor : If string(yeditor)="y"&string(i)&"(x)" Then : 1+z→z : If dim(string(yeditor))>18 Then : "y"&string(i)&"(x)"→ylist[z] : Else : string(yeditor)→ylist[z] : EndIf : EndIf :EndFor :Try : dim(ylist) :Else : ClrErr : {"no"}→ylist :EndTry 19
  • 23. A.3. Erfassen von Aufgabe, Methode und Funktion :@Aufgabe,Methode,Parameter1 :Local auf,meth,msf,msn,msm,mspa,msw, pml,auflist,m1list,m2list :"f(x) ="→msf :"Numerische "→msn :"Methode: "→msm :"Parameter:"→mspa :"Waehle "→msw :{"Approximation","Integration"}→auflist :{"Bisection","Regula falsi","Newton"}→m1list :{"Rechteck","Trapez","Tangenten","Simpson"}→m2list :{"Ja","Nein"}→qlist :Lbl aufgabe :Dialog : Title msn&"Methoden" : DropDown msw&"Aufgabe:",auflist,auf :EndDlog :If ok=0 : Goto neub :Lbl methode :Dialog : Title msn&auflist[auf] : DropDown msw&msm,expr("m"&string(auf)&"list"),meth :EndDlog :If ok=0 : Goto aufgabe :Lbl pam1 :If ylist[1]="no" Then : 2→pml : Dialog : Title mspa : Text "Funktion aus dem Y-Editor" : DropDown "uebernehmen?",qlist,pml : DropDown msf,ylist,yl : EndDlog : If ok=0 : Goto methode : If pml=1 : ylist[yl]→numlist[1] :EndIf 20
  • 24. A.4. Hauptteil :@Hauptteil :Local a,b,k,msfa,msi,msnt,n,titl,w :" failed"→msfa :"Interval = [a,b]"→msi :" isn’t true"→msnt :Lbl anfang A.4.1. Integration :If auf=2 Then : @Integration : Local h,s,msger,msv,ms21,ms22 : "-Verfahren"→msv : "b>a"→ms21 : "f(a)*f(b)≥0"→ms22 : numlist[1]→fstring : numlist[2]→n : numlist[3]→a : numlist[4]→b : If meth>2 Then : "n = Gerade Zahl "→msger : Else : ""→msger : EndIf : @Parameter : Dialog : Title msn&auflist[auf] : Text msm&m2list[meth]&msv : Text mspa : Text "" : Request msf,fstring,0 : Text msi&"; "&ms21&"; "&ms22 : Request "untere Grenze a =",a : Request "obere Grenze : b =",b : Text msger : Request "n Schritte",n : EndDlog : If ok=0 Then : If ylist[1]="no" : Goto methode : Goto pam1 : EndIf : {fstring,n,a,b}→numlist : For i,1,dim(numlist) : If numlist[i]="" : Goto anfang 21
  • 25. : EndFor : @Test n=gerade : If meth>2 and remain(expr(n),2)>0 Then : Text msger&msnt : Goto anfang : EndIf : @Test Interval : expr(fstring)→f(x) : expr(a)→a : expr(b)→b : For i,1,2 : If not expr(#("ms2"&string(i))) Then : Text expr("ms2"&string(i))&msnt : Goto anfang : EndIf : EndFor : @Kern : expr(n)→n : (b-a)/n→h Rechteck- und Trapez-Methode : If meth<3 Then : @Kern rechteck u. trapez : f(a)/meth→s : setMode({"14","3"}) : [[0,a,f(a),s,h*s]]→loesung : For i,1,n-1 : a+i*h→w : s+f(w)→s : augment(loesung;[[i,w,f(w),s,h*s]])→loesung : EndFor : If meth=2 Then : @trapez : s+f(b)/2→s : augment(loesung;[[n,b,f(b),s,h*s]])→loesung : EndIf : h*s→res Tangenten-Methode : ElseIf meth=3 Then : @Kern tangenten : a+h→w : f(w)→s : setMode({"14","3"}) : [[1,w,f(w),s,2*h*s]]→loesung : For i,3,n-1,2 : a+i*h→w : s+f(w)→s 22
  • 26. : augment(loesung;[[i,w,f(w),s,2*h*s]])→loesung : EndFor : 2*h*s→res Simpson-Methode : ElseIf meth=4 Then : @Kern simpson : f(a)→s : 2→k : setMode({"14","3"}) : [[0,a,f(a),s,h/3*s]]→loesung : For i,1,n-1 : 6-k→k : a+i*h→w : s+k*f(w)→s : augment(loesung;[[i,w,f(w),s,h/3*s]])→loesung : EndFor : s+f(b)→s : augment(loesung;[[n,b,f(b),s,h/3*s]])→loesung : h/3*s→res : EndIf Exakt – Fehler – Titelmatrize : @Exakt,Fehler,Titelmatrize : Local exakt,fehler : Try : string(approx( (f(x),x,a,b)))→exakt : Else : ClrErr : msfa→exakt : msfa→fehler : Goto titel : EndTry : string(approx(round(abs((res-expr(exakt)) /(expr(exakt)))*100,2)))&"%"→fehler : Lbl titel : setMode({"14","1"}) : [[auflist[auf]&";"&expr("m"&string(auf)&"list")[meth]&msv, fstring, "h="&string(approx(h)), "Exakt="&exakt, "Fehler="&fehler], ["i","xi","f(xi)","ε","ΣA"]]→titl 23
  • 27. A.4.2. Approximation :Else : @Approximation : Local msit,stel : "n Iterationen "→msit : If meth=3 Then : @Newton : Local bed,bed1,bed2,eps,ms13,pa,palist,x0,x1 : "Startwert "→ms13 : {"n","eps"}→palist : numlist[1]→fstring : numlist[2]→n : "0.0001"→eps : numlist[4]→x0 : @Parameter : Dialog : Title msn&auflist[auf] : Text msm&m1list[meth] : Text mspa : Text "" : Request msf,fstring,0 : Request ms13&"x0=",x0 : DropDown msw&mspa,palist,pa : Request msit,n : Request "Genauigkeit eps",eps : EndDlog : If ok=0 Then : If ylist[1]="no" : Goto methode : Goto pam1 : EndIf : {fstring,n,eps,x0}→numlist : If fstring="" or numlist[pa+1]="" or x0="" : Goto anfang : @Test Startwert : expr(fstring)→f(x) : expr(x0)→x0 : d(f(x),x)→g(x) : If f(x0)*g(x0)=0 Then : Text ms13&msfa&": f(x0)*f’(x0)=0" : Goto anfang : EndIf Newton : @Kern Newton : expr(n)→n : expr(eps)→eps : "i=n"→bed1 24
  • 28. : "abs(x1-x0)<eps"→bed2 : expr("bed"&string(pa))→bed : [[auflist[auf],expr("m"&string(auf)&"list")[meth], fstring,""] ["i","xi","f(xi)","f’(xi)"]]→titl : setMode({"14","3"}) : [[0,x0,f(x0),g(x0)]]→loesung : 1→i : Loop : x0-f(x0)/(g(x0))→x1 : augment(loesung;[[i,x1,f(x1),g(x1)]])→loesung : If expr(bed) : Exit : x1→x0 : i+1→i : EndLoop : setMode({"14","1"}) : If pa=1 Then : 7→stel : Else : dim(string(fPart(eps)))+1→stel : EndIf : x1→res Bisection und Regula falsi : Else : @Bisection/Regula falsi : Local kern,kern1,kern2,ms11,ms12 : "f(a)<0"→ms11 : "f(b)>0"→ms12 : numlist[1]→fstring : numlist[2]→n : numlist[3]→a : numlist[4]→b : @Parameter : Dialog : Title msn&auflist[auf] : Text msm&m1list[meth] : Text mspa : Text "" : Request msf,fstring,0 : Text msi : Request ms11&"; a=",a : Request ms12&"; b=",b : Request msit,n : EndDlog : If ok=0 Then : If ylist[1]="no" 25
  • 29. : Goto methode : Goto pam1 : EndIf : {fstring,n,a,b}→numlist : For i,1,dim(numlist) : If numlist[i]="" : Goto anfang : EndFor : @Test Interval : expr(fstring)→f(x) : expr(a)→a : expr(b)→b : For i,1,2 : If not expr(#("ms1"&string(i))) Then : Text expr("ms1"&string(i))&msnt : Goto anfang : EndIf : EndFor : @Kern Bisection/Regula falsi : expr(n)→n : @Formel bisection : "(a+b)/2"→kern1 : @Formel regula-falsi : "a-(b-a)/(f(b)-f(a))*f(a)"→kern2 : expr("kern"&string(meth))→kern : [[auflist[auf],expr("m"&string(auf)&"list")[meth], fstring,"",""] ["i","a","b","xi","f(xi)"]]→titl : expr(kern)→w : setMode({"14","3"}) : [[1,a,b,w,f(w)]]→loesung : For i,2,n : If f(w)<0 Then : w→a : Else : w→b : EndIf : expr(kern)→w : augment(loesung;[[i,a,b,w,f(w)]])→loesung : EndFor : 7→stel : w→res : EndIf : setMode({"14","1"}) :EndIf :augment(titl;loesung)→loesung :@Hauptteil Ende 26
  • 30. A.4.3. Resultat :@Resultat :Local msa,mse,msma,msns,msr,mssp,msvn,msvz, fldr,namelist,reslist,splist,varlist,ma,ns :getFold()→fldr :"max. acht Zeichen)"→msa :"Ergebnisse als "→mse :"Matrizenvariable "→msma :"Nullstelle "→msns :"Resultat "→msr :"speichern? "→mssp :"Variablenname "→msvn :" Verzeichnis:"→msvz :left(auflist[auf],3) &left(expr("m"&string(auf)&"list")[meth],4) &"1"→name1 :2→ns :Lbl resultat :If auf=1 Then : @Approximation : "NS"&left(m1list[meth],4)&"1"→name2 : Dialog : Title msr&m1list[meth] : Text msns&"= "&string(round(res,stel)) : DropDown " "&msns&mssp,qlist,ns : Text msvz&fldr : Request msvn,name2 : Text mse&msma : DropDown mssp&" ",qlist,ma : Text msvz&fldr : Request msvn,name1 : Text " ("&msvn&msa : EndDlog :Else : @Integration : ""→name2 : Dialog : Title msr&m2list[meth]&msv : Text " h = (b-a)/n = "&string(round(h,3)) : Text " Naeherung N = "&string(round(res,6)) : Text " Exakt : E = "&exakt : Text " Fehler =|(N-E)/E|*100 = "&fehler : Text mse&msma : DropDown mssp&" ",qlist,ma : Text msvz&fldr : Request msvn,name1 : Text " ("&msvn&msa 27
  • 31. : EndDlog :EndIf :If ok=0 : Goto anfang :{ma,ns}→splist :If splist={2,2} : Goto neub :@Test Variablennamen :{name1,name2}→namelist :For i,1,2 : If splist[i]=1 and (namelist[i]="" or dim(namelist[i])>8) : Goto resultat :EndFor :If splist[2]=1 and namelist[2]="x" Then : Dialog : Title msns : Text msvn&"x unzulaessig" : EndDlog : If ok=0 : Goto resultat : Goto resultat :EndIf A.5. Speichern :@Speichern :{msma,msns}→varlist :0→z :For i,1,2 : Lbl neuname : If z=1 Then : Dialog : Title varlist[i] : Text msvn&namelist[i] : Text "wird bereits verwendet." : Text "Variable ueberschreiben?" : EndDlog : If ok=0 : Goto resultat : DelVar #(expr("name"&string(i))) : 0→z : EndIf : If i=1 and splist[1]=1 Then : Try : @Matirzenvariable : Rename loesung,#name1 : Else : If errornum=270 Then 28
  • 32. : ClrErr : 1→z : Goto neuname : Else : PassErr : EndIf : EndTry : ElseIf i=2 and splist[2]=1 Then : Try : @Nullstelle : Rename res,#name2 : Else : If errornum=270 Then : ClrErr : 1→z : Goto neuname : Else : PassErr : EndIf : EndTry : EndIf :EndFor A.6. Ende der Berechnungen :@Neue Berechnung? :Lbl neub :Local nb :PopUp {"Neue Berechnung","Home"},nb :If nb=1 Then : Goto aufgabe :ElseIf nb=2 Then : DispHome :EndIf A.7. Ausgangslage erstellen :@Ausgangslage erstellen :DelVar fstring,f,g,loesung,name1,name2,res,yl,qlist,ylist :setMode(gmlist) :Try : setFold(#oldfoldr) :Else : ClrErr :EndTry :EndPrgm 29