Matematik med ubestemte tal

Af Poul-Henning Kamp,  mandag 11. okt 2010 kl. 12:22

Vi har alle lært om heltal, rationelle tal, reelle tal, komplekse tal osv. Men hvor mange af jer har hørt om "ubestemte tal" ?

På engelsk kaldes de "Uncertain Numbers", tal vi ikke er sikre på værdien af.

Denne obskure sidegren af matematikken er, som mange andre spøjse ting, opstået i kølvandet af atombomber, hvor man har haft behov for at lave riskoberegninger på alt der kommer i nærheden af en bombe.

Ubestemte tal er sjældent ukendte tal, vi kan f.eks vide at risikoen for at tabe i plat og krone er ca. 50% +0/-2% hvis der er polske 1EURO mønter involveret, eller vi kan igennem en forsøgsrække have fundet et gennemsnit fra 5.2 til 5.6 og standardafvigelser fra 1.1 til 1.4.

Jeg stødte ind i ubestemte tal ad omveje og fandt et glimrende paper fra Sandia National Laboratory som jeg læste i går aftes.

Idag regner vi ofte parallelt: Vores bedste skud på et udfald i én kolonne og en usikkerhed i kolonnen ved siden af og langt de fleste mennersker aner ikke hvorledes de skal regne på tallene for at få et relevant resultat.

Reglerne for at regne på ubestemte tal er mildest talt kryptiske: Hvordan dividerer man en normalfordeling med resultatet af en enkelt stikprøve som man mistænker for ikke at være repræsentativ ?

Men reglerne er efterhånden ved at være udledt og der findes specialiserede programmer der kan regne med dem.

Hvad vi virkelig har brug for, er at få lært almindelige regneark om ubestemte tal, så alle kan få et værktøj der kan hjælpe dem med at håndtere ubestemtheder.

Hvis vores regneark kendte til ubestemte tal, kunne vi tilføje både den bule teenageren laver i bilen og lottogevinsten, med tilhørende chancer/risiko, angive næste års løn som et interval med tilhørende sandsynligheder for givne størrelser af bonus eller nedskæringer osv. og få at vide hvor stor chancen er for at vi har råd til at installere solceller på taget.

phk



11. okt 2010 kl 13:49

Michael Coene

Proces kontrol

Fuzzy logic er ikke nyt i proceskontrollernes verden. Drengene hos FLSchmidt bruger det til hverdag for at styre cement ovne.

Beginning with the first industrial fuzzy logic application in 1971 and incorporating growing in-house process knowledge, FLSmidth has developed new generations of advanced process control employing the latest technologies such as Model Predictive Control.


11. okt 2010 kl 14:06

avatar

Poul-Henning Kamp

Re: Proces kontrol

Fuzzy logic er ikke nyt [...]

Det er ikke fuzzy logic, snarere "fuzzy statistics" men du har ret i at det lugter lidt af hinanden.

Generelt interesser Fuzzy Logic sig ikke for udfaldsrummet når du har foretaget dit valg i den enkelte situation, her drager man den kombinerede ubestemthed med hele vejen igennem til facit.

Det er et rigtig godt og interessant spørgsmål om man ville få bedre resultater i kæder af FL, ved at bruge ubestemte tal og regne feltet med hele vejen igennem, før man til sidst foretager sig valg, end ved at lave det trin for trin, som man typisk gør idag.

Poul-Henning

PS: Vi havde en Vølund vaskemaskine hvorpå et klistermæker proklamerede at den havde "fuzzy logic", da vi på et tidspunkt havde styringen ude, kunne det godt se ud til at være rigtigt :-)




11. okt 2010 kl 14:16

Bent Andersen

Re: Re: Proces kontrol

da vi på et tidspunkt havde styringen ude, kunne det godt se ud til at være rigtigt :-)

Du mener lige som når man tager bagklædningen af et CRT-fjernsyn :-)


11. okt 2010 kl 15:24

avatar

Morten Fordsmand

hvorfor ikke gå hele vejen og

