Numeriek exacter dan exact?

Moderators: jkien, Xilvo

Reageer
Berichten: 15

Numeriek exacter dan exact?

Goede(dagdeel),

Ik heb onlangs een vrij "zware" exacte oplossing voor een vergelijking geprogrammeerd in c#. Tijdens een controle van een het programmaatje kwam ik er achter dat de door het programma gevonden oplossingen afwijken, zij het miniem, van de juiste waarden. Voorbeeldje: ik zocht naar een snijpunt tussen twee vergelijkingen, waarvan ik zeker wist dat dit op x = 50 ligt. Mijn programma geeft echter x = 50.000016.

Dit is op zich niet storend, de fout is maar klein, maar ik ben bang dat deze kan gaan "doorwerken".

Ik kan natuurlijk met een numerieke oplossing de exacte waarde beter benaderen dan met een exacte oplossing, alleen dit kost meer rekentijd.

Zijn er nog andere oplossingen?

P.S. Alle parameters zijn van het type double.

Bij voorbaat dank.

C

Gebruikersavatar
Berichten: 829

Re: Numeriek exacter dan exact?

Nou het probleem met programmeren is dat een exact getal op een computer niet bestaat. Pi bestaat niet op een computer weliswaar is een computer makkelijk in staat om op een tiental decimalen nauwkeurig te rekenen, maar daarmee houdt het ook op. Je zal dus vrede moeten nemen met dergelijke afwijkingen. Dat heeft niets met C# te maken, elke taal maakt dezelfde blunders wat dat betreft. Nu de oplossing: Er bestaan types die een hogere preciese garanderen, ik denk dat je (aan de afwijking te zien) een float gebruikt. Indien je de precisie preciesie wil uitbreiden kan je een double gebruiken of indien het nog exacter moet misschien een decimal. Of je kan ook zoeken op internet naar types die door programmeurs zelf geschreven zijn, die nog hogere preciese garanderen.

PS. Hoe staat het eigenlijk met C#. (zie leren programmeren) :D

edit: heb nu pas gezien dat je de double vermeld had.
"Als je niet leeft zoals je denkt, zul je snel gaan denken zoals je leeft."

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

Re: Numeriek exacter dan exact?

Zo'n grote afwijking wijst op een programmeerfout.

Gebruikersavatar
Berichten: 7.224

Re: Numeriek exacter dan exact?

Zo'n grote afwijking wijst op een programmeerfout.


Tenzij de vergelijking iteratief is opgelost.
If I have seen further it is by standing on the shoulders of giants.-- Isaac Newton

Gebruikersavatar
Berichten: 829

Re: Numeriek exacter dan exact?

Het kan maar ikzelf gebruik soms newtons methode en zo'n grote fout heb ik nog niet meegemaakt
"Als je niet leeft zoals je denkt, zul je snel gaan denken zoals je leeft."

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

Berichten: 4.246

Re: Numeriek exacter dan exact?

Tenzij de vergelijking iteratief is opgelost.
Inderdaad het gaat dus om de numerieke methode die je toepast en deze heeft een discretisatiefout...
Quitters never win and winners never quit.

Berichten: 15

Re: Numeriek exacter dan exact?

Nope geen programmeerfout. Dit soort fouten komt ook vaak bij excel voor wanneer je in een enkele formule veelvuldig goniometrische functies gebruikt. In combinatie met machtvereffenen kan de onnauwkeurigheid flink oplopen.

Tovarishch Lenin, wat betreft het leren van programmeren: ik stel steeds een doel waar ik naar toe werk, ik leer on the fly. Het is natuurlijk niet de juiste methode maar het werkt voor mij. Ik merk dat ik qua theorie nog wat tekortschiet, dat ben ik nu beetje bij beetje aan het oppakken.

Ik krab natuurlijk alleen nog maar het oppervlak op het moment, maar ik begin wel steeds vaker voor me te zien hoe ik iets kan oplossen in c#.

Gr. C

Gebruikersavatar
Berichten: 7.224

Re: Numeriek exacter dan exact?

Het kan maar ikzelf gebruik soms newtons methode en zo'n grote fout heb ik nog niet meegemaakt


De fout in Newton's methode hangt nog altijd af van de convergentievoorwaarde die je stelt.
If I have seen further it is by standing on the shoulders of giants.-- Isaac Newton

Berichten: 7.068

Re: Numeriek exacter dan exact?

ik zocht naar een snijpunt tussen twee vergelijkingen
Kun je de vergelijkingen geven?

Gebruikersavatar
Berichten: 6.905

Re: Numeriek exacter dan exact?

Mogelijk kan nauwkeuriger maar trager werken door een decimal te gebruiken.
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.

Gebruikersavatar
Berichten: 3.112

Re: Numeriek exacter dan exact?

Vaak werken afgeronde tussenafwoorden cumulatief door.

Gebruikersavatar
Berichten: 829

Re: Numeriek exacter dan exact?

Civilo schreef:Tovarishch Lenin, wat betreft het leren van programmeren: ik stel steeds een doel waar ik naar toe werk, ik leer on the fly. Het is natuurlijk niet de juiste methode maar het werkt voor mij. Ik merk dat ik qua theorie nog wat tekortschiet, dat ben ik nu beetje bij beetje aan het oppakken.

Ik krab natuurlijk alleen nog maar het oppervlak op het moment, maar ik begin wel steeds vaker voor me te zien hoe ik iets kan oplossen in c#.
Wat betreft de juiste methode volgens mij bestaat er geen, zelf ben ik analoog begonnen, en gaandeweg de technologie vergroot, zoals DirectX, Eigen GUI,... volgens mij is het juist de manier om te leren programmeren, je stuit immers altijd weer op nieuwe problemen, waarop je een antwoord dient te zoeken. Ik denk dat een dergelijk methode juist één van de beste is.

Dit natuurlijk geheel terzijde van de topic.
"Als je niet leeft zoals je denkt, zul je snel gaan denken zoals je leeft."

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

Reageer