TGI Praktikum |
Aufgabenbereich Assembler - Projekt 1.24
Spezifikation |
Lösungsansätze
Die y-Werte der benachbarte Stützstellen sind bekannt. Um nun den y-Wert von 4,4 ausrechnen zu können, wird die Differenz
der bekannten y-Werte ausgerechnet. In unserem Beispiel sei diese Differenz log10(5)-log10(4), also 0,097.
Die bekannten x-Werte sind äquidistant verteilt und unterscheiden sich jeweils um den Wert 1.
Der Differenz 0.097 entsprechen jetzt 10 Einheiten auf der x-Achse. Um den y-Wert von 4,4 ausrechnen
zu können benötigt man jedoch nur 4 Einheiten, die zum kleineren y-Wert der Stützstellen hinzuaddiert werden müssen. Dafür teilt man
0,097 durch 10 und addiert das Ergebnis 4mal zum kleineren y-Wert und erhält dadurch den gewünschten angenäherten y-Wert zu 4,4.
Für den Tabellenlookup bieten sich zwei Implementierungen an:
/* Erste Lookup-Tabelle für (0.1 <= x < 1) in 0.01er Schritten */ float Tabelle1[91] = { -1, -0.95861, -0.92082, -0.88606, -0.85387, -0.82391, -0.79588, -0.76955, -0.74473, -0.72125, -0.69897, -0.67778, -0.65758, -0.63827, -0.61979, -0.60206, -0.79588, -0.56864, -0.55284, -0.53760, -0.52288, -0.50864, -0.49485, -0.48149, -0.46852, -0.45593, -0.44370, -0.43180, -0.42022, -0.40894, -0.39794, -0.38722, -0.37675, -0.36653, -0.35655, -0.34679, -0.33724, -0.32790, -0.31876, -0.30980, -0.30103, -0.29243, -0.37675, -0.27572, -0.26761, -0.25964, -0.25181, -0.24413, -0.23657, -0.22915, -0.22185, -0.21467, -0.20761, -0.20066, -0.19382, -0.18709, -0.18046, -0.17393, -0.16749, -0.16115, -0.15490, -0.14874, -0.14267, -0.13668, -0.13077, -0.12494, -0.11919, -0.11351, -0.10791, -0.10237, -0.09691, -0.09151, -0.08619, -0.08092, -0.07572, -0.07058, -0.06550, -0.06048, -0.55518, -0.05061, -0.04576, -0.04096, -0.03621, -0.02687, -0.02687, -0.02228, -0.01773, -0.01323, -0.00877, -0.00436, 0 }
/* Zweite Lookup-Tabelle für (1 <= x < 10) in 0.1er Schritten */ |
Diese Reihe ist jedoch nur definiert für x > 0.5 . Für x-Werte die sich weiter an 0 annähern, kann folgende Reihe verwendet werden:
Die mit diesen Formeln erhaltenen Werte müssen nun noch durch ln 10 dividiert werden um den entsprechenden y-Wert für den dekadischen Logarithmus zu erhalten.
Es sei
Um anschließend den entsprechenden Wert für den dekadischen Logarithmus zu erhalten, wird das mit dieser Reihenentwicklung erhaltene Ergebnis mit ln2/ln10 multipliziert.
Gegenüberstellung der verschiedenen Lösungsansätze
Wir haben uns für die Implementierung der 3. Möglichkeit entschieden, weil diese die höchste Genauigkeit und im Taschenrechner-Vergleichstest die niedrigste Fehlerrate vorweisen konnte.
zurück | 23.06.00 Katrin Stedele, Rainer Schmoll, Tanja Wojak |