Hoe exact moet een log getal zijn?

Moderators: dirkwb, Xilvo

Forumregels
(Middelbare) school-achtige vragen naar het forum "Huiswerk en Practica" a.u.b.
Zie eerst de Huiswerkbijsluiter
Berichten: 37

Hoe exact moet een log getal zijn?

Ik vroeg me af of er een regel was hoe exact een log getal moet zijn om hetzelfde getal te krijgen.

voorbeeld:

log2(8) = 3;

log(6)= 2,5849625007211561814537389439478

2^3 = 8;

2^2,5849625007211561814537389439478 = 5,9999999999;

Ik hoop hier mijn vraag duidelijk mee hebben te verwoord.

Berichten: 771

Re: Hoe exact moet een log getal zijn?

oneindig veel decimalen in principe

Beetje zelfde kwestie als 0.999999999999999999 = 1

http://en.wikipedia.org/wiki/0.999...

Nu kan je ook discussieren hoeveel 9's er moeten staan om 1 te geven

Berichten: 79

Re: Hoe exact moet een log getal zijn?

Dat hangt er helemaal vanaf hoe nauwkeurig je het getal wilt weergeven. Het doorwerken van de 'fout' bij een logarime gaat als volgt:

Voor een functie f(x) = ln (x) ,geldt voor het doorwerken van de fout: (neem de afgeleide van de functie)

1/x * error_in_x

Voorbeeld:

Je wilt bijvoorbeeld het getal x = 6.0 :D 0.1 met een logaritme bepalen, dan gaat dat als volgt:

nieuwe_error = 1/6 * 0.1 = 0.0166666

en dus geldt voor de ln (x) = 1.79 :P 0.0167

Het gaat dus er helemaal om hoe nauwkeurig je het getal wilt weergeven, maar ik hoop dat het doorwerken van de fout bij een logaritme nu duidelijk is.

Berichten: 4.246

Re: Hoe exact moet een log getal zijn?

Dat hangt er helemaal vanaf hoe nauwkeurig je het getal wilt weergeven.
Inderdaad en 'exact' betekent met een fout van nul punt uit.
Quitters never win and winners never quit.

Gebruikersavatar
Berichten: 24.578

Re: Hoe exact moet een log getal zijn?

Dit heeft niet veel met logaritmen op zich te maken, in het algemeen vraag je je dus af hoeveel decimalen je moet geven om een getal exact weer te geven. Het antwoord is simpel: als je het exact wil, moet je alle decimalen geven. Voor getallen met een eindige of herhalende decimale ontwikkeling kan je dat nog opschrijven, maar voor irrationale getallen gaat dat niet. Waar je dan ook afbreekt, wat je overhoudt is een benadering.
"Malgré moi, l'infini me tourmente." (Alfred de Musset)

Gebruikersavatar
Berichten: 829

Re: Hoe exact moet een log getal zijn?

Ik vraag me af wat je er mee bedoelt, wiskundig gezien moet het getal echt exact zijn, dus op oneindig veel cijfers na de komma juist.

In computers en rekenmachines, wordt er gerekend tot op 8 à 14 decimalen na de komma, dus als jij een getal ingeeft met 18 cijfers na de komma maakt dat voor je toestel weinig uit. Ik geef toe dat er sommige variaties zijn, mijn TI-83 plus kan bijvoorbeeld tot 16 cijfers na de komma gaan, maar hoe dan ook, vroeg of laat stopt het. In feite begrijpt een computer de verzameling
\(\rr\)
niet, hij begrijpt maximum de verzameling
\(\qq\)
. Tenzij een symbolische, maar die werkt alleen met symboolen. In een computer dienen de types: float, double en decimal voor die getallen.
"Als je niet leeft zoals je denkt, zul je snel gaan denken zoals je leeft."

--Vladimir Lenin-- (Владимир Ильич Ульянов)

Berichten: 79

Re: Hoe exact moet een log getal zijn?

In een computer dienen de types: float, double en decimal voor die getallen.
Zelfs die hebben een beperkte machineprecisie die je in de praktijk overigens (bijna) nooit bereikt. Je kan zelf een script schrijven om dat op te zoeken, maar dat terzijde.

Gebruikersavatar
Berichten: 5.679

Re: Hoe exact moet een log getal zijn?

Zelfs die hebben een beperkte machineprecisie die je in de praktijk overigens (bijna) nooit bereikt.
Toch wel, 1/10 (dus 0.1) kan bijvoorbeeld al niet foutloos worden opgeslagen in een float of double.
In theory, there's no difference between theory and practice. In practice, there is.

Berichten: 79

Re: Hoe exact moet een log getal zijn?

Toch wel, 1/10 (dus 0.1) kan bijvoorbeeld al niet foutloos worden opgeslagen in een float of double.


Misschien kan je dat even toelichten, want met dergelijke getallen heb ik zelf nog nooit problemen gehad.

Gebruikersavatar
Berichten: 829

Re: Hoe exact moet een log getal zijn?

Toch wel, 1/10 (dus 0.1) kan bijvoorbeeld al niet foutloos worden opgeslagen in een float of double.
Dat komt omdat een rekenmachine/computer met machten van twee werkt. Al die bestandstypes hebben een soort van type als: GGGGGGGGGEEEEE. Hierbij staat G voor een deel van het getal, en E voor een deel van de exponent. Uiteraard veel langer. maar om het wat simpel voor te stellen komt het er op neer dat het getal dat opgeslagen dat is:
\(<GGGGGGGGG>2^{<EEEEE>}\)
. Afhankelijk van het type, worden de GGGG... en de EEEE.... rij langer of korter, uiteraard ook toegapast met de complement-regel.

