Warum selber rehnen es gibt doh Computer?
Teilnehmer:
Christian Draeger Andreas-Obershule
Dennis Menge Heinrih-Hertz-Obershule
Patrik Mikut Immanuel-Kant-Obershule
Andre Rozek Herder-Obershule
Patrik Klitzke Andreas-Obershule
ChristopherShmidt Immanuel-Kant-Obershule
Robert Shlämann Immanuel-Kant-Obershule
Gruppenleiter:
FalkEbert Tehnishe Universität Berlin,
Mitglied imDFG-Forshungszentrum Matheon
Mathematikfür Shlüsseltehnologien
Wenn man einmal die Shüler eines Mathematikkurses beobahtet, dann stellt
man shnell fest, dass sie ihre Tashenrehner öfter benutzen als ihren Kopf.
Wozu man sih auh die Mühe mahen, einen Wert wie
(2 50 + 1) − 2 50 selbst
auszurehnen, wenn der Tashenrehner shon gribereit liegt?
Warum man seinem Tashenrehner nihtimmer trauenkann, haben wir in die-
semeinwöhigenKurserfahren.Dazumuss manersteinmalwissen,wieeinReh-
ner überhaupt rehnet, weshalb wir uns zuerst mitder Mashinenarithmetikbe-
fasst haben. Weiterhin haben wir die möglihen Rehenoperationen betrahtet,
dennfür einen Computer sind Addition und Multiplikation mitrelativgeringem
Aufwand möglih.Wieman aber dieDivision und dieExponentialfunktion oder
auhtrigonometrisheFunktionennuraufdiesebeidenOperationenzurükführen
kann, wollen wir in unserem Beriht zeigen. Um dies zu ermöglihen, benutzten
wir Approximationen mit dem Newton-Verfahren und mit Taylor-Polynomen.
Neben der Möglihkeit, Werte selbst zu errehnen, haben wir gezeigt, wie es
durh Interpolation von Tabellen möglih ist, alle Werte exakt und ezient zu
bestimmen.
2 Mashinenarithmetik
Esgibtvershiedene Zahlensysteme.Dasgängistefürunsistdas Dezimalsystem.
IndiesemSystem stehen uns dieZiern 0bis 9zur Verfügung. EinemComputer
bzw.einemprozessorgesteuertenGerätstehenabernurzweiZuständezur Verfü-
gung,nämlihanundaus.DieseZuständewerdenübliherweisedurhdieZiern
0(füraus) und 1(füran) dargestellt.Das Zahlensystem,das nuraus den Ziern
0und 1 bestehtwird alsDual-oder auhBinärsystem bezeihnet.
2.1 Darstellung von Dualzahlen
Da die Darstellung und Umrehnung von Ganzzahlen im Dualsystem allgemein
bekannt ist, möhten wir in unserem Beriht nur auf die Darstellung von Flieÿ-
kommazahleneingehen.Eine typishe normierteFlieÿkommazahlwirdfolgender-
maÿenbeshrieben:
± 0, 1m 2 m 3 ..m 53 · 2 e 10 e 9 ..e 0 − 1023
Hierbeihandeltessihumein64bit-System.DasersteBitwirdfürdasVorzeihen
derDualzahlverwendet:Eine0bedeutet,dassdieZahlpositivist,eine1dagegen,
dass sie negativ ist. Die Mantisse der Dualzahl beginnt mit 0,1. Dies ist eine
Festlegung, um die Eindeutigkeit der Zahlen zu garantieren. Danah folgen 52
Ziern der Mantisse, welhe im Bereih von
0, 5
bis1 − 2 53 liegt. Desweiteren
Zahlwird dann 1023 subtrahiert.Der Exponentist danneine Ganzzahl, diesih
imBereih von 1024 bis-1023 bendet.
Desweiteren gibt esfolgende Festlegungen:
m 2 ..m 53 = 0 ∧ E = 0 → 0
(1)m 2 ..m 53 = 0 ∧ E = 2047 → ±∞
(2)mindestens ein
m i 6 = 0 ∧ E = 2047 → NaN (NotaNumber)
(3)E
beizeihnet hierbei die durhe 0 bis e 10 gebilete Zahl und NaN eine Zahl, die
gar keine ist,wie z.B.
0 0
.ImweiterenVerlaufdiesesKapitels,wirddas8Bit-Systemverwendet,wodieMan-
tisse5StellenundderExponent2Stellenbesitzt.Damitlassensihbeispielsweise
positiveZahlenimBereih von
0, 10000 · 2 − 11 = 0, 0625
bis0, 11111 · 2 +11 = 7, 75
darstellen.
2.2 Mashinengenauigkeit
JederComputermahtbeimRehnenFehler.Mathematishbezeihnet mandie-
sen Fehler wie folgt:
eps = b 2 · b − µ ,
wobei
µ
die Anzahl der Stellender Mantisse und b dieBasis des Zahlensystems angibt.Speziell für das Dualsystem gilt:eps = 2
2 · 2 − 5 = 1 32
Im8 Bit System istdieMashinengenauigkeitalso etwasmehr alseine Dezimal-
stelle.Allgemein giltFolgendes:
1.
rd(x) = x(1 + ε 1 )
2.
x ⊗ y = (x × y)(1 + ε 2 ), × ∈ { +, − , · , ÷}
3.
| ε 1/2 | ≤ eps
Dies heiÿt, dass es sowohl zu Fehlern bei der Darstellung von Dezimalzahlen in
dualen Zahlen kommt, als auh bei jeder möglihen Kombinationvon mehreren
Dualzahlen.Dieserelativen Fehlerkönnenmaximalso groÿsein, wie dieMashi-
nengenauigkeit.
Umwandlung von
π
von der dezimalen Zahl in die duale Zahl durh das 8Bit-Systemdemonstrieren. DurhdieMashiengenauigkeitvon
1
32
ergibt sih,dassπ
zwishen
31
32 π ≈ 3, 04und 33 32 π ≈ 3, 24liegt.
Zuerstberehnen wir den Exponenten. Eswird bald ersihtlih, dass
π
zwishen0, 5 · 2 2 = 2
und0, 5 · 2 3 = 4
liegt . Demnahist der Exponent 2. Mankann diesauh durh den Logarithmusberehnen:
0.5 · 2 x = π log(0.5 · 2 x ) = log(π) log(0.5) + x · log(2) = log(π)
x = log(π) − log 0.5 log(2) x ≈ = 2.65
Hierbeiwird abgerundet, dadieeigentlihe Mantisse gröÿer als0,5 sein kann.
Nun muss nur noh die Mantisse berehnet werden. Dazu teilen wir die Zahl
durh
2 Exponent. Wir erhalten rund 0,7854. Nun wird diese Zahl mit zwei multi-
pliziert. Wenn Sie gröÿer als eins ist, ist die nähste Stelle der Mantisse 1
eins
und eins wird abgezogen, anderenfalls null. Dies wird nun solange gemaht, bis
alleMantissenstellen gefülltsind:
π : 2 2 ≈ 0, 7854 0, 7854 · 2 = 0, 5708 + 1 0, 5708 · 2 = 0, 1416 + 1 0, 1416 · 2 = 0, 2832 + 0 0, 2832 · 2 = 0, 5664 + 0 0, 5664 · 2 = 0, 1328 + 1 0, 1328 · 2 = 0, 2656 + 0 0, 11001 | 0
Dadasarry-Bitnullist,mussnihtgerundetundauhnihtnormalisiertwerden.
Wirerhalten nun
0, 11001 · 2 10 = 0, 7854 · 2 2 = 3.125
.Wir erhalten also3.125 im8BitSystem für
π
.2.3 Addition mit Dualzahlen
Vorgehensweise Um zwei Dualzahlen miteinander addieren zu können, müs-
sensiedengleihenExponentenbesitzen.Derkleinerewirdandengröÿerenange-
1
InunseremFalldieerste
(also das Komma nah links vershoben) wird. Dieser Vorgang wird 'Shiften'
genanntundistauhindieandereRihtungmöglih.Addiertmannun dieMan-
tissen, muss die Dualzahl eventuell normalisiert werden, denn durh Überträge
kann diese von der üblihen Darstellungsweise abweihen (z.B.
1, m 2 m 3..).Dies
geshiehtebenfallsdurh eineadditiveVeränderung desExponenten beientspre-
hender Multiplikation bzw. Division der Mantisse mit2. Anshlieÿend wird die
Mantisse gerundet, was mitHilfe des sogenannten 'arry-Bits' geshieht.
Dasarry-Bit wirdnurkurzzeitiggespeihert und gibt die6.Stelle der Mantisse
an. Beträgt das arry-Bit 0, so wird abgerundet, anderenfalls aufgerundet. Die
Aufrundungkann dazu führen, dass dieMantisse gleih 1 wird und einweiteres
malnormalisiertwerden muss.
Beispielrehnung Nehmen wir nun ein einfahes Beispiel: Gegeben seien die
zwei Zahlen3und 1,4375.Wenn wirdiese inBinärzahlenumwandeln,ergibtsih
0, 11000 · 2 10und0, 10111 · 2 01.DiekleinereZahlwirdnunnahrehtsvershoben:
0, 010111 · 2 10. Nunaddieren wir diese:
0, 11000 2 10 +0, 010111 2 10 1, 00011 | 1 2 10
DanundieMantissegröÿeralseinsist,wirdsienormaliesiert.Wirvershiebendie
Mantisseum eins nahrehts 2
und erhöhenden Exponenten um eins:
0, 1000111 · 2 11.Da das arry-Bit3 1ist, wirdaufgerundet. Daraus ergibt sih: 0, 10010 · 2 11.
DadieMantisse nihtgleiheins ist,mussniht noheinmalnormalisiertwerden.
Wir erhalten
0, 10010 · 2 11 = 4, 5
. Der rihtige Wert beträgt 4,4375. Der Fehlerentsteht aufgrund der Mashinengenauigkeit.
2.4 Multiplikation von Dualzahlen
Vorgehensweise Die Dualzahlen werden multipliziert,indemdie Exponenten
miteinanderaddiertunddieMantissenmiteinandermultipliziertwerden.Wiebei
der Addition wird die Dualzahl nun miteiner geeigneten Shiftoperation norma-
lisiert,anshlieÿendgerundet und ggf.ein weiteresmal normalisiert.
2
Division durhzwei
3
6.Stelle
dieAnshalihkeitund dem besseren Verständnis sehr hilfreih.
Aus Gründen der Einfahheit nehmen wir wieder die gleihen Zahlen wie auh
beimAdditionsbeispiel.Wir multiplizieren3 mit1,4375 im8Bit-System:
0, 10111 · 0, 11000 = 0, 10111 · 0, 1 + 0, 10111 · 0, 01
= 0, 10001 | 01
Jetzt muss gerundet werden: Dabei wird die sehste und siebte Stelle der Man-
tisse abgeshnitten. Es wird niht aufgerundet, da das arry-Bit null ist. An-
shlieÿend müssen die Exponenten noh addiert werden. Es ergibt sih dann
0, 10001 · 2 10+01 = 0, 10001 · 2 11 = 0.53125 · 2 3 = 4.25
.Dieserstimmtgerundet mitder ersten Stelledes tatsählihen Wertes von 4,3125 überein.
3 Approximation von Funktionswerten
WirwerdenimFolgenden einigeTehniken zumnäherungsweisen Auswertenvon
analytishen Funktionen entwikeln. Die Standard-Methode dazu ist dieTaylor-
entwiklung. Andere spezielle Funktionswerte - insbesondere die Werte von Um-
kehrfunktionen - lassensihmitHilfe vonNullstellensuhbestimmen.Zudiesem
Zwek wird das Newton-Verfahren vorgestellt.
3.1 Taylor-Entwiklung
Wir betrahten eine genügend oft dierenzierbare Funktion
f
in der Nähe desPunktes
x 0. Es gilt dann, wenn man genügend nahe an x 0 bleibt, dass f (x) ≈ f(x 0 )
. Dabei setzen wir p(x) = f (x 0 )
. Dies ist eine konstante Funktion. Eine
f (x) ≈ f(x 0 )
. Dabei setzen wirp(x) = f (x 0 )
. Dies ist eine konstante Funktion. Einebessere Näherung an
f
in der Nähe vonx 0 ist zu erwarten, wenn man statt
einer konstanten eine lineare Funktion
p 1 zulässt. Dabei fordern wir zusätzlih
zu
p 1 (x 0 ) = f (x 0 )
, dassp ′ 1 (x 0 ) = f ′ (x 0 )
. Diese Gerade ist die Tangente an dieFunktion
f
imPunktx 0.Eine Gleihung fürp 1 ergibtsihmitder Grenzwertbe-
trahtung
x lim → x 0
f (x) − p 0 (x) x − x 0
.
(4)Zählerund NennerdiesesAusdruks konvergieren gegen0,da
p 0 (x) = f (x 0 )
.Mitdem Satz von L'Hospital erhältman
x lim → x 0
f (x) − p 0 (x)
x − x 0 = lim
x → x 0
f ′ (x) − 0
1 − 0 = f ′ (x 0 ).
Ausmultiplizierenliefert
x lim → x 0 f(x) = lim
x → x 0 f (x 0 ) + f ′ (x 0 )(x − x 0 )def= lim
x → x 0 p 1 (x).
Diese Gerade stimmt in
x 0 mit f
sowohl im Wert als auh in der ersten Ablei-
tung überein. Wir versuhen jetzt eine quadratishe Parabel zu nden, die mit
f
inWert,erster und zweiter Ableitungübereinstimmt. Dazubetrahten wir die Dierenzf(x) − p 1 (x)
.An der Stellex 0 isdiese Dierenz nullund auhdieerste
Ableitung.
f (x) − p 1 (x)
hat alsoeinenkritishen Punkt anx 0 und verhältsih in
einerkleinenUmgebung wie
α(x − x 0 ) 2.UmdieZahlα
zu bestimmen,betrahten
wir
x lim → x 0
f (x) − p 1 (x) (x − x 0 ) 2 .
Diemehrfahe Anwendung des Satzes von L'Hospital erhältman
x lim → x 0
f(x) − p 1 (x)
(x − x 0 ) 2 = lim
x → x 0
f(x) − (f(x 0 ) + f ′ (x 0 )(x − x 0 ))
(x − x 0 ) 2 (5)
= lim
x → x 0
f ′ (x) − (f ′ (x 0 )) 2(x − x 0 )
= lim
x → x 0
f ′′ (x)
2 = f ′′ (x 0 ) 2 .
Ausmultiplizierenliefert
x lim → x 0
f (x) = lim
x → x 0
f (x 0 ) + f ′ (x 0 )(x − x 0 ) + 1
2 f ′′ (x 0 )(x − x 0 ) 2 def= lim
x → x 0
p 2 (x).
Mitder analogen Vorgehensweise wie in (4) und (5) erhältman für beliebige
n p n (x) = f(x 0 )
0! + f ′ (x 0 )
1! (x − x 0 ) + f ′′ (x 0 )
2! (x − x 0 ) 2 + . . . + f (n) (x 0 )
n! (x − x 0 ) n .
(6)DieseNäherung an
f
inder Nähe vonx 0 nennt sih Taylor-Polynom.
DieGenauigkeitder Approximation von
f
durhp n zeigenwir imFolgenden.Es
gilt
(f(x) − p n (x)) (n+1) = f (n+1) (x) − p (n+1) n = 0
weil
p n einPolynomn
-ten Gradesist unddie (n + 1)
teAbleitunggleihnull ist.
Weiterhin gilt
(f (x) − p n (x)) (n) = Z x
x 0
(f (x) − p n (x)) (n+1) = (f (n) (x) − f (n) (x 0 )) − (p (n) n (x) − p (n) n (x 0 )).
Mitdem Mittelwertsatzder Dierentialrehnung ergibt sih
(f (x) − p n (x)) (n) = f (n+1) (ξ)(x − x 0 ) − p (n+1) n (ξ)
| {z }
= 0
(7)fürein
ξ ∈ [x, x 0 ]
. Dien
maligeIntegration von(7) liefertden Ausdrukf(x) − p n (x) = f (n+1) (ξ)
(n + 1)! (x − x 0 ) n+1 .
Wirnehmen
f(x) = e x und x 0 = 0
. Dannergibt sih mit(6)
p n (x) = 1 + x + x
2 + x
6 + . . . + x n
n! .
(8)Undes gilt
e x − p n (x) = e ξ x n+1
(n + 1)! ≤ max(1, e ξ ) x n+1 (n + 1)! .
Um
e x mit x = M · 2 E zu bestimmen, kann man wiefolgt vorgehen. Es gilt
| M | ∈ [ 1 2 , 1)
undE ∈ Z
.e x = (e M ) 2 E .
(9)Esgenügtalso,dieExponentialfunktionfürWertein
[ − 1, 1]
auswertenzukönnen.Dies kann mit Hilfe der Taylorpolynome
p n geshehen. Dabei ist nah (7) der
Fehler maximal
e
(n+1)!
. Für 8 Stellen Genauigkeit benötigt man shonp 12. Die
Nutzungder Potenzgesetze spart aberRehenzeit.
e M = (e M/256 ) 256 = ((((((((e M/256 ) 2 ) 2 ) 2 ) 2 ) 2 ) 2 ) 2 ) 2 .
(10) Bestimme
M 2 8
. Bestimme
p 4 (M )
mitp 4 aus (8).
Quadriere
p 4 (M ) | E | + 8
mal. Wenn
E
negativ ist,bestimmedas Reziprokedes letztenErgebnisses. Passe das Ergebnisandie Rehnerarithmetikan.
Dabei sind ein8-StellenShift sowie 4 Additionen und 4Multiplikationenfür die
Auswertung von
p 4 nötig. Hinzu kommen weitere | E | + 8
Multiplikationen und
eine potentielle Division. Da selbst in einer 64bit Arithmetik e 2 10 = Inf
ist, ist
auh dieAnzahl an Multiplikationenauf 22beshränkt.
Fürhöhere Genauigkeiten kann das benutzte
p n nohweiter erhöht werden.
3.2 Newton-Verfahren
Das Finden vonNullstellen von Funktionenist niht immereinfah. Ausdiesem
Grundgibt es Nährungsverfahren, wie z.B. das Newton-Verfahren.
Das Newton-Verfahren funktioniert am besten, wenn als Startpunkt ein Punkt
gewählt wird, der möglihst nah ander gesuhten Nullstelle liegt.Wirversuhen
in diesem Verfahren, die Nullstelle
x ∗ durh mehrere Iterationen anzunähern.
a
3M 0, 75
E 2
M/256 1, 4142136 p 4 (M/256) 1, 00293398 (p 4 (M/256)) 2 56 2, 11700002 ((p 4 (M/256)) 2 56) 4 20, 0855369 M 0, 627673039
E 5
e 3 20, 0855369
Tabelle1:Shritte beider Bestimmung von
e 3
Voraussetzungen dafür, dass das Newton-Verfahren überhaupt funktioniert,sind
dieFolgenden:
eine stetig dierenzierbareFunktion, diemindestens eine Nullstelle besitzt
dieerste Ableitungsollte niht 0 werden ander Nullstelle
Esgibt vershiedene Herleitungenfür dieses Verfahren. ImFolgenden stellen wir
einevondiesenvor.DiesebasiertaufderzuvorvorgestelltenTaylor-Entwiklung.
Sei
f(x)
eine stetig dierenzierbare Funktion. Weiterhin seif(x ∗ ) = 0
, al dieFunktion
f
besitzt eine Nullstellebeix ∗. Dannsei x 0 ≈ x ∗.Jetzt betrahten wir
das
p 1-Polynom der Taylorentwiklung, alsodas Polynom biszum Glied mitder 1.Ableitung.
f(x) ≈ f(x 0 ) + f ′ (x 0 ) · x − x 0 = p 1 (x)
Jetzt bestimmen wir die Nullstelle
x 1 dieses Polynoms.
f(x 0 ) + f ′ (x 0 ) · (x 1 − x 0 ) = 0
Nunstellt man dieGleihung einfah nur noh nah
x 1 um.
f ′ (x 0 ) · (x 1 − x 0 ) = − f (x 0 ) x 1 − x 0 = − f(x 0 ) f(x 0 ) x 1 = x 0 − f (x 0 )
f ′ (x 0 )
herungenfür
x ∗ zu erhalten undesergibtsihdannfolgendeIterationsvorshrift:
x n+1 = x n − f (x n )
f ′ (x n )
(11)3.3 Konvergenz des Newton-Verfahren
Wirbetrahten dieIterationsfunktion des Newton-Verfahrens
ϕ(x) = x − f (x) f ′ (x) .
Esgilt fürdie Nullstelle
x ∗ dass ϕ(x ∗ ) = x ∗. und weiterhin
ϕ ′ (x) = 1 − (f ′ (x)) 2 − f(x) · f ′′ (x)
ϕ ′ (x) = 1 − (f ′ (x)) 2 − f(x) · f ′′ (x)
(f ′ (x)) 2
= 1 − (f ′ (x)) 2
(f ′ (x)) 2 + f (x) · f ′′ (x) (f ′ (x)) 2
= f(x) · f ′′ (x)
(f ′ (x)) 2 .
(12)Damitgilt
x ∗ − x n+1 = x ∗ − ϕ(x n )
= ϕ(x ∗ ) − ϕ(x n )
= ϕ(x ∗ ) − (ϕ(x ∗ ) + ϕ ′ (x ∗ )(x n − x ∗ ) + ϕ(ξ)
2 (x n − x ∗ ) 2 .
(13)Dabei ist
ϕ(x n )
bis zum Polynomp 1 der Taylorentwiklung um x ∗ entwiklelt
und das Fehlerglied addiertworden. Mit (12) folgt
ϕ ′ (x ∗ ) = 0
daf (x ∗ ) = 0
undf ′ (x ∗ ) 6 = 0
.Für (12) folgt damitx n+1 − x ∗ = ϕ ′′ (ξ)
2 (x n − x ∗ ) 2
für ein
ξ ∈ [x ∗ , x n ]
. Da der Abstand zur Nullstelle im(n + 1)
ten Shritt vomQuadratdes Abstandsdes
n
tenShrittesabhängt, spriht manauhvonquadra-tisherKonvergenz.Wenn
(x n − x ∗ )
genügendkleinist,dannist(x n+1 − x ∗ )
nohsehr viel kleiner. Anshaulih kann man sagen, dass sih die Anzahl korrekter
Stellender Iterierten
x n in jedem Shritt etwa verdoppelt.
Die Division mit Hilfe des Newton-Verfahrens beruht auf dem Prinzip, dass wir
unseineFunktionssharsuhendiealsNullstellendieReziprokenwertederZahlen
a
hat, durh die wir dividieren möhten. Eine spezielle Wahl dieser Funktionensorgt dafür, dass das Newton-Verfahren ohneDivisionen anwendbarist.
Zur Bestimmung des Reziproken einer Zahl
a
kann man wie folgt vorgehen. ZurVereinfahung gehenwir von
a > 0
aus. Das Vorzeihen vona
unda − 1 ist iden-
tish.Wir mahen diefolgendenVorbetrahtungen
a = M · 2 E,
1
a = M 1 · 2 − E
,
f(x) = 1 x − M
hatM 1
alsNullstelle,
x n+1 = x n −
1 x n − M
− 1
x 2 n
= x n (2 − M · x n )
.Manmuss alsonur das Reziproke vonZahlen
M ∈ [0, 5; 1)
bestimmen können.a = M · 2 E x n+1 = x n −
1 x n − M
− x 1 2 n = x n (2 − M · x n )
DieseGleihungdientunszur Reziprokenberehnung.Dadas Verfahrenshneller
konvergiert,wennmanStartwertewählt,dieinder NähedergesuhtenNullstelle
liegen,benötigen wireinVerfahren,das unsgeeigneteStartwerte
(x 0 )
liefert,alsosolhe, die bereits nahe an
1
M
liegen. Eine einfahe Möglihkeit ist eine Aproxi-mationvon
1/M
durh eine lineareFunktion der Formg(x) = mx + n
.DieFunktionsgleihung kann man durh folgendesGleihunggssystem gewinnen:
f (x) = 1 x f( 1
2 ) − g( 1
2 ) = δ
f (1) − g(1) = δ
f (ξ) − g(ξ) = − δ
(f (ξ) − g(ξ)) ′ = 0
0 0.5 1 1.5 2 2.5 0
0.5 1 1.5 2 2.5
x
y
1/x mit Minimax−Gerade
1/x g(x)
Abbildung1: Minimax-Gerade
Dabeifordernwir,dassdermaximaleAbstandzwishen
f
undg
anden Rändernund an einer Zwishenstelle angenommen wird und insgesamt minimal ist. Die
Lösungdieses Gleihungsystems istdie sogenannte Minimax-Gerade
g(x) = − 2 · x + 3 2 + √
2.
Mitdiesem Startwert reihen für 8Stellen Genauigkeit etwa3 Newton-Shritte.
Bestimme
x 0 = g(M ) = − 2 · M + ( 3 2 + √ 2)
. Bestimme
x 3 ≈ M 1.
Rehenbedarf: 7Multiplikationen,4 Additionen
Da
1/M ∈ (1; 2]
liegtmüssenwirnunnohdieZahlandenMantissenbereihund den Exponenten anpassen.DiesesVerfahrenzurDivision(nahMultiplikationmitdementsprehenden Zäh-
ler) ist tatsählih shneller als die Vorgehensweise wie beim shriftlihen Divi-
dieren.
1
a ≈ x 3
2 · 2 − E +1
a
3M 0, 75
E 2
x 0 1, 4142136 x 1 1, 3284271 x 2 1, 3333153 x 3 1, 3333333 M 0, 6666667
E − 1
1/a 0, 3333333
Tabelle2: Shritte beider Bestimmungvon
1/3
Anwendungen
WeitereAnwendungsmöglihkeitensindzum Beispieldas Logarithmieren.Esgilt
a = M · 2 E,
ln(a) = ln(M ) + ln(2) · E
,
e x − M
hatln(M )
alsNullstelle.
x n+1 = x n − e xn e xn − M = x n − 1 + M · e − x n (Newton)
Es muss also nur
ln(M )
fürM ∈ [ 1 2 , 1)
durh einige Newtoniterationen aus- gewertet werden. Dafür sind nur Additionen und Multiplikationen notwendig.Zusätzlihmuss
ln(2)
alsKonstante zur Verfügungstehen. Die Minimax-Gerade fürden Startwert istg(x) = 1, 38629436x − 1, 35646431
.4 Der CORDIC-Algorithmus
DerCORDIC 4
AlgorithmusisteineektivesVerfahren,um denCosinusundden
Sinus und damit den Tangens eines Winkels nährungsweise zu bestimmen. Der
Algorithmusbasiert auf folgenderIteration:
4
Die Abkürzung steht für Coordinate RotationDigital Computer und wurdevon Jak E.
VolderEndeder50erJahreentwikelt.
a
3M 0, 75
E 2
x 0 − 0, 316743539 x 1 − 0, 287255667 x 2 − 0, 287681982 x 3 − 0, 287682073 ln(2) · 2 1, 38629436 x 3 + ln(2) · 2 1, 09861229 M 0, 549306144
E 1
ln(3) 1, 09861229
Tabelle3: Shritte beider Bestimmung von
ln3
x n+1 = x n − d n · y n · 2 − n y n+1 = y n + d n · x n · 2 − n z n+1 = z n − d n · arctan 2 − n d n = sign(z n )
(14)
Alle möglihen Werte von
arctan 2 − n für die vershiedenen n
werden vorgespei-
hert, wobei übliherweise
n
etwas gröÿer als die Mantissenlänge gewählt wird.Wenn
| z 0 |
kleiner oder gleihX ∞
k=0
arctan 2 − k = 1.743286047...
(15)ist,dann ergibt sih
lim n →∞
x n
y n
z n
= K ×
x 0 · cos z 0 − y 0 · sin z 0
x 0 · sin z 0 + y 0 · cos z 0
0
,
wobei der Skalierungsfaktor K gleih
Π ∞ n=0 √
1 + 2 − 2n = 1.64676025...
ist. Umnun den Cosinus und Sinuseines Winkelszu bestimmen, benötigt man noh die
Startwerte für
x, y
undz
.Die Zahl für dieCosinus bzw. Sinusbestimmtwerdensollen,ist
θ
.Dabeikannθ
maximalsogroÿwiederbei(15)berehneteWertsein.x 0 = 1
K = 0, 60725...
y 0 = 0 z 0 = θ
DasGrundprinzipist,dassmanversuhtdurhDrehungeinesEinheitsvektorsum
vershiedene immerkleiner werdende Winkel
± arctan(2 − n )
einzukreisen.Ersetzt mandie Drehung um± arctan(2 − n )
durheine Drehstrekung mitdem zusätzli- henFaktor√ 1 + 2 − 2n,dannsinddiese Drehstrekungen durhden Algorithmus
(14) realisiert. Zum Ausgleih der Strekung wird mit dem auf
1/K
verkürztenVektor begonnen. Der nale Vektor ist der um
θ
gedrehte Einheitsvektor, von dessenKomponentencos θ
undsin θ
abgelesen werden können.Die Vorteile bei diesem Verfahren sind zum einen, dass es sowohl Cosinus als
auhSinusgleihzeitigberehnetunddass manzumBerehnennuraddierenund
Mantissen shiften können muss.
5 Oder doh lieber Tabellen?
5.1 Grundlagen
Neben derMöglihkeitdieWerteeinerFunktion auszurehenen,istesauhmög-
lih, Tabellen zur Wertebestimmung heranzuziehen. Dabei werden bestimmte
Stellen die sogenannten Stützstellen und die dazugehörigen Werte gespei-
hert.DiesesVerfahrenwurdebevoresTashenrehner gab zur Bestimmungvon
beispielsweise Sinuswerten herangezogen. Damals ergab sih meist eine Genau-
igkeit von a. 4 Stellen,weil dietabellarisierten Werte niht genauer angegeben
waren. Um die Werte zwishen zwei Stützstellen zu bestimmen, wurde einfah
eine Gerade durh diese beiden Punkte gelegt und deren Werte als Näherungen
angenommen. Dies ist jedoh bei einer geforderten Mashinengenauigkeit von
mindestens 16 Stellen zu ungenau. Und besser als eine solhe Gerade wäre ein
Polynom
p(x) (n − 1)
-ten Grades, wobein
dieAnzahl der Stützstellen ist.p(x) = a 0 + a 1 x + a 2 x 2 + . . . + a n x n
Dieses Polynom muss an allen Stützstellen die in der Tabelle abgespeiherten
Werte annehmen,
p(x i ) = y i. Abernoh istunklar obdieses Polynom überhaupt
existiert.
Um die Existenz dieses Polynoms zu beweisen, denieren wir zuerst ein soge-
nanntes Lagrange-Polynom
(n − 1)
-Grades,für das gilt:L i (x j ) =
( 1, i = j
0, i 6 = j
(16)Durh Multiplikation der Linearfaktorenergibt sih:
l i = (x − x 1 )(x − x 2 ) · · · (x − x i − 1 )(x − x i+1 ) · · · (x − x n ) l i (x i ) = (x i − x 1 )(x i − x 2 ) · · · (x i − x i − 1 )(x i − x i+1 ) · · · (x i − x n )
Dadurh ist in
l i die Bedingungl i (x j ) = 0
für i 6 = j
erfüllt. Durh Teilung von l i
durh
l i (x i )
ist auh die zweite Bedingungl i (x)/l i (x i ) = 1
füri = j
erfüllt undL i (x)
ist nun deniert mitL i (x) = l i
l i (x i ) .
Daraus ergibt sihfür
p
p = a 1 L 1 + a 2 L 2 + . . . + a n L n .
Undfür dieStützstellen
x i
p(x i ) = a 1 L 1 (x i ) + a 2 L 2 (x i ) + . . . + a n L n (x i ).
Dabei ist jedoh wegen Bedingung (16) jeder Summand auÿer
a i L i (x i )
gleihNull, denn
L i und a i beziehen sih nur bei der Stützstelle x i auf das gleihe i
x i auf das gleihe i
und damit ist der Faktor
L i in jedem anderem Summanten Null. Folglih ist
p(x n ) = a n = y n. Durh Koezientenvergleih an allenStützstellen ergibt sih
p(x) = y 1 L 1 (x) + y 2 L 2 (x) + . . . + y n L n (x).
DiesesPolynomexistiertunderfülltallevorheran
p(x)
gestelltenAnforderungen.Auh wenn die Existenz dieses Polynoms nun bewiesen ist, ist noh niht klar,
dass dieses eindeutig ist,dies wie folgtzeigen.
Nehmen wir einmal an, es gibt neben dem Polynom
p(x)
das Polynomq(x)
,welhes auh an allen Stützstellen
x i durh die zugehörigen Funktionswerte y i
läuft.
q(x)
istwiep(x)
einPolynom(n − 1)
-ten Grades.Wären
p(x)
undq(x)
untershiedlih, dann lieÿe sih die Dierenzr
durhr = p − q
beshreiben. Da dies anallen Stellen vonp
undq
gilt,folgt darausauhr(x i ) = p(x i ) − q(x i ).
(17)r(x)
isteinPolynom(n − 1)
-ten Grades,daesdieDierenzvonzweiPolynomen(n − 1)
-ten Grades ist. Aus (17) geht hervor, dassr(x i )
immer gleih Null ist,da
p
undq
anden Stellenx i gleih y i sein müssen. x i steht für die Stützstellen,
deren Anzahl n
ist (siehe oben). Damit hat r n
Nullstellen. Es gibt nur ein
Polynom, dessen Grad kleiner ist als die Anzahl seiner Nullstellen und das ist
x i steht für die Stützstellen,
deren Anzahl n
ist (siehe oben). Damit hat r n
Nullstellen. Es gibt nur ein
Polynom, dessen Grad kleiner ist als die Anzahl seiner Nullstellen und das ist
die Nullfunktion. Deshalb gilt
r(x) = 0
woraus folgtp(x) = q(x)
und bewiesenwäre, dass nur ein Polynom
p(x)
vomGrad(n − 1)
existiert, welhes durh alleStützstellenverläuft.
DurhInterpolationmitdemPolynomlassensihdieWertezwishendentabella-
risiertenStützstellenapproximieren.Umeinesehr hoheGenauigkeitzu erhalten,
müsste nun eigentlihnur dieAnzahlan Stützstellenentsprehend hohgewählt
werden.Wenn alleStützpunktegleihverteiltwerden ergibtsihjedoheinesehr
groÿeAbweihung an den Ränderndes inder Tabelleangegebenen Intervalls.
DiesesBildverdeutliht dieAbweihung beieinerAnnäherung andieSinuskurve
(gestrihelt) miteinem Polynom bei 20gleihverteiltenStützstellen:
Um diese Abweihung zu beheben ist es sinnvoll die Verteilung der Stützstellen
zu verändern, indem man mehr Stützstellen an den Rändern wählt. Um diese
Verteilung zu optimieren wurde das sogenannte Tshebyshev-Verfahren entwi-
kelt.
BeidiesemVerfahrenwirdnaheinemPolynom
n
-tenGradesgesuht,dasindemIntervall
[ − 1; 1]
denmaximalenBetrag1
hat sowie alleMaximaund Minimabei± 1
.Dabeistehtn
fürdieAnzahlderspäterenStützstellen.DasPolynom,welhes diese Bedingungen erfülltheiÿt Tshebyshev-PolynomT n:
n = 0 : T 0 = 1 n = 1 : T 1 = x n = 2 : T 2 = 2x 2 − 1
.
.
.
n = k : T k = cos(k · arccos(x))
Um die Nullstellen zu bestimmen wird
T n gleih Null gesetzt, da der Cosinus
seine Nullstellenbei
π
2 + (π)i für allei ∈ N
hat, ergibtsih:
k(arccos(x)) = π
2 + (π)i arccos(x) = π
k ( 1 2 + i) x = cos( π
k ( 1 2 + i))
DerCosinusnimmtaufdemIntervall
[0; π]
dieWerteausdemIntervall[ − 1; 1]
an.DarausergibtsihdieUngleihung
0 ≤ π k ( 1 2 +i) ≤ π
,dasheiÿti
nimmtalleWertezwishen
i = 0
undi = k − 1
an. Diesbedeutet auh,dass esingesamtk
Nullstel-lengibtwelhealsStützstellendienen.DiePolynominterpolationeinerbeliebigen
Funktionandiesen Stützstellenweist eine bedeutendhöhere Genauigkeitauf als
mitgleihverteiltenStützstellen.Eine Vergleihsrehnung zu den gleihverteilten
Stützstellen zeigte nur noh Abweihungen in der Gröÿenordnung der Mashi-
nengenauigkeit und die Graphen der Funktion und der Interpolierenden waren
dekungsgleih.
Wiebereits gesehen, basieren viele Näherungsverfahren auf Polynomauswertun-
gen (Taylorpolynome, Interpolationspolynome). Dabei kommt der Ezienz und
Rehengeshwindigkeit eine immer gröÿere Bedeutung zu. Dies hat zur Folge,
dass versuht wird, dieAlgorithmen zu optimieren.
Das Horner-Shema ist eine spezielle Anordnung der Faktoren eines Polynoms
p(x) = a 0 + xa 1 + x 2 a 2 + x 3 a 3 ... + x n a n
BeiBetrahtungergibtsih,dass hier
n
Additionenbenötigtwerden.Hinzukom-mennohzurAuswertungder
x k-Potenzenjeweils(k − 1)
Multiplikationen.Durh
densteigendenExponenten addiertmitdenMultiplikationenderx
-Potenzenund
der dazugehörigen Koezienten
a k ergeben sih insgesamt n(n+1)
2
Multiplikatio- nen.Wirddas
x
ausgeklammert ergibtsih folgedes Polynom:p(x) = a 0 + x(a 1 + xa 2 + x 2 a 3 ... + x n − 1 a n )
Nunwird
x
imentstandenenFaktor wiederausgeklammertsodass sihfolgendes Polynom ergibt:p(x) = a 0 + x(a 1 + x(a 2 + xa 3 ... + x n − 2 a n ))
DiesesPrinziplässtsih
n
-malwiederholen,sodasssihfolgendesPolynomergibt:q(x) = a 0 + x(a 1 + x(a 2 + x(a 3 ... + xa n ))...))
DiesesPolynom
q(x)
,das durh äquivalenteUmformungaus dem ursprünglihen Polynomp(x)
hervorgegangen ist wird jetzt noh auf Ezienz untersuht. Ge- naues Zählen liefert, dassn
Additionen und nur nohn
Multiplikationen nötig sind.6 Fazit
Wozu nun selber rehnen? Mit unserem Projekt sollte verdeutliht werden, wie
ein Computer rehnet und vor allem sollte gezeigt werden, wo die Grenzen un-
serer Rehner liegen. Wenn man diese Grenzen kennt, weiÿ man auh, ab wann
manselbst rehnen muss. Auhwenn dieMashinengenauigkeit beieinem64bit-
Zahlensystem sehr klein ersheint, kann in längeren Rehnungen mitvielen Ite-
rationenso oft aufsummiert werden, dass das Ergebnis entweder verfälsht oder
gänzlihungenauwird.Wenn manjedohweiÿ, dassdasErgebniseinesRehners
einfahwie möglih zu halten, damit dievermutete Ungenauigkeitso gering wie
möglihwird und besser berüksihtigt werden kann.