Anzahl ausgelöschter Stellen < Numerik < Hochschule < Mathe < Vorhilfe
|
Aufgabe | Berechnen Sie mit Matlab oder einem Taschenrechner für x = 123456789 den Wert
y = [mm] \bruch{1}{ \wurzel{x^2 + 1} -x}
[/mm]
Ermitteln Sie die Anzahl ausgelöschter Stellen im Nenner. Ändern Sie anschließend die Formel
dahingehend, dass Sie eine gute Näherung für y erhalten. |
Hallo! also das Umstellen hab ich mittlerweile hinbekommen. das ja relativ einfach wenn man die 3te binomische Formel anwendet
--> y = [mm] \wurzel{x^2 +1} [/mm] + x
damit bekommt man ja eine gute Näherung für y oder?
aber meine Hauptfrage ist, wie kann ich denn Stellen die ausgelöscht werden (bei der ersten Formulierung) ermitteln?
Danke Schonmal
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 22:52 So 18.10.2009 | Autor: | Teufel |
Hi!
Mit "ausgelöschten Stellen" sind sicher Nullstellen gemeint. Habe das auch noch nie gehört, aber na ja. Manchmal sagt man ja auch, dass bei Nullstellen "der Funktionswert verschwindet" (ausgelöscht ist?).
Kannst den Nenner ja einfach mal 0 setzen oder sonst irgendwie schauen,m wie du auf die Anzahl der Nullstellen kommst,.
Zur guten Näherung:
Du hast die Formel ja jetzt gut vereinfacht, aber noch ist es ja der genaue Wert.
Wenn ich es durch eine einfachere Gleichung annähern sollte, würde ich y=2x wählen, zumindest für x>0. (y=0 für [mm] x\le0).
[/mm]
Denn [mm] \wurzel{x^2 +1} [/mm] strebt ja für große Werte gegen |x|.
Teufel
|
|
|
|
|
ja gut dann ist das mit der Näherung schonmal geklärt aber das mit der stellenauslöschung versteh ich noch nicht so ganz!
also soweit ich das gelesen habe zählt man dabei die führenden Ziffern, die sich dann aufheben: 314-312 würden sich 2 stellen auslöschen
aber was wäre das denn in meinem beiispiel von x= 123456789
weil die wurzel im nenner gibt ja iwas wie 123456789.0000000001 - 123456789
also werden ja die ersten 9 stellen ausgelöscht oder wie ist das zu verstehen?
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 15:43 Mo 19.10.2009 | Autor: | Blech |
Hi,
> aber was wäre das denn in meinem beiispiel von x=
> 123456789
> weil die wurzel im nenner gibt ja iwas wie
> 123456789.0000000001 - 123456789
> also werden ja die ersten 9 stellen ausgelöscht oder wie
> ist das zu verstehen?
Mehr, die ganzen 0er sind ja auch Teil der ursprünglichen Zahl.
x=123456789.0000000000000000000...
[mm] $\sqrt{x^2+1}$=123456789,00000000405
[/mm]
Mein Taschenrechner sagt also Abweichung in der 18. Stelle, per Überschlag hätte ich auf die 17. getippt, auf jeden Fall viel zu viel.
Nicht vergessen, wenn Du eine Dezimalzahl abspeicherst, sind die 0er nach der Zahl nicht selbstverständlich. Du kannst einer Zahl nur so weit vertrauen, wie Du signifikante Stellen abgespeichert hast, und das sind halt oft nur 16. In dem Fall hast Du nach der Differenz alles vor der 19. Stelle verloren, egal wie exakt die eigentlichen Operationen ausgeführt wurden.
Retten können Dich nur jede Menge signifikante Stellen.
bei mir (ich verwende btw. speedcrunch für solche Sachen):
[mm] 1/(sqrt(123456789^2+1)-123456789)=2,4691357800000000405e8
[/mm]
[mm] sqrt(123456789^2+1)+123456789=2,4691357800000000405e8
[/mm]
Solange 123456789 wiederholt bis der Rechner mit division by zero aussteigt:
[mm] 1/(sqrt(1234567891234567891234567891234567891234^2+1)-1234567891234567891234567891234567891234)=
[/mm]
=2,43902439024390243902e39
[mm] (sqrt(1234567891234567891234567891234567891234^2+1)+1234567891234567891234567891234567891234)=
[/mm]
=2,46913578246913578247e39
2*1234567891234567891234567891234567891234=
=2,46913578246913578247e39
immerhin noch 2 signifikante Stellen übrig. Gibt definitiv schlechteres =)
EDIT: Mir wurde gerade bewußt, daß ich vielleicht das Problem als vernachlässigbar gering dargestellt habe. Das war nicht meine Absicht. Speedcrunch arbeitet mit ein paar Zählchen, da kann man schon mal 50 signifikante Stellen für eine verwenden. Wenn Du mit riesigen Matrizen und Zahlenbergen arbeitest, geht das nicht mehr.
Grundsätzlich: Wenn geschickte Programmierung wie im Beispiel heißt, daß ich mit einem Zehntel der signifikanten Stellen auf eine qualitativ gleich gutes Ergebnis komme, heißt das im Umkehrschluß, daß ich mit zehnmal größeren Datensätzen arbeiten kann. Der Aufwand, seine Algorithmen nochmal abzuklopfen, lohnt sich also.
ciao
Stefan
|
|
|
|
|
danke schonmal für die super ausführliche antwort! verstehe das gesamte problem jetzt schonmal viel besser.
also wenn ich das jetzt richtig verstanden habe, dann kommt das ja auch auf den taschenrechner an, den ich verwende.
was schreib ich denn jetzt am besten als abgabe der hausaufgaben?
also habe mir überlegt, dass ich dann als taschenrechner matlab verwende: hier die ausgaben:
>> [mm] sqrt(123456789^2+1)
[/mm]
ans =
123456789
also doch 9 stellen oder wie?
aufjedenfall macht er im nenner = 0 was zu keinem ergebnis führt.
danke schonmal!
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 00:36 Di 20.10.2009 | Autor: | Blech |
Hi,
> also doch 9 stellen oder wie?
*Hust* "Mehr, die ganzen 0er sind ja auch Teil der ursprünglichen Zahl." *Hust* =)
Matlab arbeitet normalerweise mit 64bit double, was Dir etwa 16 signifikante Stellen gibt (da 10(?) bit für exponent und Vorzeichen von Exponent und Zahl verwendet werden; [mm] $2^{54}\approx 2*10^{16}$), [/mm] und wie wir festgestellt haben, weichen die beiden Zahlen erst ab der 18. voneinander ab. Deswegen kommt da 0 raus.
Speedcrunch sagt was von bis zu 50 signifikanten Stellen. Wahrscheinlich einfach mit mehr bits.
ciao
Stefan
|
|
|
|