Springen naar inhoud

Grote getallen in rekenmachine ?


  • Log in om te kunnen reageren

#1

rheffels

    rheffels


  • 0 - 25 berichten
  • 13 berichten
  • Gebruiker

Geplaatst op 27 november 2004 - 19:24

Als ik de volgende berekening maak met mijn rekenmachine (op dit moment met Windows Calculator)...
231710 = 1,4605139969427623512132934337402e+1678
Is het volledige getal dan daadwerkelijk aanwezig is in mijn rekenmachine?
Of is het slechts een benadering ?

Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2


  • Gast

Geplaatst op 27 november 2004 - 21:30

Het is m.i. slechts een benadering.

De preciese uitkomst kan je berekenen op :

http://world.std.com...BigNumCalc.html

Je computer heeft zijn beperkingen. Ik kan wel niet zeggen tot hoeveel cijfers hij het getal kent. Je kan van die uitkomst eens de cijfers die hij toont opnieuw aftrekken. Als in het geheugen nog meer beduidende cijfers zitten, dan zal er op de display niet nul staan, maar de (eersten van de) overige beduidende cijfers, nu met een andere exponent voor erachter.

#3

rheffels

    rheffels


  • 0 - 25 berichten
  • 13 berichten
  • Gebruiker

Geplaatst op 28 november 2004 - 10:31

aah zo. hmm, handig dat te weten :wink:
ben ik weer een stapje verder

#4

Syd

    Syd


  • >1k berichten
  • 1107 berichten
  • VIP

Geplaatst op 28 november 2004 - 10:50

Of is het slechts een benadering ?


Een rekenmachine kan niets anders dan benaderen. Exact berekenen is per definitie onmogelijk. Zelfs als je intypt: 5+3 en er komt 8 uit, is dat nog een benadering.

Is mij verteld

#5

rheffels

    rheffels


  • 0 - 25 berichten
  • 13 berichten
  • Gebruiker

Geplaatst op 28 november 2004 - 11:19

he ?

als ik 3 appels heb en krijg er 5 bij dan heb ik toch gewoon 8 appels ?

verklaar je nader..

#6

Bart

    Bart


  • >5k berichten
  • 7224 berichten
  • VIP

Geplaatst op 28 november 2004 - 11:24

he ?

als ik 3 appels heb en krijg er 5 bij dan heb ik toch gewoon 8 appels ?

verklaar je nader..


Zo kan jij denken, maar een rekenmachine niet. Ik weet niet hoe oude rekenmachines werken, maar wel hoe de nieuwe (in feite computers) werken. Dit gebeurt namelijk allemaal binair. Met kleine getallen (zoals 3 en 8) kan de computer het exact uitrekenen. Echter met grotere getallen (vanaf 211, ongeacht waar de komma staat) kan een normale computer niet meer exact rekenen omdat deze niet genoeg bits hiervoor heeft.
If I have seen further it is by standing on the shoulders of giants.-- Isaac Newton

#7

Rogier

    Rogier


  • >5k berichten
  • 5679 berichten
  • VIP

Geplaatst op 28 november 2004 - 12:00

Computers werken met twee soorten getallen: "integer" en "floating point", en het hangt van de software af hoeveel ruimte (bits) zo'n getal maximaal kan innemen. Integers zijn het makkelijkste, dat zijn gewoon gehele getallen. Dus 0, 1, 2, etc. (maximum hangt af van aantal bits)

Rekenmachines, zowel calc.exe in windows als je casio zakrekenmachine, werken met floating point getallen. Zo'n getal bestaat eigenlijk uit twee integers, een lang getal M (d.w.z. een getal dat veel bits in kan nemen) en een wat korter (minder bits) getal E, en het getal waar dit voor staat is dan: M·10E

(of eigenlijk grondtal 2 in plaats van 10, en de mantissa zijn eigenlijk binaire decimalen achter de komma, maar laten we het even makkelijk houden)

M heet de mantissa, en E heet de exponent. 3+5=8 kun je dus exact weergeven in een rekenprogramma of rekenmachine, dat is gewoon M=8 en E=0 (dus 8·100=8 ). Of je moet een programma hebben dat z weinig bits voor M gebruikt dat zelfs 8 er niet in past, maar dat is ondenkbaar.

Dat grote getal 231710 is een getal van 1679 cijfers, de meeste software (of rekenmachines) zullen dat niet exact kunnen weergeven. Het wordt dan opgeslagen als M=1460513997 en E=1669, een benadering dus.

Soms kun je hele grote getallen toch exact weergeven, 1000710 past bijvoorbeeld wel: M=1 en E=2130, dat is geen benadering maar het exacte getal. Als er veel cijfers er op het eind nul zijn van het oorspronkelijke getal, kun je die bij M weglaten (die daardoor korter wordt) en bij E optellen. 568000 sla je bijvoorbeeld niet op als M=568000 en E=0, maar als M=568 en E=3.

