Polynomdivision TI 84-Plus < Taschenrechner < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 21:15 Mi 07.12.2011 | Autor: | Jabor |
Hallo,
ich habe in letzter Zeit mal ein wenig auf meinem TI-84 Plus programmiert und habe dabei auch Mal ein wenig aus dem Matheunterricht einfließen lassen... Nun habe ich mich daran versucht, die Polynomdivision zu programmieren. Dabei habe ich eine Weile herumexperimentiert und bin im Internet auf folgendes gestoßen:
Bei [mm] 0=Ax^{5}+Bx^{4}+Cx^{3}+Dx^{2}+Ex+F
[/mm]
kann man den nächstniedrigeren Grad erreichen, indem man
(B+AN)=B
(C+BN)=C
(D+CN)=D
(E+DN)=E
(F+DN)=F
setzt.
Anschließend hat man ensprechend
[mm] 0=Ax^{4}+Bx^{3}+Cx^{2}+Dx+E [/mm] und F als Rest.
Nun will ich das ganze allerdings mit Zwischenschritten darstellen, hatte dabei allerdings ein wenig Probleme...
Hat jmd. schonmal etwas ähnliches probiert/hat es sogar noch(und könnte es erklären...)?
Ich habe vorher schon einiges im Internet herausgesucht, bin allerdings nicht weiter fündig geworden.
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Danke im Vorraus,
Jabor
|
|
|
|
> Hallo,
> ich habe in letzter Zeit mal ein wenig auf meinem TI-84
> Plus programmiert und habe dabei auch Mal ein wenig aus dem
> Matheunterricht einfließen lassen... Nun habe ich mich
> daran versucht, die Polynomdivision zu programmieren. Dabei
> habe ich eine Weile herumexperimentiert und bin im Internet
> auf folgendes gestoßen:
> Bei [mm]0=Ax^{5}+Bx^{4}+Cx^{3}+Dx^{2}+Ex+F[/mm]
> kann man den nächstniedrigeren Grad erreichen, indem man
> (B+AN)=B
> (C+BN)=C
> (D+CN)=D
> (E+DN)=E
> (F+DN)=F
Diese Formeln sollte man statt mit Gleichheitszeichen mit
einem Pfeil schreiben, also etwa $\ B+A*N\ [mm] \to\ [/mm] B$ , denn es
handelt sich ja gar nicht um Gleichungen, sondern um
Zuweisungen.
> setzt.
> Anschließend hat man entsprechend
> [mm]0=Ax^{4}+Bx^{3}+Cx^{2}+Dx+E[/mm] und F als Rest.
Sinnvollerweise solltest du für die neuen Koeffizienten auch
neue Bezeichnungen benützen !
> Nun will ich das ganze allerdings mit Zwischenschritten
> darstellen, hatte dabei allerdings ein wenig Probleme...
Hallo Jabor,
es handelt sich dabei um das Verfahren von Horner oder
"Hornerschema". Wenn du dies programmieren willst, wäre es
sinnvoll, das so zu machen, dass es für einen beliebigen Grad n
[mm] (n\in\IN) [/mm] des Polynoms brauchbar ist. Dazu könntest du das
Ausgangspolynom als eine Liste $\ a\ =\ [mm] \{\,a_n\,,\,a_{n-1}\,,\,...\,a_1\,,\,a_0\,\}$
[/mm]
eingeben. Die schon bekannte Nullstelle (ich nehme an, dass
du das Verfahren in erster Linie zum Zweck der Lösung von
Polynomgleichungen brauchst) sei [mm] x_0 [/mm] . Dann suchen wir also
die Lösung der Division
$\ [mm] (\,a_n*x^n\,+\,a_{n-1}*x^{n-1}*\,...\,*a_1*x*\,a_0\,)\ [/mm] :\ [mm] (x-x_0)$
[/mm]
Das Ergebnispolynom wird ebenfalls durch eine Liste beschrieben:
$\ b\ =\ [mm] \{\,b_{n-1}\,,\,b_{n-2}\,,\,...\,b_1\,,\,b_0\,\}$
[/mm]
und ein allfälliger Rest mit r (falls [mm] x_0 [/mm] wirklich eine Nullstelle
war, müsste der gleich 0 sein).
Dann berechnet man die Koeffizienten [mm] b_k [/mm] nach den Formeln:
[mm] b_n:=0 [/mm] (das braucht man nur für den Start der Rekursion
und führt es nachher in der Liste gar nicht auf !)
[mm] b_k:=a_{k+1}+x_0*b_{k+1} [/mm] für $\ [mm] k\in\{n-1,n-2,\,.....\,1,0\}$
[/mm]
und der Rest ist
$\ [mm] r:=a_0+x_0*b_0$
[/mm]
Das Ganze lässt sich in einer FOR-Schleife programmieren.
Für das Programm wäre nun wichtig zu wissen, ob du ein
eigentliches Programm (mit Eingabeaufforderungen und
schrittweiser Darstellung) oder eine Funktion erstellen willst,
die auf Eingabe der Liste a die Liste b und den Rest r liefert.
Da ich keinen TI84 mehr habe, kann ich bei den Details
wohl nicht genau auf dieses Rechnermodell eingehen.
Das soll vorläufig mal genügen.
LG Al-Chw.
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 18:49 Do 08.12.2011 | Autor: | Jabor |
Danke erstmal für die Korrekturen.
Die Nullstellenbestimmung über das Horner-Schema ist mir bekannt(Wie ja auch im Starpost beschrieben), allerdings ist meine eigentliche Frage die nach einem Algorithmus, der die Polynomdivision selbst nutzt und damit auch die passenden Zwischenergebnisse(Gibt es dafür einen Fachterminus? Ich meine die Zahlen, die beim Rechnen unter dem Startterm aufgeschrieben werden.) liefert. Wenn ich mich im Startpost missverständlich ausgedrückt habe, so tut mir das leid.
|
|
|
|
|
Eingabefehler: "{" und "}" müssen immer paarweise auftreten, es wurde aber ein Teil ohne Entsprechung gefunden (siehe rote Markierung)
> Danke erstmal für die Korrekturen.
> Die Nullstellenbestimmung über das Horner-Schema ist mir
> bekannt(Wie ja auch im Starpost beschrieben), allerdings
> ist meine eigentliche Frage die nach einem Algorithmus, der
> die Polynomdivision selbst nutzt und damit auch die
> passenden Zwischenergebnisse(Gibt es dafür einen
> Fachterminus? Ich meine die Zahlen, die beim Rechnen unter
> dem Startterm aufgeschrieben werden.) liefert. Wenn ich
> mich im Startpost missverständlich ausgedrückt habe, so
> tut mir das leid.
Guten Abend Jabor,
in den angegebenen Formeln steckt natürlich schon der
Algorithmus !
Wenn du alle Zahlen des Hornerschemas anzeigen lassen
willst, etwa in der Form:
2\qquad $\begin{tabular}{c c c c c c c}
1&2 &-4 & -3 & -8&3 \\
0 &2&8 & 8&10&4\\
\\ \hline
1 &4&4&5&2\ |&7\\
\end{tabular}$
so könntest du folgende Bezeichnungen einführen:
x_0\qquad $\begin{tabular}{c c c c c c}
a_n & a_{n-1} & a_{n-2} & .....&a_1&a_0 \\
& b_{n-1} & b_{n-2} & .....&b_1&b_0 \\
\\ \hline
e_{n-1} & e_{n-2} & e_{n-3} & .....&e_0\ |&r\\
\end{tabular}$
Die Werte a_k der obersten Zeile und der Wert x_0
der schon bekannten Nullstelle gehören zu den Input-
werten.
Das Ergebnispolynom (unter dem Strich) hat die
Koeffizienten e_k . Die Koeffizienten der mittleren
Zeile habe ich mal mit b_k bezeichnet.
Um in allen Spalten des Schemas jeweils denselben
Index zu haben, könnte man das Schema zunächst
so notieren:
x_0\qquad $\begin{tabular}{c c c c c c}
a_n & a_{n-1} & a_{n-2} & .....&a_1&a_0 \\
& b_{n-1} & b_{n-2} & .....&b_1&b_0 \\
\\ \hline
c_n&c_{n-1} & c_{n-2} & .....&c_1&c_0\\
\end{tabular}$
Damit hat man den Algorithmus:
a_n\to c_n$
(und eventuell 0\to b_n)
$\ For\ k,n-1,0,-1$
c_{k+1}*x_0\to b_k
a_k+b_k\to c_k
$\ EndFor$
Die damit berechneten Werte kann man dann in
geordneter Form als Output darstellen lassen,
also die drei Zeilen der a_k , b_k , c_k .
Wenn die Ergebnisse weiter verwendet werden
sollen, etwa für eine weitere Polynomdivision,
falls der Rest r=c_0 gleich 0 war, sollte man dann
natürlich das Ergebnispolynom e definieren durch
$\ For\ k,1,n$
$\ c_{k}\to e_{k-1}}$
$\ EndFor$
LG Al-Chw.
|
|
|
|