I162A-I162 http://realfag.uib.no/fag/2002v/i162 1/18 Forelesning 1 Antonella Zanna Institutt for informatikk (rom 4143) email: anto@ii.uib.no
Beregningsvitenskap Vårt hverdagsliv er blitt veldig teknologisk: CD spiller, DVD, Mp3,... Mobiltelefoner Værmelding Oljeindustri... 2/18 Bak alt dette ligger det mye matematikk og ingeniørarbeid, og mye vitenskap og beregning! Beregningsvitenskap er et fag som handler om design og analyse av algoritmer som er brukt til å løse slike matematiske problemer.
Modellering Det er vannlig å bytte ut fysiske problemer med modeller løser et alternativt problem, som er lettere å takle Det nye problemet er slik at løsningen er uendret, i hvertfall, ikke så langt unna den originale løsningen. 3/18 Metoder: Redusere uendlige dimensionale problemer til endelig dimensjonale Kompliserte funksjoner byttes ut med f. eks. polynomer Bytte ut integraler med rekker Ikkelineære likninger med lineære likninger...
Feilkilder Før beregning (kan ikke kontrolleres av oss): Modellen kan være simplifisert i forhold til problemet Empiriske mål: Måleinstrumenter har endelig presisjon! F. eks. kostantene i fysikk: g, c,... Data kommer fra tidiligere beregninger (og er approksimasjoner til eksakte input data) 4/18 Inne i beregningsprosessen: Trunkering og diskretisering: endelig vs. uendelig, etc. Avrunding: reelle tall er ikke representert eksakt i maskinen. Algoritmen/prosedyren Resultatet inkluderer og kombinerer begge approksimasjoner, derfor svaret kan inneholde feil som kan være avhenging av problemet eller algoritmen. Studiet og effekten av slike approksimasjoner på algoritmer kalles feilanalyse.
Eksempel: En mann (høyde h = 180cm) kaster en stein, vannrett, med et fart v = 9m/s. Hvor langt fra mannen faller steinen? 5/18 Vi bruker g = 9.18m/s 2, h = 1 2 gt 2 2 1.8 T = g Etter T er kjent, regner vi ut 2 1.8 l = vt = 9 = 5.636 meter g
Selv om formler er eksakte, vi har glemt Friksjon Jorden er rund (og ikke flat) Jorden roterer (Corioliskraft) h, v, g er empirisk målt I datamaskinen er alle disse tall trunkert og avrundet. 6/18 Presisjonen til vårt beregnete svar er avhenging av alle disse (små) feil.
Datafeil og beregningsfeil Som oftest regner vi med at modellen er realistisk nok (det er vår eksakte referanse ). Datafeil og beregnigsfeil kan ikke unngås, men de kan kontrolleres i en viss forstand. 7/18 For eksempel: f : R R. x:= eksakt input; regn ut f(x). Verdien x kan være uren på grunn av feilmåling eller datarepresentasjon, x ˆx. Funksjonen f er beregnet bare som en approksimasjon, ˆf. Totalfeil = ˆf(ˆx) f(x) = { ˆf(ˆx) f(ˆx)} + {f(ˆx) f(x)} }{{}}{{} beregningsfeil propagert datafeil Propagasjon av datafeil er ikke avhenging av algoritmen.
Trunkering og avrunding 8/18 Beregningsfeil er avhenging av algoritmen, og deles i: Trunkering: Forskjell mellom eksakt og algoritmisk svar (i eksakt aritmetikk) for et gitt input. Avrunding: Forskjell mellom svaret i eksakt aritmetikk og flyttall aritmetikk som er brukt i maskinen (fordi det går ikke an å representere alle tall eksakt i flyttall aritmetikk)
Eksempel Regn ut f(π/3) = sin π/3. Bruk lineær interpolasjon med hjelp av matematiske tabeller og π/3 1.0472. 9/18 I tabellboka finner vi: x 0 = 1.047 < 1.0472 < x 1 = 1.048 Den propagerte datafeil er da propagert datafeil = sin(1.0472) 3 2. For å regne ut sinusen, vi bruker den lineære interpolasjons formel som holder for alle y [x 0, x 1 ]: f(y) = f(x 0 ) y x 0 + f(x 1) x 1 y, = x 1 x 0 = 0.001. (1) Interpolasjonsfeil, som vi vil se senere i kurset, til (1) er: E(y) = f(y) f(y) = f (ξ y ), ξ y [x 0, x 1 ]. (2) 2
Merk at E(y) er beregnet i eksakt aritmetikk. Trunkeringsfeil=E(1.0472) For å regne ut det endelige svar, byttes ut i f(y), med f(x i ) f i, i = 0, 1, f 0 = 0.8659266112... = sin(x 0 ), f 1 = 0.88664263493... = sin(x 1 ) 10/18 I maskiner er f i representert i flyttall aritmetikk, og dermed avrundet. All regning er også avrundet: ˆf(ˆx) = Rounding( f(ˆx)) Dermed Avrundingsfeil = ˆf(ˆx) f(ˆx).
Absolutt og relativ feil Som oftest, vi måler feil ved hjelp av: Absolutt feil = approksimasjon eksakt verdi = ˆx x 11/18 Relativ feil = absolutt feil eksakt verdi = ˆx x x (Noen ganger bruker mann Absolutt feil = approksimasjon eksakt verdi absolutt feil Relativ feil = ) eksakt verdi Eks: 1) x = π/3, ˆx = 1.0472: Absolutt feil = 1.0472 π/3 = 2.448803 10 6 Relativ feil = 1.0472 π/3 π/3 = 2.338423 10 6
2) x = 0.00001, ˆx = 0.000015: Vi har 50% feil!! Absolutt feil = 5 10 6 Relativ feil = 5 10 6 10 5 = 5 10 1 = 0.5 = 50% 12/18 Den relative feil gir oss en ide om feilen i forhold til størrelsen til den verdien vi ønsker å approksimere og viser oss hvor mange korrekte (signifikante) siffer vi har. 10 t t korrekte siffer Hvis den relative feil er av størrelse 1, da har vårt tall ˆx ingenting å gjøre med x!!! Relasjon mellom approksimert verdi og relativ feil: Vi har Appr.verdi = eksakt verdi (1 ± relativ feil)
Kondisjonering Vanskeligheter med å løse et problem skyldes ikke nødvendigvis bare algoritmen i bruk! Ofte kan problemet selv være følsomt for perturbasjoner i input data. 13/18 Def. Vi sier at et gitt problem er vel-kondisjonert hvis små variasjoner i input data gir like små variasjoner i output data. Hvis små perturbasjoner av input data gir store variasjoner i output, kalles problemet dårligkondisjonert. Kondisjonering til et problem f kan måles med hjelp av kondisjonstallet: Kond = relativt feil i output relativt feil i input (f(ˆx) f(x))/f(x) =. (ˆx x)/x med ˆx nær x. Kondisjonstallet er mindre eller større enn 1 avhenging av om problemet øker eller reduserer input feilen. Hvis kondisjonstall er mye større enn 1, da er problemet dårlig kondisjonert. For deriverbare funksjoner: Kond f (x) = lim h 0 (f(x + h) f(x))/f(x) (x + h x)/x = lim h 0 hf (x)/f(x) h/x = (x) xf f(x).
Eksempel: Regn ut kondisjonstallet for og diskuter kondisjonering. f(x) = exp(x), 14/18 Siden f = exp er deriverbare, ifølge formelen: Kond f (x) = (x) xf f(x) = x ex e x = x. exp er vel-kondisjonert for små x exp er dårlig-kondisjonert for store x. Derfor, amplifikasjon av input feil skyldes ikke bare algoritmen vi bruke til å beregne exp men vanskeligheten sitter i problemet.
Baklengs feilanalyse Opp til nå, vi har snakket om propagasjon av feil (forlengs feilanalyse). Forlengs feilanalyse kan gi veldig pessimistisk inntrykk av beregningsfeil 15/18 Feil kan studeres også ved hjelp av baklengs feilanalyse.
baklengs feilanalyse x f f(x) ˆf forlengs feilanalyse 16/18 ˆx f ˆf(x) = f(ˆx) Lineære likningssystemer, ODEs,...
Stabilitet og presisjon Stabilitet er den algoritmiske ekvivalent av kondisjonering for problemer 17/18 Def. En algoritme er stabil hvis små perturbasjoner i input data gir like små perturbasjoner i output data for en vel-kondisjonert problem. Output til stabile algoritmer kan tenkes som eksakt output av et nokså nært problem (baklengs feilanalyse synspunkt) Ustabile algoritmer bør ikke brukes!! Presisjon betyr at vår beregning er nær den eksakte. Det er klart at presisjon er avhenging av algoritme, men er ikke nødvendigvis av stabilitet: en algoritme kan være stabil men likevel er problemet følsomt, da kan vi ikke forvente presisjon.
Neste gang 18/18 Flyttall aritmetikk