De computer zoekt dan altijd hoe hij het getal het best kan weergeven in een dergelijke notatie. Stel dus dat je 0.1 met opslaan, en we nemen voor G 10 (000001010) dan nemen we voor E dus -6.64385619, we vereenvoudigen naar -6, passen de complement-regel toe:
\(2^{lengte_E's}-|getal|=2^5-6=26. Dus wordt dit opgeslagen als 000001010_11010. Ik zet hier bewust een underscore, maar het is slechts op de leesbaarheid te bevorderen, in het toestel staat die er uiteraard niet. Als je het dan uitrekent bekom je: 0.15625, ik weet dat dit in de verste verte niet lijkt op 0.1, maar zoals ik al zei, de computer zoekt een optimalere verdeling, en bovendien is mijn lengte van de rijen veel te klein (een double telt 8 bytes, dus 64 1 en 0-en). Ik dacht met een lengte van 12 voor exponenten, maar ik weet het niet zeker.\)
"Als je niet leeft zoals je denkt, zul je snel gaan denken zoals je leeft."

--Vladimir Lenin-- (Владимир Ильич Ульянов)

Gebruikersavatar
Berichten: 5.679

Re: Hoe exact moet een log getal zijn?

Misschien kan je dat even toelichten, want met dergelijke getallen heb ik zelf nog nooit problemen gehad.
1/10 oftewel 0.1 kan niet exact worden gerepresenteerd in een float of double, dat wordt dan iets als 0.09999999999784 of 1.0000000036 ofzo.

Floating point getallen worden namelijk opgeslagen in de vorm 1.(binaire mantissa) x 10N, en 1/10 heeft in die vorm geen eindige breukontwikkeling. 1/4 oftewel 0.25 past er bijvoorbeeld wel exact in.

Dat je daar in normale situaties geen problemen mee hebt komt omdat resultaten altijd afgerond worden weergegeven. En omdat je cpu intern met 80 bits precisie werkt, en floats en doubles 32 respectievelijk 64 bit zijn.
In theory, there's no difference between theory and practice. In practice, there is.

Gebruikersavatar
Berichten: 829

Re: Hoe exact moet een log getal zijn?

Rogier schreef:1/10 oftewel 0.1 kan niet exact worden gerepresenteerd in een float of double, dat wordt dan iets als 0.09999999999784 of 1.0000000036 ofzo.

Floating point getallen worden namelijk opgeslagen in de vorm 1.(binaire mantissa) x 10N, en 1/10 heeft in die vorm geen eindige breukontwikkeling. 1/4 oftewel 0.25 past er bijvoorbeeld wel exact in.

Dat je daar in normale situaties geen problemen mee hebt komt omdat resultaten altijd afgerond worden weergegeven. En omdat je cpu intern met 80 bits precisie werkt, en floats en doubles 32 respectievelijk 64 bit zijn.
Dat kan ik alleen maar beamen. De precisie is gewoon groot genoeg. En je mag niet vergeten dat alvorens het resultaat op het scherm komt het ook alweer afgerond is. Dus stel dat je bijvoorbeeld ingeeft ln(7.3890561) dan berekent je computer dat. Wiskundig kom je iet uit als 2.001..., maar je rekentoestel geeft 2, omdat zowel input als output afgerond worden.
"Als je niet leeft zoals je denkt, zul je snel gaan denken zoals je leeft."

--Vladimir Lenin-- (Владимир Ильич Ульянов)

Gebruikersavatar
Berichten: 829

Re: Hoe exact moet een log getal zijn?

Floating point getallen worden namelijk opgeslagen in de vorm 1.(binaire mantissa) x 10N
Ben je dat zeker, ik dacht dat een computer altijd ontworpen werd met machten van twee (is toepasbaar op zowat alles) bovendien werkt zo'n model sneller in een binaire machine
"Als je niet leeft zoals je denkt, zul je snel gaan denken zoals je leeft."

--Vladimir Lenin-- (Владимир Ильич Ульянов)

Gebruikersavatar
Berichten: 5.679

Re: Hoe exact moet een log getal zijn?

Nou, wat vind je van dit voorbeeld: (c++)

Code: Selecteer alles

float x = 0.1; // of 0.1f, of 1.0/10.0, of 1e-1, of hoe je het ook wilt initialiseren

float y = 0;

for (int i=0; i<10; i++)

{

  y = y+x;

}

float z = 1.0;

if (y==z)

{

  printf("Gefeliciteerd, uw computer kan getallen tot 1 decimaal correct optellen");

}
Het verschil tussen y en z in die if is zelfs groter dan 1e-7.
Ben je dat zeker, ik dacht dat een computer altijd ontworpen werd met machten van twee (is toepasbaar op zowat alles) bovendien werkt zo'n model sneller in een binaire machine
Foutje, moest uiteraard 2N zijn inderdaad.
In theory, there's no difference between theory and practice. In practice, there is.

Gebruikersavatar
Berichten: 829

Re: Hoe exact moet een log getal zijn?

Nou dat betekent dat hij niet met machten van 10 werkt. Anders had hij het opgeslagen onder de vorm
\(1*10^{-1}\)
en was het juist geweest, in dat geval kan je dus zeggen dat de basis van de macht iets anders moet zijn.

Overigens stel ik mij vragen of deze topic bij wiskunde thuishoort, en niet bij programmeren bijvoorbeeld

oeps, onderstaande reactie niet gelezen :D
"Als je niet leeft zoals je denkt, zul je snel gaan denken zoals je leeft."

--Vladimir Lenin-- (Владимир Ильич Ульянов)

Reageer