Hoe nauwkeurig de getallen precies worden opgeslagen hangt af van de grootte van de mantissa en de exponent - van je software dus.
In theory, there's no difference between theory and practice. In practice, there is.

#8

wasbeer

    wasbeer


  • >100 berichten
  • 226 berichten
  • Ervaren gebruiker

Geplaatst op 28 november 2004 - 12:07

Een rekenmachine kan niets anders dan benaderen. Exact berekenen is per definitie onmogelijk. Zelfs als je intypt: 5+3 en er komt 8 uit, is dat nog een benadering.

Is niet waar.

Zelfs een simpele computer kan 231710 exact uitrekenen als het moet. Niets makkelijker dan dat, want het spaart een afronding uit!
De berekeningen gaan recursief, dus bewerkingen met grote getallen zijn niet "moeilijker". Het kost hoogstens veel tijd om alles tot de laatste cijfer uit te rekenen.

In de praktijk zijn berekeningen tot op de laatste decimaal doorgaans niet interessant. Berekeningen worden omwille van tijdbesparing met een beperkte resolutie uitgevoerd.
Om maar te zwijgen van de praktische moeilijkheid om een getal van honderden cijfers op een display weer te geven.

edit: Zie verder commentaar Rogier

#9

rheffels

    rheffels


  • 0 - 25 berichten
  • 13 berichten
  • Gebruiker

Geplaatst op 28 november 2004 - 12:59

oooh. da's niet zo mooi :shock:
Nu valt mijn berekening in het water ;)

dus met een getal als (261715)550 is het al helemaal niet mogelijk om exact te rekenen ?
Ik bedoel hier dus (261-tot-de-macht-715)tot-de-macht-550...

#10

Bart

    Bart


  • >5k berichten
  • 7224 berichten
  • VIP

Geplaatst op 28 november 2004 - 13:29

dus met een getal als (261715)550 is het al helemaal niet mogelijk om exact te rekenen ?
Ik bedoel hier dus (261-tot-de-macht-715)tot-de-macht-550...


Zoals roger al heeft gezegd, er zijn speciale getallen waarmee dat wel kan, maar in het algemeen kan een computer niet exact rekenen met grote getallen.

Ik heb even Mathematica gechecked, en deze rekent wel het volledige getal uit (recursief berekend):

261^715 = 790610807682126175102409805341027806143321835057445233752639259067844956412532
726785553310964359725733570743041061384659114438879819517695233147617696986007
092611881600540298299217596515541530995859627817232807677493190687957011682504
762554217214155779337986134068027655839142477804467676139278757279221065372682
686824169694140494024531901866792346545899296880220848210727911331558584437854
750354300369943015084924177497869545909650747262091165093563479618651092159644
327116151563941631778051691208446555520352702985783962696961003866818147607628
079138937050413254360404139923726349142664689673344271335234659840959559368237
826180186033419624220238399616365374337463210015356311944503298625653689667318
308462012443811204969015640421467695461340751553981127990715903950416855668764
627231349135906774231855892387307117322443221084720405058974346703392365198628
916518623166908812047675711334140357557914340174630734415886882464321661397253
677013364810552140681443060661559480630928575308488420025737201421673142721616
556655550614873450718362272505094960132672549795991554292646052014052195285896
580980526937908460313156586000760311019356931523143203401259300543810311715150
207744356505573761788750504045271153968917479211798953782747417797906325706131
965479233427532961460196155434265630488678314730076014533409848097532937684825
653309369282366804118502248607378251441606893253672674959549153336877864503924
707581242729002343725998721654945697743457400634775914269634942802833068880184
038748618578100078047699064006907673995031613410307171937560660851219858451296
972713521373114805768590550633135504518931637307359964934990357948048733307399
432659668595577736494701896118191322198931917964865862939616098280443890267827
259540103901

:wink:
If I have seen further it is by standing on the shoulders of giants.-- Isaac Newton

#11


  • Gast

Geplaatst op 28 november 2004 - 20:15

Dan heb jij wel een speciale computer want 261^715 kan jouw computer wel berekenen.

Het ligt allemaal aan de manier waarop floating point getallen worden voorgesteld. De Intel processor gebruikt bv de IEEE standaard om floating point getallen voor te stellen. Een floating point getal bestaat steeds uit de exponent (mantissa) en het getal (number). De IEEE heeft drie standaarden:
- single precision (M=8, N=24)
- double precision(M=11, N=53)
- double extended precision (M=15, N=64)
De getallen duiden het aantal bits aan.
Wil je grotere getallen dan zal je dus zelf de software moeten schrijven om grote getallen op te tellen. Gelukkig bestaan hiervoor de nodige algoritmes. Zo heb ik onlangs nog een stukje software moeten schrijven dat integer getallen van 200 cijfers lang moest kunnen vermenigvuldigen. Het nadeel hiervan is dat je de floating point gedeelte van de processor niet (of nauwelijks) kunt gebruiken, maar het kan wel degelijk hoor.