Beskæftige sig med "bistromatics" læren om at tal ikke er absolutte men derimod afhængige af observertørens bevægelse.
Se f.eks http://everything2.com/title/r...uson


11. okt 2010 kl 15:37

avatar

Carsten Frigaard

Interval aritmetik

Jeg prøvede for nogle år siden at regne på usikkerheden for Pioneer sonden, via en simple N-body simulering (sol, jupiter, og andre planeter, + sonde)...I ved, for at kigge på den berømte Pioneer 10 anomali.

Sammensatte simuleringen af Newtons lov, massen af sol, jupiter, osv., og usikkerhed i masse for objekterne og gravitationskonstanten --- teknisk set løst via Boost/C++ (www.boost.org) interval aritmetik.

Det var interessant, men usikkerheden for en sådanne simuleringer gror (eksponentiel eller power udvikling) for hver iteration, således at man efter et par hundrede eller tusinder steps har en stortset uendelig usikkerhed.

Udregning via interval aritmetik kan dog bruges mere fornuftigt inden for andre emner....

Mvh
Carsten


11. okt 2010 kl 15:57

avatar

Poul-Henning Kamp

Re: Interval aritmetik


Det var interessant, men usikkerheden for en sådanne simuleringer gror (eksponentiel eller power udvikling) for hver iteration
[...]

Det er sådan set præcis derfor vi har brug for ubestemte tal:

Groft sagt, er intervalaritmetik ikke det korrekte at bruge i det tilfælde: Der skulle du have brugt normal-fordelte ubestemte tal på input data.

Det giver en meget mere "spids" sandsynlighedsfordeling end den "kasse" som intervaller repræsenterer og derfor ville du ikke have haft exponentiel vækst, men blot stadig længere "tails".

Som jeg har læst det paper jeg linker til, er det netop pointen i dette matiatiske udredningsarbejde, at man kommer med snævrere resultater end hvis man kun regner på min/max værdier.

I et andet dokument, muligvis noget salgsmateriale for RiscCalc, (har ikke lige linket) læste jeg et konstrueret eksempel, hvor min/max udregningen kom frem til at sandsynligheden for at en bestemt dims fejlede var større end nul og mindre end en, et 100% ubrugeligt svar.

Samme beregning gennemført med med ubestemte tal og en 99% konfidens, gav et snævert bånd omkring 1:100.000.

Nogen burde skrive en python-pakke til beregning med ubestemte tal...

Poul-Henning


11. okt 2010 kl 16:35

Bjarke Dalslet

Re: Re: Interval aritmetik


Nogen burde skrive en python-pakke til beregning med ubestemte tal...

Poul-Henning

såsom "python-uncertainities":

http://pypi.python.org/pypi/un...ies/

Python kan alt!


11. okt 2010 kl 16:54

avatar

Carsten Frigaard

Re: Re: Interval aritmetik

Groft sagt, er intervalaritmetik ikke det korrekte at bruge i det tilfælde: Der skulle du have brugt normal-fordelte ubestemte tal på input data.

Ja, jeg overvejede også forbindelsen fra interval aritmetik til normal fordelte data, dengang. Men det jeg var efter, var egentlig "usikkerheden" på floating point udregningerne: hvad kan der overhovedet siges om en simulering baseret på floating-point, med dertilhørende usikkerhed i repræsentationen af flydetal.

