Hallo
kennt jemand einen Weg wie man {1 - 10^(-60)}^[3 * 10^(19)] als Dezimalzahl in halblogarithmischer Schreibweise (x*10^n) darstellen lassen kann?
Gruß
Bernd
On Thu, May 07, 2009 at 06:17:59PM +0200, B. Philipp wrote:
Hallo
kennt jemand einen Weg wie man {1 - 10^(-60)}^[3 * 10^(19)] als Dezimalzahl in halblogarithmischer Schreibweise (x*10^n) darstellen lassen kann?
Vermutlich mit allen numerischen Hilfmitteln und der der Einschraenkung x = 1..10? Dann waere hier mein Ansatz: Deine ganz grosse Zahl
a^b
mit
a := 1 - 10^(-60)
und
b := 3 * 10^(19)
soll also
a^b = x*10^n
gelten (Forderung). Wenn man nun beide Seiten logarithmiert, folgt
b*log(a) = log(x*10^n) = log(x) + n*log(10)
= log(x) + n.
Auf Grund der Einschraenkung x = 1..10 folgt
log(x) = 0..1.
Also steht dann da
b*log(a) = n + 0..1
Dann koennte man doch b*log(a) numerisch ausrechnen und der Teil vorm Komma waere n und der Teil nach dem Komma waere log(x).
Oder habe ich hier was uebersehen (Numerik-Bibliotheken mit beliebiger Stellenanzahl sollten sich finden lassen, ich kenne mpmath in python).
Tschuess,
Friedrich
On Thu, May 07, 2009 at 06:17:59PM +0200, B. Philipp wrote:
Hallo
kennt jemand einen Weg wie man {1 - 10^(-60)}^[3 * 10^(19)] als Dezimalzahl in halblogarithmischer Schreibweise (x*10^n) darstellen lassen kann?
Hier noch zur Vervollständigung die numerische Lösung:
Man nehme:
* ipython und * mpmath von http://code.google.com/p/mpmath/ und installiert es:
% python setup.py install --prefix=/usr/local
und dann gehts los:
% ipython Python 2.5.2 (r252:60911, Jul 31 2008, 17:28:52) Type "copyright", "credits" or "license" for more information.
IPython 0.8.1 -- An enhanced Interactive Python. ? -> Introduction to IPython's features. %magic -> Information about IPython's 'magic' % functions. help -> Python's own help system. object? -> Details about 'object'. ?object also works, ?? prints more.
In [1]: from mpmath import *
In [2]: mp.dps = 100 # Rechnengenauigkeit
In [3]: P = (1 - mpf(10)**-60)**(3 * mpf(10)**19)
In [4]: print P 0.9999999999999999999999999999999999999999700000000000000000000000000000000000000004164770011064089061
In [5]: nprint(P, 50) # offensichtlich reichen hier 50 Dezimalstellen aus 0.99999999999999999999999999999999999999997
In [6]: nprint(1 - P, 50) 2.9999999999999999999999999999999999999999583522999e-41
Tschüs,
Friedrich
lug-dd@mailman.schlittermann.de