\mnb150ÿ{\rtf1\ansi\deff0\deftab720{\fonttbl{\f0\fswiss MS Sans Serif;}{\f1\froman\fcharset2 Symbol;}{\f2\fswiss\fprq2 System;}{\f3\fmodern\fprq1 Courier New;}{\f4\fmodern\fprq1\fcharset1 Courier New;}{\f5\fswiss\fprq2 Arial;}{\f6\fswiss\fprq2\fcharset1 Arial;}{\f7\froman\fprq2 Times New Roman;}{\f8\froman\fcharset1 Times New Roman;}}
{\colortbl\red0\green0\blue0;\red255\green0\blue0;\red0\green128\blue0;\red0\green0\blue255;\red255\green255\blue255;}
\deflang1031\pard\ri4\plain\f3\fs20\cf0 ________________________________________________________________________________
\par
\par Inhalt....: Prozeduren und Experimente zum Newtonverfahren
\par Kategorie.: Unterrichtsmaterial
\par Mathematik: Analysis, Programmierung
\par MuPAD.....: 3.1.0
\par Datum.....: 2006-10-24
\par Autor.....: August Barkhausen
\par Funktionen: solve, float, matrix, DIGITS, Domain, Dom::Real, print, for, plot,
\par Funktionen: proc, local, if, abs, plot::Funktion2d, plot::line2d
\par ________________________________________________________________________________
\par \plain\f6\fs48\cf0
\par \plain\f6\fs36\cf0 Prozeduren und Experimente zum
\par Newtonverfahren.
\par \plain\f6\fs24\cf2
\par Im folgenden geht es um das Newtonsche N\'e4herungsverfahren zur Bestimmung von Nullstellen.
\par Es existieren bereits mehrere Notebooks in der Materialsammlung, die sich mit dem Newton-
\par verfahren besch\'e4ftigen.
\par
\par In der Einf\'fchrung in das Newtonverfahren von \plain\f5\fs24\cf2 Alessandro Dell'Aere\plain\f6\fs24\cf2 in dieser Materialsammlung
\par findet sich nach einer ausf\'fchrlichen Erkl\'e4rung des Algorithmus eine Prozedur zur iterativen
\par Berechnung der Nullstellen - dies jedoch ohne eine kompakte tabellarische Darstellung. In dem
\par Notebook von \plain\f5\fs24\cf2 Vera Verspohl geht es um eine Veranschaulichung des Newtonverfahrens anhand
\par graphischer Darstellungen. Insbesondere findet sich dort eine Animation zur Veranschaulichung
\par des Newtonverfahrens.
\par
\par In diesem Notebook geht es abweichend von den oben angesprochenen vorhandenen Note-
\par books nicht um eine Einf\'fchrung des Verfahrens. Vielmehr sollen auf der Grundlage des bereits
\par bekannten Algorithmus folgende Aspekte ber\'fccksichtigt werden:
\par
\par \pard\li1000\ri4\plain\f5\fs24\cf2 1) Die Ergebnisse der Einzeliterationen werden kompakt in einer
\par \plain\f5\fs24\cf4 __\plain\f5\fs24\cf2 Tabelle/ Matrix wiedergegeben. Die Ergebnisse der Iterationen
\par \plain\f5\fs24\cf4 __\plain\f5\fs24\cf2 sind graphisch darstellbar.
\par
\par 2) Die Durchf\'fchrung der Rechnungen geschieht in einer Prozedur.
\par
\par 3) In einer weiteren Prozedur wird optional eine Veranschaulichung
\par \plain\f5\fs24\cf4 __\plain\f5\fs24\cf2 durch graphische Darstellungen der Iterationen realisiert.
\par
\par 4) Die Prozeduren werden benutzt, um anhand von Beispielen die
\par \plain\f5\fs24\cf4 __\plain\f5\fs24\cf2 Einsatzm\'f6glichkeiten des N\'e4herungsverfahrens exemplarisch zu
\par \plain\f5\fs24\cf4 __\plain\f5\fs24\cf2 demonstrieren und Grenzen der Einsatzm\'f6glichkeiten aufzuzeigen.
\par
\par 5) In den Anregungen am Ende des Notebooks werden weitere An-
\par \plain\f5\fs24\cf4 __\plain\f5\fs24\cf2 regungen f\'fcr die Arbeit mit dem Newtonverfahren geliefert.
\par
\par 6) Die Benutzung von Prozeduren stellt jetzt durch die M\'f6glichkeit,
\par \plain\f5\fs24\cf4 __\plain\f5\fs24\cf2 komplexe Funktionen durch kompakte Befehle aufzurufen, eine
\par \plain\f5\fs24\cf4 __\plain\f5\fs24\cf2 Plattform f\'fcr eigene Experimente mit dem Newtonschen Algo-
\par \plain\f5\fs24\cf4 __\plain\f5\fs24\cf2 rithmus bereit, ohne die konkrete Realisierung der Prozeduren
\par \plain\f5\fs24\cf4 __\plain\f5\fs24\cf2 in MuPAD im Detail nachvollziehen zu m\'fcssen.
\par \pard\li500\ri4\plain\f5\fs24\cf2
\par \pard\ri4\plain\f5\fs24\cf2 Die Ergebnisse der Prozeduren wurden mit dem Programm Turboplot, das einen
\par Unterpunkt zum Newtonverfahren besitzt, getestet. Siehe auch unter \plain\f5\fs24\cf2\ul www.turboplot.de\plain\f5\fs24\cf2
\par
\par F\'fcr die tabellarische Darstellung der Ergebnisse bietet sich die Nutzung von Matrizen als
\par Speichermedium an, da hier sowohl eine tabellarische Ausgabe als auch eine Wiederver-
\par wendung der Daten m\'f6glich ist.
\par
\par Grundkenntnisse \'fcber Matrizen sind insofern vorteilhaft, jedoch nicht notwendig, da keinerlei
\par Rechnungen mit den Matrizen verbunden sind. Ist der Begriff der Matrix nicht gel\'e4ufig, kann
\par man Matrizen als die Realisation von Tabellen in MuPAD ansehen. Aus diesem Grund beginnt
\par das Notebook zun\'e4chst mit einer Kurzeinf\'fchrung in den Umgang mit Matrizen, soweit wie dies
\par f\'fcr die Zwecke des Notebooks sinnvoll ist wird . Wenn man sich nur f\'fcr die Ergebnisse des
\par Algorithmus interessiert, kann diese Kurzeinf\'fchrung \'fcbersprungen werden.
\par
\par In diesem Notebook sind Links und Verweise auf andere Seiten im Internet angegeben.
\par Hiermit distanziere ich mich ausdr\'fccklich von den Inhalten der angegebenen Seiten
\par und s\'e4mtlicher mit diesen Seiten verlinkten Quellen im Internet.
\par \plain\f5\fs24\cf2\b
\par
\par \plain\f8\fs28\cf0\b\ul Ben\'f6tigte Grundlagen zu Matrizen
\par \plain\f8\fs28\cf0
\par Eine Matrix ist ein rechteckiges Schema aus Zeilen und Spalten. In MuPAD wird eine
\par Matrix aus zwei Spalten und drei Zeilen wie folgt definiert:
\par \plain\f8\fs22\cf0
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}A:=matrix(2,3)
\par \pard\ri4\plain\f8\fs28\cf0 Die Elemente der Matrix sind zun\'e4chst mit Nullen vorinitalisiert und k\'f6nnen wie folgt
\par \'fcberschrieben werden:
\par \plain\f8\fs22\cf0
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}A:=matrix([[1,2,3],[4,5,6]])
\par \pard\ri4\plain\f8\fs28\cf0 Nat\'fcrlich kann die Matrix A auch direkt wie vorstehend definiert werden. F\'fcr die Zwecke
\par dieses Notebook ist es erforderlich, Elemente einzeln ein- und auszulesen. Im folgenden
\par wird das zweite Element der ersten Zeile und zweiten Spalte ausgelesen:
\par \plain\f8\fs22\cf0
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}A[1,2]
\par \pard\ri4\plain\f8\fs28\cf0 Analog lassen sich das Elemente \'fcberschreiben. Der Doppelpunkt verhindert die Ausgabe. \plain\f8\fs22\cf0
\par
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f4\fs22\cf1 {\pntext\f1\'b7\tab}A[1,2]:=neu:
\par \pard\li600\ri1\fi-300\plain\f4\fs22\cf1 A[2,3]:=alt:
\par \plain\f3\fs22\cf1
\par \pard\ri4\plain\f8\fs28\cf0 Nun wird die \'fcberschriebene Matrix ausgegeben. Offensichtlich ist auch Text darstellbar.
\par \plain\f8\fs22\cf0
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}A
\par \pard\ri4\plain\f8\fs28\cf0 Teilmatrizen k\'f6nnen wie folgt ausgelesen werden. Im konkreten Fall werden die ersten zwei
\par Zeilen und die zweite und dritte Spalte ausgelesen.
\par \plain\f8\fs22\cf0
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}A[1..2,2..3]
\par \pard\ri4\plain\f8\fs28\cf0\b\ul Der benutzte Algorithmus\plain\f8\fs22\cf0
\par \plain\f8\fs28\cf0 Dem Newtonschen Verfahren und damit der Prozedur Newton liegt folgende Formel
\par zugrunde: \plain\f8\fs22\cf0
\par
\par \pard\li3500\ri4\plain\f8\fs22\cf0 {\pict\wmetafile8\picw3923\pich1452\picscalex99\picscaley99\picwgoal2242\pichgoal828
010009000003680500000B001C0000000000050000000B0200000000050000000C02AC05530F03
0000001E00050000000C02B505730F050000000B0200000000030000001E00050000000C02BC05
7C0F050000000B0200000000050000000B0200000000030000001E00050000000C02C5059C0F05
0000000B0200000000050000000B0200000000050000000B0200000000030000001E0005000000
0C02CC05A70F050000000B0200000000050000000B0200000000050000000B0200000000050000
000B0200000000030000001E00050000000C02D505C60F050000000B0200000000050000000B02
00000000050000000B0200000000050000000B0200000000050000000B0200000000030000001E
00050000000C02DC05D10F050000000B0200000000050000000B0200000000050000000B020000
0000050000000B0200000000050000000B0200000000050000000B0200000000030000001E0005
0000000C02E705F10F050000000B0200000000050000000B0200000000050000000B0200000000
050000000B0200000000050000000B0200000000050000000B0200000000050000000B02000000
00030000001E00050000000C02EE05FC0F050000000B0200000000050000000B02000000000500
00000B0200000000050000000B0200000000050000000B0200000000050000000B020000000005
0000000B0200000000050000000B0200000000030000001E00050000000C02F9051D1005000000
0B0200000000050000000B0200000000050000000B0200000000050000000B0200000000050000
000B0200000000050000000B0200000000050000000B0200000000050000000B02000000000500
00000B0200000000030000001E00050000000C02FF052710050000000B0200000000050000000B
0200000000050000000B0200000000050000000B0200000000050000000B020000000005000000
0B0200000000050000000B0200000000050000000B0200000000050000000B0200000000050000
000B0200000000030000001E00030000001E00050000000C0266032809050000000B0200000000
050000000B0200000000050000000B0200000000050000000B0200000000050000000B02000000
00050000000B0200000000050000000B0200000000050000000B0200000000050000000B020000
0000050000000B0200000000050000000B020000000014000000FF0600000600F6020000240001
00020000800080FF7FFF7F02000080FF7F0080FF7F0200040000002D01000004000000F0010000
08000000FA0200000000000000000000040000002D01000007000000FC02000000000000000004
0000002D0101001C000000FB0210FF00000000000090010000000107000000417269616C000000
9B240A0E50EC1200B8A4F177C1A4F1772030F3779424662E040000002D01020005000000020101
000000050000000102FFFFFF00050000002E011800000005000000090200000000040000000801
00001C000000FB02E8FE0000000000009001000000010700000054696D6573204E657720526F6D
616E00B8A4F177C1A4F1772030F3779424662E040000002D0103000B00000026060F000C004D61
746854797065000015011C000000FB02E8FE0000000000009001010000010700000054696D6573
204E657720526F6D616E00B8A4F177C1A4F1772030F3779424662E040000002D0104001C000000
FB023AFF0000000000009001010000010700000054696D6573204E657720526F6D616E00B8A4F1
77C1A4F1772030F3779424662E040000002D0105001C000000FB023AFF00000000000090010000
00010700000054696D6573204E657720526F6D616E00B8A4F177C1A4F1772030F3779424662E04
0000002D0106001C000000FB023AFF0000000000009001000000020700000053796D626F6C0000
8E240A0750EC1200B8A4F177C1A4F1772030F3779424662E040000002D010700040000002D0106
00040000002D010300040000002D010400040000002D010500040000002D010600040000002D01
0300040000002D010400040000002D010300040000002D010400040000002D010500040000002D
0106001C000000FB02E8FE000000000000900100000002070000005346204D6174682045787400
50EC1200B8A4F177C1A4F1772030F3779424662E040000002D010800040000002D010300040000
002D010800040000002D010300040000002D010400040000002D010600040000002D0103000400
00002D010400040000002D010500040000002D010600040000002D010800040000002D01030004
0000002D010800040000002D0103001C000000FB02E8FE00000000000090010000000207000000
53796D626F6C000095240A0350EC1200B8A4F177C1A4F1772030F3779424662E040000002D0109
00040000002D010300040000002D010900040000002D010300040000002D010600040000002D01
0400070000002105010078000B026E00040000002D01050007000000210501006E004102EA0004
0000002D01070007000000210501002B0041026A01040000002D01060007000000210501003100
4102F501040000002D01090007000000210501003D000B02AC02040000002D010300040000002D
010600040000002D010400070000002105010078000B02A403040000002D010500070000002105
01006E003F022004040000002D01090007000000210501002D000B02C904040000002D01030004
0000002D0104000700000021050100660045012B06040000002D010800040000002D0103000400
00002D010800040000002D010300040000002D010800070000002105010028004501AF06040000
002D010300040000002D010600040000002D010400070000002105010078004501260704000000
2D01050007000000210501006E007901A207040000002D010800040000002D010300040000002D
010800040000002D010300040000002D0108000700000021050100290045010508040000002D01
0300040000002D010600040000002D01040007000000210501006600C6020C06040000002D0106
00070000002105010027008602AD06040000002D010800040000002D010300040000002D010800
040000002D010300040000002D01080007000000210501002800C602CF06040000002D01030004
0000002D010600040000002D01040007000000210501007800C6024607040000002D0105000700
0000210501006E00FA02C207040000002D010800040000002D010300040000002D010800040000
002D010300040000002D01080007000000210501002900C60225080700000021050100C500B301
A9050700000021050100C500B30151060700000021050100C500B301F9060700000021050100C5
00B301A1070700000021050100C500B3011C0808000000FA020000000000000000000004000000
2D010A0004000000F001000007000000FC020000FFFFFF000000040000002D01000004000000F0
0101001C000000FB021000070000000000BC02000000000102022253797374656D000092240A1C
50EC1200B8A4F177C1A4F1772030F3779424662E040000002D010100040000002701FFFF040000
00F001020004000000F001030004000000F001040004000000F001050004000000F00106000400
0000F001070004000000F001080004000000F0010900040000002701FFFF040000002701FFFF04
0000002701FFFF040000002701FFFF040000002701FFFF040000002701FFFF040000002701FFFF
040000002701FFFF040000002701FFFF040000002701FFFF040000002701FFFF030000000000
}\plain\f8\fs28\cf0\b\ul
\par \pard\ri4\plain\f8\fs28\cf0\b\ul
\par Definition von Konstanten f\'fcr die Programmsteuerung
\par \plain\f8\fs22\cf0
\par \plain\f8\fs28\cf0 Nach diesen einleitenden Bemerkungen werden im folgenden einige Konstanten f\'fcr den
\par weiteren Gebrauch initialisiert.
\par - Wenn der Betrag von (Xn-1 - Xn) kleiner als die \plain\f8\fs28\cf2 Genauigkeit\plain\f8\fs28\cf0 ist, wird die weitere Rechnung
\par abgebrochen. Dieser Wert kann als Parameter an die Prozedur \'fcbergeben werden.
\par - Der Befehl \plain\f8\fs28\cf1 DIGITS\plain\f8\fs28\cf0 gibt die Anzahl der relevanten von 0 verschiedenen Nachkommastellen
\par an.
\par - Die Variable \plain\f8\fs28\cf2 Startwert\plain\f8\fs28\cf0 ist der Startwert des Newtonverfahrens in der Prozedur Newton
\par und kann als Parameter an die Prozedur \'fcbergeben werden.
\par - Die Variablen Oben, Unten, Links und Rechts geben die Gr\'f6\'dfe des Koordinatensystems an,
\par das in der Prozedur \plain\f8\fs28\cf2 GraphNewton\plain\f8\fs28\cf0 erzeugt wird.
\par \plain\f8\fs22\cf0
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}Genauigkeit := 1/1000:
\par \pard\li600\ri1\fi-300\plain\f3\fs22\cf1 DIGITS := 4:
\par Startwert := 8:
\par Links := -10:
\par Rechts := 10:
\par Oben := 20:
\par Unten := -20:
\par
\par \pard\ri4\plain\f8\fs28\cf0\b\ul Definition der Prozeduren
\par \plain\f8\fs22\cf0
\par \plain\f8\fs28\cf0 Die Prozedur \plain\f8\fs28\cf2 Newton\plain\f8\fs28\cf0 wird definiert. In dieser Prozedur werden bzw. wird:
\par - die Berechnungen iterativ durchgef\'fchrt
\par - die Daten in die \plain\f8\fs28\cf2 Ausgabematrix\plain\f8\fs28\cf0 geschrieben
\par - die \plain\f8\fs28\cf2 Ausgabematrix\plain\f8\fs28\cf0 ausgelesen.
\par - Die \plain\f8\fs28\cf2 Ausgabematrix\plain\f8\fs28\cf0 nimmt die berechneten Daten auf. Da die Anzahl der Iterationen
\par anfangs nicht bekannt ist, ist eine dynamische Anpassung der Zeilenzahl der \plain\f8\fs28\cf2 Ausgabematrix
\par \plain\f8\fs28\cf0 nicht m\'f6glich. Die Ausgabematrix wird mit \plain\f8\fs28\cf2 n_max \plain\f8\fs28\cf0 Zeilen erzeugt und mit Nullen
\par vorinitialisiert. W\'e4hrend der Iterationen werden die ben\'f6tigten Zeilen \'fcberschrieben.
\par Die Berechnungen werden abgebrochen, wenn entweder die Differenz der des Betrages
\par von (Xn+1 - Xn) kleiner als die Genauigkeit ist oder andererseits die Anzahl der
\par Iterationen \plain\f8\fs28\cf2 n_max -1 \plain\f8\fs28\cf0 \'fcbersteigt.
\par \plain\f8\fs22\cf0
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs20\cf1 {\pntext\f1\'b7\tab}Newton := proc( f, Startwert, Genauigkeit)
\par \pard\li600\ri1\fi-300\plain\f3\fs20\cf1 save F, Xn, n;
\par local k, n_max, Ausgabematrix, Anz_Zeilen, x1;
\par begin
\par delete F, Xn, n;
\par x1:=Startwert:
\par n_max := 15: // maximale Zeilenzahl
\par k := 2: // Laufvariable initialisiert
\par if f(x1) = 0 then
\par print(Unquoted,"Die Nullstelle ist gefunden und lautet:");
\par print(Unquoted, "x1 = ".expr2text(float(x1)));
\par return():
\par else
\par Ausgabematrix:=matrix(n_max,6); //Die Kopfzeile der Matrix wird
\par Ausgabematrix[1,1]:=n: //definiert.
\par Ausgabematrix[1,2]:=Xn:
\par Ausgabematrix[1,3]:=F(Xn):
\par Ausgabematrix[1,4]:=F'(Xn):
\par Ausgabematrix[1,5]:=F(Xn)/F'(Xn):
\par Ausgabematrix[1,6]:=Xn+1:
\par
\par
\par Ausgabematrix[2,1]:=1: // Die zweite Zeile mit den Startwerten
\par Ausgabematrix[2,2]:=float(x1): // wird beschrieben.
\par Ausgabematrix[2,3]:=float(f(x1)):
\par Ausgabematrix[2,4]:=float(f'(x1)):
\par if Ausgabematrix[2,4] = 0
\par then
\par print(Unquoted,"Die Ableitung hat eine Nullstelle");
\par print(Unquoted,
\par "Eine Division durch Null ist mathematisch unm\'f6glich");
\par print(Unquoted,"Versuchen Sie es mit einem neuen Startwert");
\par return();
\par else
\par Ausgabematrix[2,5]:=float(f(x1)/f'(x1)):
\par end_if;
\par Ausgabematrix[2,6]:=float(x1-Ausgabematrix[2,5]):
\par
\par k:=2:
\par Anz_Zeilen:=2:
\par for k from 2 to n_max-1 do
\par if abs(Ausgabematrix[k,2]-Ausgabematrix[k,6])>Genauigkeit
\par then
\par Ausgabematrix[k+1,1]:=k:
\par Ausgabematrix[k+1,2]:=float(Ausgabematrix[k,6]):
\par Ausgabematrix[k+1,3]:=float(f(Ausgabematrix[k+1,2])):
\par Ausgabematrix[k+1,4]:=float(f'(Ausgabematrix[k+1,2])):
\par
\par if Ausgabematrix[k+1,4] = 0
\par then
\par print(Unquoted,"Die Ableitung hat eine Nullstelle");
\par print(Unquoted,
\par "Eine Division durch Null ist mathematisch unm\'f6glich");
\par print(Unquoted,"Versuchen Sie es mit einem neuen Startwert");
\par return();
\par else
\par Ausgabematrix[k+1,5]:=
\par float(f(Ausgabematrix[k+1,2])/f'(Ausgabematrix[k+1,2])):
\par
\par end_if;
\par
\par Ausgabematrix[k+1,6]:=
\par float((Ausgabematrix[k+1,2]-Ausgabematrix[k+1,5])):
\par Anz_Zeilen:=Anz_Zeilen+1:
\par // Die Zeilen werden iterativ beschrieben.
\par // Abbruchkriterien: Die Genauigkeit ist erreicht
\par
\par else
\par k:=n_max-1:
\par // Die maximale Zeilenzahl ist erreicht.
\par end_if;
\par
\par end_for;
\par Anz_Zeilen;
\par
\par if Anz_Zeilen = n_max //Ausgabe der Daten
\par then
\par print(Unquoted,
\par "Eine existierende Nullstelle kann nicht gefunden werden");
\par print(Unquoted,"oder eine Nullstelle existiert nicht") ;
\par else
\par print(Unquoted, "Die Nullstelle ist bei x1 = ".
\par expr2text(float(Ausgabematrix[Anz_Zeilen,2])));
\par print(Unquoted, "Die maximale Abweichung betr\'e4gt ".
\par expr2text(float(Genauigkeit)));
\par print(Unquoted,
\par "Die Ergebnisse der Einzelschritte werden nun ausgegeben");
\par end_if;
\par
\par Ausgabematrix[1..Anz_Zeilen,1..6];
\par
\par end_if:
\par end_proc:\plain\f3\fs22\cf1
\par
\par
\par \pard\ri4\plain\f8\fs28\cf0 Die Prozedur \plain\f8\fs28\cf2 GraphNewton \plain\f8\fs28\cf0 wird definiert. In dieser Prozedur werden Ergebnisse der Berechnungen
\par der Prozedur Newton graphisch ausgewertet. Die Funktion \plain\f8\fs28\cf2 GraphNewton \plain\f8\fs28\cf0 greift dabei auf die
\par Ergebnisse der \plain\f8\fs28\cf2 Ausgabematrix\plain\f8\fs28\cf0 zur\'fcck, die in der Prozedur Newton erzeugt wurde.
\par Der Aufruf der Funktion \plain\f8\fs28\cf2 GraphNewton \plain\f8\fs28\cf0 hat somit immer nach dem Aufruf der Prozedur Newton
\par zu geschehen. Die Entkopplung der Prozeduren erm\'f6glicht einen Aufruf der Prozeduren
\par nach Wahl mit durch den Benutzer bestimmter Wahl des Koordinatensystems.
\par \plain\f8\fs22\cf0
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs20\cf1 {\pntext\f1\'b7\tab}GraphNewton := proc(f, Links,Rechts,Unten,Oben,Ausgabematrix)
\par \pard\li600\ri1\fi-300\plain\f3\fs20\cf1 save x;
\par local Anz_Zeilen, fgraph, i, links, m, normgraph, rechts, tangente, tangraph;
\par begin
\par delete x;
\par Anz_Zeilen:= linalg::nrows(Ausgabematrix);
\par normgraph[1]:=plot::Line2d([Ausgabematrix[2,2],f(Ausgabematrix[2,2])]
\par ,[Ausgabematrix[2,2], 0], Color=RGB::Green):
\par
\par for m from 2 to Anz_Zeilen-1 do
\par links:=min(Ausgabematrix[m,2],Ausgabematrix[m+1,2]):
\par rechts:=max(Ausgabematrix[m,2],Ausgabematrix[m+1,2]):
\par
\par tangente[m]:=
\par f'(Ausgabematrix[m,2])*x-f'(Ausgabematrix[m,2])*Ausgabematrix[m+1,2];
\par tangraph[m]:=plot::Function2d(tangente[m], x=links..rechts,
\par ViewingBoxYRange=Unten..Oben,
\par Color=RGB::Red):
\par
\par normgraph[m]:=
\par plot::Line2d([Ausgabematrix[m+1,2],f(Ausgabematrix[m+1,2])]
\par ,[Ausgabematrix[m+1,2], 0], Color=RGB::Green):
\par
\par
\par end_for;
\par fgraph:=plot::Function2d(f, x=Links..Rechts,
\par ViewingBoxYRange=Unten..Oben,
\par Color=RGB::Blue):
\par plot(tangraph[i] $ i = 2..Anz_Zeilen-1,
\par fgraph,
\par normgraph[i] $ i = 1..Anz_Zeilen-1)
\par end_proc:\plain\f3\fs22\cf1
\par
\par \pard\ri4\plain\f8\fs28\cf0\b\ul Anwendung der Prozeduren auf konkrete Probleme
\par \plain\f8\fs28\cf0
\par Zu einem ersten Test der Prozedur wird eine zu untersuchende Funktion definiert.\plain\f8\fs22\cf0
\par
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}f := x -> x^2-4:
\par \pard\ri4\plain\f8\fs28\cf0
\par Die Nullstellen lassen sich leicht ermitteln.
\par \plain\f8\fs22\cf0
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}solve(f(x)=0,x)
\par \pard\ri4\plain\f8\fs28\cf0 Die Prozedur wird mit mit den vordefinierten Konstanten als Parameter aufgerufen.
\par \plain\f8\fs22\cf0
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}tabelle:= Newton(f,4,Genauigkeit)
\par \pard\ri4\plain\f8\fs28\cf0 Offensichtlich wurde eine Nullstelle mit der angegebenen Genauigkeit erkannt.
\par \plain\f8\fs22\cf0
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}GraphNewton(f,-1,5,-6,13,tabelle)
\par \pard\li600\ri1\fi-300\plain\f3\fs22\cf1
\par \pard\ri4\plain\f8\fs28\cf0 Es ist aber auch m\'f6glich, Zahlen statt der Konstanten einzugeben.
\par \plain\f8\fs22\cf0
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}Newton(f,2,1/10)
\par \pard\ri4\plain\f8\fs28\cf0 Nachdem die grunds\'e4tzliche Funktionalit\'e4t der Programme \plain\f8\fs28\cf2 Newton \plain\f8\fs28\cf0 und \plain\f8\fs28\cf2 GraphNewton \plain\f8\fs28\cf0 gekl\'e4rt
\par ist, kann mit der mathematischen Analyse des Newtonverfahrens begonnen werden.
\par
\par Eine erste interessante Frage ist, wie der Algorithmus reagiert, wenn eine Funktion
\par mehrere Nullstellen hat. Betrachten wir die Funktion
\par
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}f := x ->x^3-9*x
\par \pard\ri4\plain\f8\fs28\cf0 Die Nullstellen lassen sich konventionell berechnen:
\par \plain\f8\fs22\cf0
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}solve(f(x),x)
\par \pard\ri4\plain\f8\fs28\cf0 Es wird mit dem Startwert 8 begonnen:
\par \plain\f8\fs22\cf0
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}tabelle:= Newton(f,2.2,Genauigkeit)
\par {\pntext\f1\'b7\tab}GraphNewton(f,-1,5,-15,23,tabelle)
\par \pard\ri4\plain\f8\fs28\cf0 Nun der Versuch mit dem Startwert 3.
\par \plain\f8\fs22\cf0
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}tabelle:= Newton(f,4,Genauigkeit)
\par {\pntext\f1\'b7\tab}GraphNewton(f,-1,5,-15,20,tabelle)
\par \pard\ri4\plain\f8\fs28\cf0 Das gleiche mit Startwert 1
\par \plain\f8\fs22\cf0
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}tabelle:= Newton(f,1,Genauigkeit)
\par \pard\li600\ri1\fi-300\plain\f3\fs22\cf1
\par \pard\ri4\plain\f8\fs28\cf0 Und nun noch Startwert -7
\par \plain\f8\fs22\cf0
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}Newton(f,-7,Genauigkeit)
\par \pard\li600\ri1\fi-300\plain\f3\fs22\cf1
\par \pard\ri4\plain\f8\fs28\cf0 Offensichtlich liefert der Algorithmus je nach Startwert unterschiedliche Nullstellen.
\par Im konkreten Fall wurden alle drei Nullstellen mit der angegebenen Genauigkeit
\par gefunden. Dabei variiert die Anzahl der Iterationen in Abh\'e4ngigkeit vom Startwert.
\par
\par Im konkreten Fall wei\'df man, dass eine ganzrationale Funktion dritten Grades maximal
\par drei Nullstellen hat. Insofern hat man nun alle Nullstellen gefunden. Der Newtonsche
\par Algorithmus macht aber keine Aussage \'fcber die Anzahl der Nullstellen. Letzlich ist so
\par auch kein Nachweis m\'f6glich, dass es keine Nullstellen gibt, wenn das Verfahren
\par nicht konvergiert.
\par
\par Eine interessante Frage ist: Wie reagiert der Algorithmus, wenn die Funktion keine
\par Nullstellen hat.
\par
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}f:= x -> x^2+3:
\par \pard\li600\ri1\fi-300\plain\f3\fs22\cf1
\par \pard\ri4\plain\f8\fs28\cf0 Diese Funktion hat bekanntlich keine reellen Nullstellen.\plain\f8\fs22\cf0
\par
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}solve(f(x),x)
\par \pard\ri4\plain\f8\fs28\cf0 Das zun\'e4chst unerwartete Ergebnis : Es scheint zwei Nullstellen zu geben.
\par Andererseits sind die Nullstellen imagin\'e4r. Die reelle L\'f6sung zeigt keine Nullstellen, was
\par man auch mit MuPAD nachweisen kann, wenn man den Definitionsbereich entsprechend
\par einschr\'e4nkt.
\par
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}solve(f(x), x, Domain = Dom::Real)
\par \pard\li600\ri1\fi-300\plain\f3\fs22\cf1
\par \pard\ri4\plain\f8\fs28\cf0 Nun Beginn der Iterationen mit Startwert 8.\plain\f8\fs22\cf0
\par
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}tabelle:= Newton(f,Startwert,Genauigkeit)
\par {\pntext\f1\'b7\tab}GraphNewton(f,-5,8,-5,70,tabelle)
\par \pard\ri4\plain\f8\fs28\cf0 Offensichtlich konvergiert der Algorithmus nicht. Dies korrelliert mit der nicht vorhandenen
\par Nullstelle.
\par
\par Eine Besonderheit tritt auf, wenn man als Startwert 1 w\'e4hlt. \plain\f8\fs22\cf0
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}tabelle:= Newton(f,1,Genauigkeit)
\par {\pntext\f1\'b7\tab}GraphNewton(f,-2,2,-1,5,tabelle)
\par \pard\ri4\plain\f8\fs28\cf0 Die Argumente oszillieren zwischen den Werten -1 und 1.
\par
\par Nun soll eine gebrochenrationale Funktion untersucht werden.
\par \plain\f8\fs22\cf0
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}f:=x -> (x^3-4*x-7.5)/(x^2-3)
\par \pard\li600\ri1\fi-300\plain\f3\fs22\cf1
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}tabelle:= Newton(f,1,Genauigkeit)
\par \pard\li600\ri1\fi-300\plain\f3\fs22\cf1
\par
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}GraphNewton(f,-10,10,-10,10,tabelle)
\par \pard\ri4\plain\f8\fs28\cf0 Nun ein anderer Startwert:
\par
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}tabelle:= Newton(f,19,Genauigkeit)
\par {\pntext\f1\'b7\tab}GraphNewton(f,-10,10,-10,10,tabelle)
\par \pard\ri4\plain\f8\fs28\cf0 Offensichtlich kommt man bei den gew\'e4hlten Voreinstellungen zu keiner L\'f6sung.
\par In solchen F\'e4llen bietet es sich an, f\'fcr einen ersten Eindruck den Graphen der Funktion
\par darzustellen. Wenn im Graph eine Nullstelle erkennbar ist, sollte man entweder einen
\par anderen Startwert w\'e4hlen oder in diesem Notebook die maximale Anzahl von Iterationen
\par heraufzusetzen. Schlie\'dflich ist es auch m\'f6glich, sich nur auf den Z\'e4hler zu beziehen
\par und die Nullstellen des Z\'e4hlers mit dem Newtonverfahren zu bestimmen. Auf diese
\par Untersuchungen wird in diesem Notebook verzichtet.
\par \plain\f8\fs22\cf0
\par \plain\f8\fs28\cf0 Bei der folgenden Funktion ist eine L\'f6sung in geschlossener Form nicht mehr m\'f6glich.
\par \plain\f8\fs22\cf0
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}f:=x -> 7-2^x-3^x
\par \pard\ri4\plain\f8\fs28\cf0 Der Befehl solve liefert kein sinnvolles Ergebnis.\plain\f8\fs22\cf0
\par
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}solve(f(x)=0,x)
\par \pard\ri4\plain\f8\fs28\cf0 Unterst\'fctzung erh\'e4lt man durch den Befehl float. Wenn es nur um das Ergebnis geht,
\par reicht dieser Befehl zur Erlangung des Ergebnisses nat\'fcrlich aus.
\par \plain\f8\fs22\cf0
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}float(solve(f(x)=0,x))
\par \pard\ri4\plain\f8\fs28\cf0 Nun wird das Newtonverfahren mit Startwert -1 durchgef\'fchrt.
\par \plain\f8\fs22\cf0
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}tabelle:= Newton(f,-1,Genauigkeit)
\par \pard\li600\ri1\fi-300\plain\f3\fs22\cf1
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}GraphNewton(f,-4,8,-500,10,tabelle)
\par \pard\ri4\plain\f8\fs28\cf0 Die bereits bekannte Nullstelle wird erkannt.
\par \plain\f8\fs22\cf0
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}Newton(f,1,Genauigkeit)
\par \pard\ri4\plain\f8\fs28\cf0 Nun noch der nat\'fcrliche Logarithmus
\par \plain\f8\fs22\cf0
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}f:=x -> ln(x):
\par {\pntext\f1\'b7\tab}Newton(f,2,Genauigkeit)
\par \pard\ri4\plain\f8\fs28\cf0 Diese Nullstelle ist als Eigenschaft der Logarithmusfunktion bekannt.
\par \plain\f8\fs22\cf0
\par \plain\f8\fs28\cf0 Nun ein eigentlich einfaches Beispiel:
\par \plain\f8\fs22\cf0
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}f:=x -> x^2-6*x:
\par {\pntext\f1\'b7\tab}Newton(f,3,Genauigkeit)
\par \pard\ri4\plain\f8\fs28\cf0 Diese in der Prozedur Newton implementierte Fehlermeldung ist zu interpretieren.
\par Eine Betrachtung der Nullstellen der Ableitung weist die Behauptung der Nullstelle der
\par Ableitung nach.
\par \plain\f8\fs22\cf0
\par \pard\li300\ri5\fi-300{\*\pn\pnlvlblt\pnf1\pnindent300{\pntxtb\'b7}}\plain\f3\fs22\cf1 {\pntext\f1\'b7\tab}solve(f'(x)=0,x)
\par \pard\ri4\plain\f8\fs28\cf0 Die Ableitung hat eine Nullstelle beim Startwert. Verallgemeinert: Startwerte mit waagerechter
\par Tangente sind nicht m\'f6glich. Nicht erlaubt sind somit:
\par - Extremstellen
\par - Sattelpunkte
\par Andererseits ist es auch theoretisch m\'f6glich, dass w\'e4hrend der Iterationen zuf\'e4llig eine
\par Nullstelle der Ableitung getroffen wird. Auch in diesem Fall bricht die Prozedur Newton
\par ab. Entfernt man die entsprechenden \'dcberpr\'fcfung aus der Prozedur, wird von MuPAD
\par mit einer Fehlermeldung abgebrochen. Allerdings werden dann nachfolgende Befehle
\par bei einer Evaluation der Befehle nicht weiter beachtet.
\par \plain\f8\fs22\cf0
\par \plain\f8\fs28\cf0\b\ul Einige Anregungen zur selbstst\'e4ndigen Weiterarbeit: \plain\f8\fs28\cf0
\par \plain\f8\fs28\cf0\ul
\par 1. Teil: Verbesserungen der Prozeduren:\plain\f8\fs28\cf0
\par
\par a) Man kann bei der Prozedur \plain\f8\fs28\cf2 GraphNewton \plain\f8\fs28\cf0 eine dynamische Anpassung des Zeichenbereichs an
\par die konkret vorliegenden Werte vornehmen. Welche Nachteile hat dies Verfahren?
\par b) In diesem Notebook wird als Genauigkeit die der Betrag von Xn+1-Xn angenommen.
\par Dieser Genauigkeitsbegriff ist unvorteilhaft bei sehr gro\'dfen Steigungen nahe der Nullstelle.
\par Es ist aber auch m\'f6glich, als Genauigkeit den Abstand von der x-Achse zu w\'e4hlen.
\par Siehe dazu auch das Notebook von \plain\f7\fs28\cf0 Alessandro Dell'Aere. Dieser Genauigkeitsbegriff
\par ist nachteilig, wenn man sehr flache Graphen im Bereich der Nullstelle hat. Optimal w\'e4re
\par ein Genauigkeitsbegriff, der beide Genauigkeitsbegriffe geeignet miteinander verbindet.
\par Hier sind verschiedene Formen der Realisierung m\'f6glich. Man sollte einen erweiterten
\par Genauigkeitsbegriff definieren und implementieren.
\par
\par \plain\f7\fs28\cf0\ul 2. Teil: Experimente mit dem Newtonverfahren
\par \plain\f7\fs28\cf0
\par a) Experimentieren Sie bei selbstgew\'e4hlten Funktionen mit verschiedenen Startwerten.
\par b) Man sollte versuchen, oszillierendes Verhalten in anderen F\'e4llen zu realisieren. Welche
\par mathematischen Bedingungen liegen bei Ihrem Beispiel vor?
\par c) K\'f6nnen Sie auch ein Beispiel finden, bei dem die Oszillationen Perioden von mehr
\par als zwei Schritten haben?
\par d) K\'f6nnen Sie ein Beispiel finden, bei dem die Funktion Nullstellen hat, obwohl der
\par Algorithmus nicht konvergiert? Wenn Sie kein Beispiel finden: In welcher Situation
\par k\'f6nnte dies passieren?
\par e) Wie geht man bei einer gebrochenrationalen Funktion vor, wenn der Startwert auf einer
\par Definitionsl\'fccke liegt und man trotzdem den Startwert beibehalten m\'f6chte?
\par f) Welche M\'f6glichkeiten, das Newtonverfahren einzusetzen hat man, wenn die Funktion
\par das Produkt einer ganzrationalen Funktion mit einer e-Funktion ist? Geben Sie ein
\par Beispiel an.
\par g) Welche M\'f6glichkeiten, das Newtonverfahren einzusetzen hat man, wenn die Funktion
\par das Produkt einer gebrochenrationalen Funktion mit einer e-Funktion ist? Erl\'e4utern Sie
\par anhand eines Beispiels.
\par h) Wenn man bei der Funktion \plain\f3\fs22\cf1 f:=x -> 7-2^x-3^x \plain\f7\fs28\cf0 Startwerte w\'e4hlt, die weit links liegen,
\par erh\'e4lt man eine relativ gro\'dfe Anzahl von Iterationen. Probieren Sie dies aus und
\par begr\'fcnden Sie anschaulich.
\par j) Sie sollten \'fcberpr\'fcfen, inwieweit bei Funktionen mit eingeschr\'e4nktem Definitionsbereich
\par (z.B. Logarithmusfunktion, Wurzelfunktion) die Einschr\'e4nkungen erkannt werden.
\par k) Wenn man beim nat\'fcrlichen Logarithmus den Startwert 20 w\'e4hlt, ergibt sich ein
\par "merkw\'fcrdiges Ergebnis". Erkl\'e4ren Sie, was das Ergebnis bedeutet und wie es
\par zustandekommt. \plain\f8\fs22\cf0
\par \plain\f3\fs20\cf0\b ________________________________________________________________________________
\par \plain\f5\fs22\cf2\b
\par Anmerkungen:\plain\f5\fs22\cf2
\par \plain\f5\fs20\cf2
\par \plain\f5\fs20\cf2\b 1.\plain\f5\fs20\cf2 Weitere Anregungen finden Sie in der Unterrichsmaterialsammlung unter \plain\f5\fs20\cf3 schule.mupad.de\plain\f5\fs20\cf2 . In diesen
\par Notebooks werden eine Vielzahl unterschiedlichster mathematischer Probleme mit MuPAD Pro gel\'f6st.
\par \plain\f3\fs20\cf0\b _______________________________________________________________________________
\par \plain\f8\fs22\cf0
\par
\par }