Vil man have mere præcision kan man jo gå til The GNU MPFR Library (http:http://www.mpfr.org/)...eller...ller lign.

Jeg har ikke fået læst det "glimrende paper" endnu, som du nævner, men et interessant spørgsmål om man ikke bare kan regne på Gaussisk/normalfordelt data men også på f.eks. Poisson fordelte data?

Mvh
Carsten



11. okt 2010 kl 17:40

avatar

Poul-Henning Kamp

Re: Re: Re: Interval aritmetik


såsom "python-uncertainities":

Nej, Python kan ikke alt: den pakke kan kun regne med normalfordelte (gauss-fordelte) tal.

Den kan ikke regne med nogen anden form for ubestemte tal (intervaller, sandsynlighedsfunktioner, diskrete sæt osv. osv)

Det er netop kombinationen af forskellige former for ubestemte tal der gør det interessant.

Poul-Henning


11. okt 2010 kl 17:44

avatar

Poul-Henning Kamp

Re: Re: Re: Interval aritmetik


[...]men et interessant spørgsmål om man ikke bare kan regne på Gaussisk/normalfordelt data men også på f.eks. Poisson fordelte data?

Netop: og man kan regne på ligeligt fordelte, cauchy-, log-, exp- og alle mulige andre fordelinger, herunder diskrete sæt, censorerede målinger[1] osv.

Det at man kan blande forskellige beskrivelse og stadig få anvendelige resultater ud er dybt fascinerende.

Poul-Henning

[1] En censoreret måling er hvor nogle måleresultater ligger under instrumentets støjgrænse og derfor optræder uforholdsmæssigt høje, med tilsvarende bias i afledte metriker, som gennemsnit og standardafvigelse.


11. okt 2010 kl 19:19

Jens Madsen

Kender PCer til andet end ubestemte tal?

Computere husker ikke tallene eksakt, men kun med en vis præcision. Skulle computeren regne korrekt, burde den derfor altid tage hensyn til den regnefejl som begås.

Mange modeller har feedback, og det er stor sandsynlighed for, at digitaliseringen medfører problemer med resultatets kvalitet. Alligevel, anvendes modeller med feedback, både til beregning af vejr, og aktieanalyser. Mange vigtige spådomme, og årsager til forkerte beslutninger, ligger der computermodeller med feedback til baggrund for.

Hvis computerne kunne oplyse om usikkerheden på værdien, og endog angive en stokastisk fordeling, for sandsynligheden af værdien, så kunne det ske, at vi blev fri for mange af de forkerte beslutninger, som idag foretages på baggrund af modeller, med ulinær feedback.


11. okt 2010 kl 20:52

avatar

Poul-Henning Kamp

Re: Kender PCer til andet end ubestemte tal?

Computere husker ikke tallene eksakt, men kun med en vis præcision. Skulle computeren regne korrekt, burde den derfor altid tage hensyn til den regnefejl som begås.

Det er noget af det første programmører lærer og det er kun hvis man udtrykker helt bestemte regnestykker meget forkert at det er et problem.

Hvis du læser dokumentationen til den software jeg linkede til, vi du se at de ikke desto mindre har et helt afsnit om hvorledes man bør tage sig i agt derfor.

Poul-Henning


11. okt 2010 kl 23:15

avatar

Rasmus Skovmand

Re: Re: Re: Interval aritmetik

@Carsten
Kender du noget til numerisk analyse? Ellers kan jeg anbefale dig at studere en bog som f.eks. "Introduction to Numerical Computation", som har en af de fornemmeste pladser i min egen bogreol.

Efter de første to kapitler, har du helt styr på hvordan du analyserer udtryk repræsenteret med flydende tal. Dvs. hvor mange rigtige cifre der er i resultatet efter n antal +/* operationer som hver afrunder til 23 eller 52 bit (single eller double). Matlab er et fantastisk software til formålet. Det står for Matrix Lab (og ikke som jeg engang troede for Math Lab). Men det kender alle ingeniører vel?


12. okt 2010 kl 09:03

Rud Wacherhausen Wichmann

Matematik med ubestemte tal

'Vi har alle lært om heltal, rationelle tal, reelle tal, komplekse tal osv. Men hvor mange af jer har hørt om "ubestemte tal" ?'

.... Falken, Øresundsbroen, Metro, DR-Byen ...... :-)


12. okt 2010 kl 10:00

avatar

Torben Mogensen

Troll

Et lille eksempel på et værktøj til beregning med sandsynligheder i diskrete sæt er Troll (http://topps.diku.dk/torbenm/t...sp). Troll er mest rettet mod terningkast, men kan f.eks. også regne med at udtage X ud af Y værdier.


12. okt 2010 kl 11:01

avatar

Poul-Henning Kamp

Re: Troll

Et lille eksempel på et værktøj til beregning med sandsynligheder i diskrete sæt [...]

Jep, der findes tons af værktøjer der kan arbejde med en bestemt slags fordeling. Det vi mangler er værktøjer der kan arbejde med forskellige slags fordelinger.

Læs paper'et, der er helt sikkert et stort marked for det...

Poul-Henning


12. okt 2010 kl 11:21

Mikael Thoustrup

Re: Re: Troll

Jeg arbejder (bl.a.) med værdiansættelser og anlægsprojekter, hvor vi modellerer usikkerheder ind. Der er mange fordele ved det - fx. at vi kan isolere de største usikkerhedskilder i forbindelse med offentlige anlægsprojekter og derigennem arbejde med risikoen, vi kan isolere hvilke faktorer, der har størst effekt på virksomhedsværdien (skal vi sende et working capital-team ind eller er det mere profitabelt at omlægge lånene?) etc. (jeps, jeg er DJØF'er, skyd mig bare :)).

Så vidt muligt bygger vi i excel (for det forstår vores kunder), og til usikkerhederne bruger vi dels @Risk fra Palisade (http://www.palisade.com/) eller Crystal Ball fra Oracle (http://www.oracle.com/appserve...ml).

Begge er MC-simulatorer, med de værktøjer har du adgang til en række distributioner - hvis det ikke er nok kan du også bootstrapppe din egne.

I øvrigt har Palisade også en række andre sjove værktøjer - en lommeudgave af Neural Networks, et ok evolver-værktøj og et statistics suite, der udvider dine statistiske værktøjer i Excel.

/Mikael


12. okt 2010 kl 17:48

Jan Boier Pedersen

Polsk Euro

Hvor har PHK fundet en Polsk Euro?


12. okt 2010 kl 17:59

avatar

Poul-Henning Kamp

Re: Polsk Euro

Hvor har PHK fundet en Polsk Euro?

Sorry, jeg skulle have checket referencen: Poliske statistiskere og belgiske mønter:

http://www.newscientist.com/ar...html

Poul-Henning


14. okt 2010 kl 12:08

avatar

Carsten Frigaard

Re: Interval aritmetik

@Rasmus


Efter de første to kapitler, har du helt styr på hvordan du analyserer udtryk repræsenteret med flydende tal. Dvs. hvor mange rigtige cifre der er i resultatet efter n antal +/* operationer som hver afrunder til 23 eller 52 bit (single eller double).

Jeg har naturligvis glemt meget fra diverse kurser i numerisk analyse, og "Numerical Recipies" står også og samler støv (den indeholder iøvrigt også meget lidt om usikkerheder på floating point tal).

Det kan godt være at man kan analysere simple udtryk, men hvad skal man gøre med f.eks. transcendente funktioner? Hvad kan man sige om præcisionen og usikkerhed i udtrykket 'y=sin(x)'?

Så er y jo et "transcendent" tal, og bruger man floating point enheden i CPU'en taber man muligheden for at regne på præcisionen.

mvh
Carsten


14. okt 2010 kl 18:55

avatar

Rasmus Skovmand

Re: Interval aritmetik

@Carsten

Hvad angår de matematiske standardfunktioner, er du er nødt til at studere dokumentationen for den algoritme der er brugt til f.eks. sin(x). I Matlab f.eks., er std-funktionerne implementeret ved FDLIBM, et frit tilgængeligt mat-bibliotek fra Sun som kan findes på bl.a. www.netlib.org.

Selvom der findes utallige forskellige algoritmer til f.eks. sin(), er de alle baseret på iterations-metoder, dvs. uendelige rækker der konvergerer mod sin(x). Iterationsmetoder akkumulerer ikke afrundingsfejl (de retter dem selv undervejs). Et kald til sin(x) returnerer dermed sin(x) plus en enkelt afrundingsfejl; det er jeg temmelig sikker på altid må være tilfældet...

Hvad kan man sige om præcisionen og usikkerhed i udtrykket 'y=sin(x)'?

Hvis datatypen du regner i er double, er CPU'ens afrundingsfejl

Rc = 0.5 x 2^-52 = 1.11022e-16

og vi får Dy = |y - sin(x)| <= Rc (Dy = absolut fejl i y).

Du kan dermed trygt stole på de første 15 decimaler efter kommaet.

Her er to vigtige formler til analysering af beregninger med flydende tal:

y = x1 +/- x2 ==> |Dy| < |Dx1| + |Dx2|
y = x1 */div x2 ==> |Dy/y| < |Dx1/x1| + |Dx2/x2|

Her er også indført |Dy/y| = relativ fejl.

Det er altså en kæderegel du kan bruge til at finde fejlen i y.
Et eksempel med følgende udtryk: y = K*sin(x)/x + x

Dy < |D(K*sin(x)/x)| + |Dx| < |DK/K| + |Dsin(x)/sin(x)| + |Dx/x| + |Dx|

osv.





14. okt 2010 kl 19:27

avatar

Rasmus Skovmand

Re: Interval aritmetik

Hov, eksemplet var med fejl! Bare se bort fra det...


15. okt 2010 kl 08:39

Kristian B

Sandsynlighedsregning

Det omtalte fænomen er jo blot basal sandsynlighedesregning: at lægge ubestemte tal (også kaldet "stokastiske variable") til hinanden (eller trække fra, som essentielt er det samme) kaldes at "folde fordelinger", eller "convolution" på engelsk.

I nogle fordelinger kan det nemt lade sig gøre (f.eks. er normalfordelingsklassen lukket over for foldninger, dvs. summen af to normalfordelte variable er igen normalfordelt med passende parametre), mens det i andre fordelinger er praktisk talt umuligt at komme frem til analytiske resultater (f.eks. log-normal fordelingen: hvis X er normalfordelt er exp(X) log-normalfordelt.).

Til gengæld kan nogle stokastiske variable nemt "ganges sammen". Lognormalfordelte variable ganget sammen er igen log-normalfordelte (den kvikke læser vil nu se, at det at gange log-normal fordelingen blot svarer til at lægge normalfordelinger sammen). Til gengæld fås ikke noget pænt ud af at gange normalfordelinger sammen.

I praksis kan man undersøge resultatet numerisk: Til dette bruges Monte Carlo metoder (dvs. simulation). Hvis man f.eks. vil finde fordelingen af summen af to log-normal fordelte variable kan man simulere en masse replikationer af de to, og så lægge simulationerne sammen. Summerne giver nu en empirisk fordeling: en approksimation til den rigtige fordeling.

Dette kan man gøre i større setups, og det bliver også i stor stil anvendt. Monte Carlo teknikker er ganske udbredte, og et felt med store interesser, både i den akademiske verden og i erhvervslivet.

Jeg skal på falderebet blankt erkende, at jeg ikke har læst artiklen. Mit indlæg skal ses i lyset deraf.

Med Venlig Hilsen
Kristian


18. okt 2010 kl 21:48

Thomas Poulsen

Re: Interval aritmetik


såsom "python-uncertainities":

Nej, Python kan ikke alt: den pakke kan kun regne med normalfordelte (gauss-fordelte) tal.


R kan alt: http://bm2.genes.nig.ac.jp/RGM...html


19. okt 2010 kl 10:56

avatar

Carsten Frigaard

Re: Interval aritmetik


Her er to vigtige formler til analysering af beregninger med flydende tal:

y = x1 +/- x2 ==> |Dy| < |Dx1| + |Dx2|
y = x1 */div x2 ==> |Dy/y| < |Dx1/x1| + |Dx2/x2|

...og det er præcis denne error propagation jeg får ud af at benytte interval aritmetik. Dog gør jeg det fuldautomatisk via et library, så selv ikke monotone funktioner som 'sin(x)' bliver behandlet korrekt.

Du har en god pointe i FP enhedens udregning af værdier: der itereres mod en stabilt slutværdi. Problemet med min udregning, gravitationel interaktion mellem masser, er at den af natur er ustabil/kaotisk, og netop vil forstærke små "over-densiteter" i min massefordeling.

Kommer disse over-densiteter fra min egen opsætning af masserne er det helt OK, men begynder jeg at regne på akkumulerede fejl, er det mindre sjovt.

Hvis vi deler fejl op i unøjagtigheder (præcision) og usikkerhed vdr. målingerne så er gravitationskonstanten f.eks. givet ved

G = 6.6742 ± 0.0010 · 10^-11 m^3 kg^-1 s^-2

og det interessante består nu i at fortolke dette som f.eks. en normalfordeling om mu=6.6742*10^-11 med sigma=0.0010 *10^-11, dvs i formen

X = mean ± sigma

og herefter regne på sandsynlighedsfordelinger. Præcisionen, givet ved floatingpoint repræsentationen af 6.6742*10^-11 har så stadig en øvre grænse, givet ved error-propagations formen før.

Men vi skal lige passe på at sammenblande (som jeg originalt gjorde) de to typer 'fejl'.

Jeg har ledt længe efter ordentlig litteratur til dette emne, f.eks. er "Introduktion to Error Analysis" alt for overfladisk, og jeg er derfor ganske interesseret i artiklen givet i bloggen...

Carsten



19. okt 2010 kl 13:02

Mikkel Meyer Andersen

Re: Interval aritmetik

Dog gør jeg det fuldautomatisk via et library, så selv ikke monotone funktioner som 'sin(x)' bliver behandlet korrekt.

Er du sikker på, at du vil påstå, at sin(x) er monoton :-)?


