Redigerer
Euklids algoritme
Hopp til navigering
Hopp til søk
Advarsel:
Du er ikke innlogget. IP-adressen din vil bli vist offentlig om du redigerer. Hvis du
logger inn
eller
oppretter en konto
vil redigeringene dine tilskrives brukernavnet ditt, og du vil få flere andre fordeler.
Antispamsjekk.
Ikke
fyll inn dette feltet!
[[Fil:Algoritmo de Euclides geométrico.svg|thumb|200px|Måling av ''a'' = ''AB'' med måle-staven ''b'' = ''CD'' gir ''a''/''b'' = <math>2\tfrac{1}{3}</math>.]] '''Euklids algoritme''' er en [[algoritme|fremgangsmåte]] for å beregne på en systematisk måte den [[største felles divisor]] til to elementer som tilhører en [[euklidsk ring]]. I det enkleste tilfelle benyttes den for [[heltall]]. Algoritmen er en av de eldste som er kjent og har fått sitt navn etter den greske matematiker [[Euklid]]. Han beskrev den i sitt hovedverk ''[[Elementer]]'' som kan dateres tilbake til [[antikkens Hellas]]. Den samme fremgangsmåten kan også benyttes til å forenkle generelle [[brøk]]er og har mange anvendelser i moderne [[tallteori]]. ==Bakgrunn== Fremgangsmåten som beskrives i algoritmen var sannsynligvis godt kjent på Euklids tid tog ble omtalt som ''antanairesis''. Sannsynligvis stammer metoden helt tilbake til [[Babylonia|babylonerne]]. Den fremkommer på en naturlig måte når man skal måle nøyaktig en avstand med en målestav med kjent lengde, men uten noen finere inndeling. Men man kan merke av kortere lengder på denne.<ref name = Holme> A. Holme, ''Matematikkens historie'', Bind 1, Fagbokforlaget, Bergen (2002). ISBN 82-7674-678-0.</ref> Hvis den søkte avstanden kalles ''a'' og målestaven har lengde ''b'', kan man si at denne utgjør den lengdeenhet man vil benytte. Man ønsker derfor å måle ''a'' i enheter av ''b'', det vil si forholdet ''a''/''b''. Dette tilsvarer da en [[divisjon (matematikk)|divisjon]], og man vil generelt ikke finne noe noe heltallig svar. ===Fremgangsmåte=== Først måler man hvor mange hele ganger ''q''<sub>0</sub> som ''b'' kan plasseres langs ''a''. Generelt vil det da oppstå en rest ''r''<sub>0</sub> < ''b''. Når denne er forskjellig fra null, sier man at målingen eller divisjonen ikke «går opp» og man har : <math> a = q_0 b + r_0 </math> I neste omgang bestemmer man hvor mange ganger ''q''<sub>1 </sub>avstanden ''r''<sub>0</sub> er inneholdt i ''b''. Det vil eventuelt gi en ny rest ''r''<sub>1</sub>, og man har : <math> b = q_1 r_0 + r_1 </math> hvor nå ''r''<sub>1</sub> < ''r''<sub>0</sub>. På denne måten fortsetter man og måler hvor mange ganger ''r''<sub>1</sub> er inneholdt i ''r''<sub>0</sub>, : <math> r_0 = q_2 r_1 + r_2 </math> Generelt vil man etter å ha gjentatt dette ''n'' ganger at : <math> r_{n-1} = q_{n+1} r_n + r_{n+1} </math> Denne fremgangsmåten kan fortsette helt til restene er blitt forsvinnende små, og man er fornøydd med resultatet. Det kan da generelt skrives som en [[kjedebrøk]]. Stopper man for eksempel etter ''n'' = 2 ganger der man kan sette {{nowrap|''r''<sub>3</sub> {{=}} 0}}, vil man ha at {{nowrap|''r''<sub>2</sub> {{=}} ''r''<sub>1</sub>/''q''<sub>3</sub>}}. Innsatt i den forrige ligningen, har man da {{nowrap|''r''<sub>1</sub> {{=}} ''r''<sub>0</sub> /(''q''<sub>2</sub> + 1/''q''<sub>3</sub>)}}. Herav kan så ''r''<sub>0</sub> bestemmes uttrykt ved lengden ''b''. Resultatet er da kjedebrøken {{nowrap|''a''/''b'' {{=}} [''q''<sub>0</sub>;''q''<sub>1</sub>,''q''<sub>2</sub>,''q''<sub>3</sub>]}} som utskrevet er : <math>{a\over b} = q_0 + \cfrac{1}{q_1 + \cfrac{1}{q_2 + \cfrac{1}{q_3}}} </math> I prinsippet gir denne fremgangsmåten et resultat som kan bli så nøyaktig som man ønsker ved å foreta disse gjentagelsene lenge nok.<ref name = Ore> O. Ore, ''Number Theory and Its History'', Dover Publications, New York (1988). ISBN 0-486-65620-9.</ref> ==Største felles faktor== Den samme algoritmen kan også bli benyttet til å finne [[største felles faktor]] av to tall ''a'' og ''b''. Hvis man etter ''n'' stepp finner at resten ''r''<sub>''n''+1</sub> = 0, vil denne felles faktor være den foregående resten ''r''<sub>''n''</sub>. De to tallene sies da å være [[Kommensurablitet (matematikk)|kommensurable]].<ref name = Ore/> Som et konkret eksempel kan man betrakte tallene ''a'' = 551551 og ''b'' = 50065. Da får man videre fra algoritmen : <math>\begin{align} 551551 &= 50065 \times 11 + 836 \\ 50065 &= 836 \times 59 + 741\\ 836 &= 741 \times 1 + 95\\ 741 &= 95 \times 7 + 76\\ 95 &= 76 \times 1 + 19 \\ 76 &= 19\times 4 + 0 \end{align} </math> Største felles faktor for 551551 og 50065 er derfor 19. ===Dataprogram=== Algoritmen til Euklid er [[rekursjon|rekursiv]] og kan derfor lett implementeres på en elektronisk [[datamaskin]]. Man kan da definere en funksjon SFD(''a,b'') som gir [[største felles divisor]] av de to heltallene ''a'' og ''b''. Strukturen til programmet vil da være '''funksjon''' SFD(a, b) '''hvis''' b = 0 '''returner''' a '''ellers''' '''returner''' SFD(b, a '''mod''' b) Her benyttes den innebygde [[modulo]]-funksjonen '''mod''' som gir resten etter en heltallsdivisjon. I [[programmeringsspråk]]ene [[C++]] eller [[Java (programmeringsspråk)|Java]] vil algoritmen se ut som int SFD(int a,int b){ if ( b == 0 ) return a; return SFD(b,a%b); } hvor modulo-funksjonen betegnes med prosentsymbolet %. ==Faktorisering av polynom== [[Polynom]] kan adderes og multipliseres sammen. De kan på den måten danne en matematisk [[ring (matematikk)|ring]] med tilsvarende egenskaper som [[heltall]]ene '''Z'''. Av den grunn kan et polynom ofte [[faktorisering|faktoriseres]] i et produkt av et eller flere andre polynom av lavere grad. Denne faktorisering kan også systematisk utføres ved hjelp av Euklids algoritme.<ref name = RA> J. Reed og J. Aarnes, ''Matematikk i vår tid'', Universitetsforlaget, Oslo (1967).</ref> Hvis man er gitt ett polynom ''a''(''x'') og et annet ''b''(''x'') av samme eller lavere grad, kan man alltid foreta en oppsplitting av formen : <math> a(x) = q(x)b(x) + r(x) </math> hvor de to polynomene ''q''(''x'') og ''r''(''x'') entydig kan bestemmes. Polynomet ''b''(''x'') kan så splittes opp på en tilsvarende måte og dermed gi opphav til et nytt restpolynom ''r''(''x'') . Denne prosessen fortsettes så til man står igjen med et restpolynom som er null. Den største felles faktor av polynomene ''a''(''x'') og ''b''(''x'') er da det foregående restpolynomet. Fremgangsmåten kan illustreres ved et enkelt eksempel der : <math> a(x) = x^3 - 4x^2 - 3x + 18, \;\;\; b(x) = x^2 - 2x - 8 </math> Da er : <math>\begin{align} a(x) &= (x^2 - 2x - 8)(x - 2) + x + 2\\ b(x) &= (x - 4)(x + 2) + 0 \end{align} </math> , slik at den felles faktor er <math> x + 2 </math>. Polynomet ''a''(''x'') kan derfor splittes opp og man finner : <math> x^3 - 4x^2 - 3x + 18 = (x + 2)(x - 3)^2 </math> Det er først når de gitte polynomene har mye høyere grad, at denne algoritmen virkelig kommer til sin fulle bruk. ==Se også== * [[Kjedebrøk]] * [[Største felles faktor]] ==Referanser== <references/> ==Eksterne lenker== * J. O'Connor and E. Robertson, [http://www-groups.mcs.st-andrews.ac.uk/~john/MT4517/Lectures/L6.html ''Division and Euclidean algorithms''] {{Wayback|url=http://www-groups.mcs.st-andrews.ac.uk/~john/MT4517/Lectures/L6.html |date=20210506140331 }}, University of St. Andrews, Scotland {{Autoritetsdata}} [[Kategori:Algoritmer]] [[Kategori:Tallteori]]
Redigeringsforklaring:
Merk at alle bidrag til Wikisida.no anses som frigitt under Creative Commons Navngivelse-DelPåSammeVilkår (se
Wikisida.no:Opphavsrett
for detaljer). Om du ikke vil at ditt materiale skal kunne redigeres og distribueres fritt må du ikke lagre det her.
Du lover oss også at du har skrevet teksten selv, eller kopiert den fra en kilde i offentlig eie eller en annen fri ressurs.
Ikke lagre opphavsrettsbeskyttet materiale uten tillatelse!
Avbryt
Redigeringshjelp
(åpnes i et nytt vindu)
Maler som brukes på denne siden:
Mal:Autoritetsdata
(
rediger
)
Mal:Nowrap
(
rediger
)
Mal:Wayback
(
rediger
)
Modul:External links
(
rediger
)
Modul:External links/conf
(
rediger
)
Modul:External links/conf/Autoritetsdata
(
rediger
)
Modul:Genitiv
(
rediger
)
Modul:Wayback
(
rediger
)
Navigasjonsmeny
Personlige verktøy
Ikke logget inn
Brukerdiskusjon
Bidrag
Opprett konto
Logg inn
Navnerom
Side
Diskusjon
norsk bokmål
Visninger
Les
Rediger
Rediger kilde
Vis historikk
Mer
Navigasjon
Forside
Siste endringer
Tilfeldig side
Hjelp til MediaWiki
Verktøy
Lenker hit
Relaterte endringer
Spesialsider
Sideinformasjon