Problematische Auswertung < Numerik < Hochschule < Mathe < Vorhilfe
|
Aufgabe | Diskutieren Sie die Problematik einer numerischen Auswertung von [mm] $\frac{\sqrt{1-\cos(x)}}{\sin(x)}$ [/mm] für $x << 1, [mm] x\not= [/mm] 0$. Finden Sie einen möglichst günstigen Algorithmus. |
Hallo!
Ich wollte erstmal fragen, was hier genau die "Problematik" sein soll. Wir haben gelernt, dass Division und Wurzelziehen immer gut konditioniert ist, also dürfte selbst für x nahe bei 0 der Nenner und die Wurzel oben keine Probleme machen.
Was ich als Problem sehe, ist einzig das Minus in der Wurzel, wo eine "Auslöschung" stattfinden könnte. Man müsste also irgendwie das Minus vermeiden, ist das richtig?
Wie genau könnte ich das machen? Darf ich den Ausdruck manipulieren, also zum Beispiel mit [mm] \sqrt{1+\cos(x)} [/mm] erweitern für [mm] $x\not=2k*\pi, k\in\IZ$ [/mm] und dann schreiben:
[mm] $\frac{1-\cos^{2}(x)}{\sin(x)*\sqrt{1+\cos(x)}} [/mm] = [mm] \frac{|\sin(x)|}{\sin(x)*\sqrt{1+\cos(x)}}$,
[/mm]
oder ist das ein völlig falscher Ansatz?
Danke für Eure Hilfe,
Stefan
|
|
|
|
Hallo Stefan,
> Diskutieren Sie die Problematik einer numerischen
> Auswertung von [mm]\frac{\sqrt{1-\cos(x)}}{\sin(x)}[/mm] für [mm]x << 1, x\not= 0[/mm].
> Finden Sie einen möglichst günstigen Algorithmus.
> Ich wollte erstmal fragen, was hier genau die "Problematik"
> sein soll. Wir haben gelernt, dass Division und
> Wurzelziehen immer gut konditioniert ist, also dürfte
> selbst für x nahe bei 0 der Nenner und die Wurzel oben
> keine Probleme machen.
Division durch Null ist nicht möglich; Division durch
Zahlen sehr kleinen Betrags wenigstens problematisch
(allerdings abhängig von der Darstellungsweise der
Zahlen im Rechner. Rechner mit Fixpunkt-Arithmetik
runden sehr kleine Werte auf Null ab).
Für kleine |x| wird im gegebenen Bruchterm auch der
Zähler sehr klein, denn [mm] \limes_{x\to0}(1-cos(x))=0 [/mm] . Es empfiehlt
sich also jedenfalls, den Term umzuformen.
> Was ich als Problem sehe, ist einzig das Minus in der
> Wurzel,
Es gibt hier weder negative Radikanden (unter der Wurzel)
und schon gar keine "negativen Wurzeln" !
> wo eine "Auslöschung" stattfinden könnte. Man
> müsste also irgendwie das Minus vermeiden, ist das
> richtig?
Es gibt kein Minus zu vermeiden, weil es gar keins gibt.
> Wie genau könnte ich das machen? Darf ich den Ausdruck
> manipulieren, also zum Beispiel mit [mm]\sqrt{1+\cos(x)}[/mm]
> erweitern für [mm]x\not=2k*\pi, k\in\IZ[/mm] und dann schreiben:
>
> [mm]\frac{\red{\sqrt{1-\cos^{2}(x)}}}{\sin(x)*\sqrt{1+\cos(x)}} = \frac{|\sin(x)|}{\sin(x)*\sqrt{1+\cos(x)}}[/mm],
>
> oder ist das ein völlig falscher Ansatz?
Das ist genau der richtige Ansatz, nur hast du jetzt
zunächst im linken Zähler das Wurzelsymbol ver-
gessen (ich habe es nun gesetzt).
Für kleine |x|, sogar für alle x mit [mm] 0<|x|<\pi [/mm] ,
gilt natürlich
[mm] $\frac{|\sin(x)|}{\sin(x)}=sgn(x)$
[/mm]
Damit kann man die Funktion dann so schreiben:
$\ f(x)\ =\ [mm] \frac{sgn(x)}{\sqrt{1+cos(x)}}$
[/mm]
So ist der Term für kleine |x| mit [mm] x\not=0 [/mm] numerisch
unproblematisch. Allerdings ist die (ursprüngliche)
Funktion f an der Stelle x=0 nicht definiert und macht
beim Durchgang von negativen zu positiven x einen
Sprung.
LG Al-Chw.
|
|
|
|
|
Okay,
danke für deine Antwort, Al-Chwarizmi!
Grüße,
Stefan
|
|
|
|
|
> Diskutieren Sie die Problematik einer numerischen
> Auswertung von [mm]\frac{\sqrt{1-\cos(x)}}{\sin(x)}[/mm] für [mm]x << 1, x\not= 0[/mm].
> Finden Sie einen möglichst günstigen Algorithmus.
> Hallo!
>
Guten Abend Stefan,
es war ja noch die Frage nach einem "möglichst günstigen"
Algorithmus für 0<x<<1.
Vom numerischen (und z.B. auch auf Rechengeschwindigkeit
ausgerichteten) Standpunkt müsste man dann noch sagen
(abgesehen etwa von Auslöschungsproblemen), dass es für
kleine |x| eigentlich ein unerhörter Luxus ist, den vollen
Apparat für die Cosinus- und für die Wurzelfunktion aufzu-
bieten, wo es doch eigentlich auch ganz gut mit einfachen
Polynomen ginge. Stichwort: Reihenentwicklung. Wir haben
inzwischen die Funktionsdarstellung
$\ f(x)\ =\ [mm] \frac{1}{\sqrt{1+cos(x)}}$ [/mm] (für kleine positive x)
erarbeitet. Sollten nun sehr viele Funktionswerte sehr schnell
berechnet werden, lohnt es sich, diese Funktionsgleichung
durch eine geeignete polynomiale Approximation zu ersetzen
(Taylorpolynom).
LG Al-Chw.
|
|
|
|
|
Hallo Al-Chwarizmi,
in diesem Fall zum Beispiel einfach:
$f(x) = [mm] \frac{1}{\sqrt{1+\cos(x)}} \approx \frac{1}{\sqrt{2}}+\frac{1}{8*\sqrt{2}}*x^{2}$
[/mm]
?
Aber die Wurzeln müsste man dann ja noch geeignet approximieren.
Grüße,
Stefan
|
|
|
|
|
> Hallo Al-Chwarizmi,
>
> in diesem Fall zum Beispiel einfach:
>
> [mm]f(x) = \frac{1}{\sqrt{1+\cos(x)}} \approx \frac{1}{\sqrt{2}}+\frac{1}{8*\sqrt{2}}*x^{2}[/mm]
>
> ?
> Aber die Wurzeln müsste man dann ja noch geeignet
> approximieren.
>
> Grüße,
> Stefan
Es ist ja nur eine Wurzel ...
Die kann man auch einmal berechnen und
dann als Konstante speichern (und dann bestimmt
nicht zweimal durch sie dividieren, sondern
nur einmal mit ihr multiplizieren).
In der Reihe unter Umständen (falls nötig) noch
ein weiteres Glied dazu nehmen.
Bemerkung: ich spreche hier natürlich aus
Erfahrungen, die noch aus der Zeit der HP-
Tischrechner, der ersten Commodores und
Apples stammen, als sowohl Speicherplatz
und Rechenzeit noch als sehr kostbar galten.
Zum Zeichnen eines "Apfelmännchens" in einer
knapp brauchbaren Schwarzweiss-Darstellung
(z.B. 200x200 Pixels) brauchte ein solcher
Rechner noch mindestens eine Stunde. Heutige
PC's bringen das in einer Sekunde mit vielen
Farben und hoher Auflösung.
LG Al
|
|
|
|
|
Hallo Al-Chwarizmi,
danke für deine Antwort.
Ich habe bei der Reihenentwicklung das erstmal so gelassen, weil bei [mm] x^{4} [/mm] schon ein relativ unschöner Vorfaktor entstanden ist und es meiner Meinung nach ausgereicht hat
Danke nochmal und Grüße,
Stefan
|
|
|
|