großes problem!!!!

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
ye73siq
User
Beiträge: 1
Registriert: Mittwoch 10. Juni 2009, 23:05

hey ich hoffe mir kann jemand helfen..... ich versuche seit 2 tagen verzweifelt einen algorithmus zu finden um die zahl e auf 1000 stelle nanch dem komma zu berechnen.hab zwar einen in basic gefunden aber da steig ich absolut nicht durch.vielleicht hat ja auch schon wer nen fertigen.......
würde mich echt retten!!!!!!!!!!!!
vielen dank schon mal im vorraus
Benutzeravatar
Craven
User
Beiträge: 223
Registriert: Dienstag 24. Januar 2006, 13:37

Hier: http://de.wikipedia.org/wiki/Eulersche_Zahl
Mehr brauchst du eigentlich nicht.

Das hört sich nach Hausaufgaben an ...
[code]q = 'q = %s; print q %% repr(q)'; print q % repr(q) [/code]
BlackJack

@ye73siq: Das hört sich extrem nach Hausaufgaben an. Lies mal den Text für Schüler und Studenten.

Ausserdem hast Du doch schon einen Algorithmus in Basic. Studenten sollten auch selbstständig vorhandene Algorithmen analysieren können. Versuch's doch einfach mal.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

ye73siq hat geschrieben:hey ich hoffe mir kann jemand helfen..... ich versuche seit 2 tagen verzweifelt einen algorithmus zu finden um die zahl e auf 1000 stelle nanch dem komma zu berechnen.hab zwar einen in basic gefunden aber da steig ich absolut nicht durch.vielleicht hat ja auch schon wer nen fertigen.......
würde mich echt retten!!!!!!!!!!!!
vielen dank schon mal im vorraus
1. Gib einem Thread einen vernünftigen Titel.
2. Viele Ausrufezeichen helfen nicht.
3. Kein Problem: :D

Code: Alles auswählen

>>> from decimal import Decimal, getcontext
>>> getcontext().prec = 1000
>>> print Decimal(1).exp()
2.718281828459045235360287471352662497 ...
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

bei der reihenentwicklung werden die zahlen zu groß bevor man auf der 1000. stelle genau ist. mit der kettenbruchentwicklung sollte es gehen.
http://www.kinderpornos.info
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Dill hat geschrieben:bei der reihenentwicklung werden die zahlen zu groß bevor man auf der 1000.
Nein.

Kettenbruchentwicklung funktioniert, Entwicklung über Grenzwert oder Reihenentwicklung auch. Wenn es auf Geschwindigkeit ankommt, ist die Reihenentwicklung am günstigsten.
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

ok... bei welchem k ist man denn auf 1000 stellen genau?
http://www.kinderpornos.info
BlackJack

@Dill: Bei k=451 hab ich's getroffen. In 0.18 Sekunden. Ist also auf jeden Fall machbar.
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

:) ok, für mich sind alle zahlen > 4 byte groß. das sieht python anders.
Long integers have unlimited precision.
bo ey.
http://www.kinderpornos.info
BlackJack

Ja, bei k=451 steht über'm Bruchstrich:

3039208971520101255478330749410547474272262783495744786888121473348845
6121238913114200288532389385117411742876866269117835588859525409076738
2477466737085042031830969779327555030400122968201372875409334417293923
7027915931258248051918729813490084339248144917797769747312188370399172
4590963491540955956467971874457391849321862404536927772272672696894602
3119086129896025380197436330312372786774215744266355761319357221186519
0299554665442636033388676387837049193706531482822959199890382518432035
4784851600308705501745032922831628243804375902045544817409119815802862
0350849904130626063290120611370886244976306878443390549445771234297747
8385541450533965924401096709344045431007345589999872031118759734139713
1803333741686524085638334827048294574658350320991095015832112822769468
3018695090011553108121416914387785367874559890201122982067287608026809
0471001899708837825470641672625868447274660594767885558950226321830769
8113059477111975752079439627509360244158870656359391015329498055370143
57238017025605291881

und darunter:

1118062498046048812020116746128668920558771282335929645339977955963179
6106396309704272146235969505985228490974424784422388782867987188278380
9562794304771196712636374912620834009854258810487001800645968290597447
7407737630314041831527094283737029790367304632228321753806508477997656
9603977419146294537437408061938068419243927984414303468381932860879850
9322182798679196503883192574701491630367295554199361898816554588016914
0604744057085074356893948127501666866737841866534536361262163158152240
5705741377397664265694840304928609786902875336663630736077468332400079
8498471182772208191335714890356176433173113602792041569938770433385015
8030247958099060083191464540111311705445485692198818570360030472287297
2292609437196268913134846442106689561582529188357122757941972994215348
4840015880125096313339141305723747521568136927316369234957839313141315
0677955597828831002150210937477022814714896318464000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000

Das passt in der Tat beides nicht mehr so ganz in vier Bytes. :-)
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Dill hat geschrieben:ok... bei welchem k ist man denn auf 1000 stellen genau?
Das Problem ist nicht die Genauigkeit (wie BlackJack schon eindrücklich durch seine Ziffernkolonnen gezeigt hat), sondern nur die verfügbare Rechenzeit (und irgendwann dann auch der verfügbare Speicher - aber das dauert lange).

Wer Spaß dran hat, kann sein Glück ja mal bei SPOJ versuchen (https://www.spoj.pl/problems/EVAL/): Möglichst viele Stellen von e in 25 Sekunden (SPOJ-Time) berechnen.
Antworten