24. okt 2010 kl 17:21

avatar

Rasmus Skovmand

Re: Interval aritmetik

Hej Carsten,

Hvis vi deler fejl op i unøjagtigheder (præcision) og usikkerhed vdr. målingerne så er gravitationskonstanten f.eks. givet ved

G = 6.6742 ± 0.0010 · 10^-11 m^3 kg^-1 s^-2

og det interessante består nu i at fortolke dette som f.eks. en normalfordeling om mu=6.6742*10^-11 med sigma=0.0010 *10^-11, dvs i formen

X = mean ± sigma

Jeg skal lige forstå hvad du vil. Vil du analysere numeriske fejl i beregninger med flydende tal? Og så formulere usikkerhedsintervallet som en sandsynlighedsfordeling?

Normalt er man kun interesseret i fejlens størrelse og ikke dens fordeling. Man opererer med 3 typer af fejl: Rx, Rc og Rt (fejl i input, afrundingsfejl og trunkeringsfejl). Rx skyldes typisk en måleusikkerhed eller begrænset information om en parameter.

Det er formentlig kun visse former for Rx der kan antages at være normalfordelte. Rc og Rt må antages at være homogent fordelte. Men da langt de fleste fejl i numeriske algoritmer har homogene fordelinger, tror jeg ikke dit projekt fører til ret meget, hvis målet er at få et bedre resultat.

Det var interessant, men usikkerheden for en sådanne simuleringer gror (eksponentiel eller power udvikling) for hver iteration, således at man efter et par hundrede eller tusinder steps har en stortset uendelig usikkerhed.

Jeg vil anbefale, at du finder en god bog om numerisk analyse. Hvis fejlen af dine simuleringer gror potentielt eller værre, er der noget galt. Du har brug for at designe nogle algoritmer hvor du selv kan kontrollere fejlens størrelse som funktion af forskellige parametre. Fejlen bør altid kunne gøres vilkårligt lille ved at øge f.eks. antal iterationer, skridtlængde og hukommelsesbrug.


Ny i debatten? Opret en brugerkonto

  • Seneste nyt
  • Mest læste
  • Debatterede
 

Nyhedsbrev

Tilmeld dig vores nyhedsbrev.