#12

Bart

    Bart


  • >5k berichten
  • 7224 berichten
  • VIP

Geplaatst op 28 november 2004 - 20:51

Wil je grotere getallen dan zal je dus zelf de software moeten schrijven om grote getallen op te tellen. Gelukkig bestaan hiervoor de nodige algoritmes. Zo heb ik onlangs nog een stukje software moeten schrijven dat integer getallen van 200 cijfers lang moest kunnen vermenigvuldigen.  Het nadeel hiervan is dat je de floating point gedeelte van de processor niet (of nauwelijks) kunt gebruiken, maar het kan wel degelijk hoor.


En dat stukje software heb ik toevallig op mijn computer staan. Mathematica is op dit moment een van de (zoniet d) krachtigste wiskunde software.
If I have seen further it is by standing on the shoulders of giants.-- Isaac Newton

#13

TD

    TD


  • >5k berichten
  • 24049 berichten
  • VIP

Geplaatst op 28 november 2004 - 22:38

Puur numeriek is MatLab sneller, maar Mathematica is dan weer veel beter op vlak van symbolische wiskunde.

Het geldt inderdaad als een van de beste wiskundige software op dit moment, verder is ook Maple redelijk populair.

#14

rheffels

    rheffels


  • 0 - 25 berichten
  • 13 berichten
  • Gebruiker

Geplaatst op 28 november 2004 - 23:26

En bestaan daar ook demo of freeware versies van ? :shock:

#15

Rogier

    Rogier


  • >5k berichten
  • 5679 berichten
  • VIP

Geplaatst op 29 november 2004 - 00:22

oooh.  da's niet zo mooi  ;)
Nu valt mijn berekening in het water  :shock:

dus met een getal als (261715)550 is het al helemaal niet mogelijk om exact te rekenen ?
Ik bedoel hier dus (261-tot-de-macht-715)tot-de-macht-550...

Theoretisch wel, het is een getal dat met een eindig aantal decimalen (en dus exact) kan worden weergegeven, in tegenstelling tot bijvoorbeeld 1/3.
Het getal is daarentegen wel 450982 cijfers lang (decimaal, binair 31569740 bits, een getal van ruim 30MB dus) en dat is groter dan wat zelfs gangbare mathematische software nog aankan.

Maar weet je zeker dat je met dat enorme getal moet rekenen? Misschien kun je het als macht in je berekening laten staan die dan later weer wegvalt.
Stel dat je verderop van dat hele grote getal de 143ste-machtswortel moet hebben. Die uitkomst past dan bijvoorbeeld weer wl in een rekenprogramma.

Dan heb jij wel een speciale computer want 261^715 kan jouw computer wel berekenen.

Ligt aan de software natuurlijk, in theorie kan een computer met 512 MB geheugen getallen tot 512220 bits aan, oftewel getallen van meer dan 160 miljoen decimalen.

Het ligt allemaal aan de manier waarop floating point getallen worden voorgesteld. De Intel processor gebruikt bv de IEEE standaard om floating point getallen voor te stellen. Een floating point getal bestaat steeds uit de exponent (mantissa) en het getal (number). De IEEE heeft drie standaarden:
- single precision (M=8, N=24)
- double precision(M=11, N=53)
- double extended precision (M=15, N=64)
De getallen duiden het aantal bits aan.
Wil je grotere getallen dan zal je dus zelf de software moeten schrijven om grote getallen op te tellen. Gelukkig bestaan hiervoor de nodige algoritmes.


Precies, een computer rekent het snelste met die IEEE standaard getallen, daarbuiten heb je speciale software nodig. Het ene programma doet dat beter dan het andere, maar er hoeft in principe geen beperking aan te zitten.
(overigens is de "mantissa" het getal zelf en de "exponent" het getal in de exponent, en 32 en 64 bit floats hebben een mantissa van 23 en 52 bits - er gaat ook nog 1 bit naar het +/- teken!)

En bestaan daar ook demo of freeware versies van ?  ;)

Ik gebruik zelf wel eens Maple, en daar kun je een demo / trial versie van aanvragen ja, die kun je volgens mij zelfs gratis op CD toegestuurd krijgen.
Dat soort software is trouwens wel een stuk ingewikkelder dan calc.exe ;)
In theory, there's no difference between theory and practice. In practice, there is.





0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures