Sølve Selstø, Martin Lilleeng Sætra og André Brodtkorb
Praktisk introduksjon til numeriske metodar
Øvingsoppgåver for Python
Sølve Selstø, Martin Lilleeng Sætra og André Brodtkorb
Praktisk introduksjon til numeriske metodar
Øvingsoppgåver for Python
Copyright © 2024 by Vigmostad & Bjørke AS
All Rights Reserved
1. utgåve 2024 / 1. opplag 2024
ISBN: 978-82-450-5055-4
Grafisk produksjon: John Grieg, Bergen
Grafisk design: Forfattarane
Omslagsdesign: Endre Barstad
Illustrasjonane er laga av forfattarane, med unntak av:
Figur 7.1 Offentleg tilgjengeleg
Figur 15.1 Holger Ellgaard, CC BY-SA 3.0, via Wikimedia Commons
Figur 20.1 Henriette Bærheim
Forfattaren har fått støtte frå Det faglitterære fondet.
Spørsmål om denne boka kan rettast til: Fagbokforlaget
Kanalveien 51
5068 Bergen
Tlf.: 55 38 88 00 e-post: fagbokforlaget@fagbokforlaget.no www.fagbokforlaget.no
Materialet er verna etter åndsverklova.
Utan uttrykkjeleg samtykke er eksemplarframstilling berre tillate når det er heimla i lov eller avtale med Kopinor.
Vigmostad & Bjørke AS er Miljøfyrtårn-sertifisert, og bøkene er produsert i miljøsertifiserte trykkeri.
4.6Løysingsforslag..........................
5.1Reduserttrappeformogløysingavlineære
5.7Ekstraoppgåve:Rekkeoperasjonar................
7.1Halveringsmetoden–igjen....................
7.4Ekstraoppgåve:Bursdagsamedag................
8Numeriskderivasjon135
8.1Endelegdifferanse........................
8.2Denderivertefråeintabell....................
8.3Derivasjonsomlineærtransformasjon..............
8.4Ekstraoppgåve:Gammafunksjonenvs.eksponentialfunksjonen.
8.5Ekstraoppgåve:Åbestemmefeilen................
8.6Løysingsforslag..........................
9Numeriskintegrasjon153
9.6Ekstraoppgåve:MonteCarlo-integrasjon.............
10Optimering179
12Intermesso213 12.1Kortoppsummering........................
Introduksjon
Numeriskemetodarerikkjenokonytt.Toavdeimestsentralemetodanei dennebokaerutviklaavIsaacNewton(1642–1726)ogLeonhardEuler(1707–1783).Rettnokhaddeikkjedessekaranehøvetilånyttesegavelektronisk databehandling(EDB)nårdeiskulleimplementere1 metodanesine;deimåtteta tiltakkemedpapirogblyant,ellerfjørpenn.Slikemaskinarbleitilpå40-talet. Ogdeiharblittganskepopulæresidandess.Pånorskkallarvidei datamaskinar, påmangeandrespråk,inkludertengelsk,blideikalla reknemaskinar.Deiblei tilforåkunnehandterestoremengdertalogdatarasktogeffektivt.Deipassar somhandihanskeforåkunneimplementeremetodanetilNewtonogEuler,for eksempel.
Vedhjelpavslike–ogliknande–metodarkanvispåvêrogklima,dimensjonere bygningarogbruer,lageprognosarforspreiingavepedemiar,analysereog manipulerebildeoglyd,studereyttergrenseneavuniverset,“treneopp”ein kunstigintelligensellerlagegodemodellarforlønsutviklingogfolketal.Lista kangjerastmykjelengre.Deterikkjespesieltvanskelegåargumenterefor atberekningaroghandteringoganalyseavdataspelarganskeviktigeroller isamfunnetvårt.Derforbørimplementeringavnumeriskemetodarvereein naturlegdelavmatematikk-undervisinga.Likevelkandetoftesittelangtinne–bådeforelevoglærar,studentogførelesar–åutfordretankenomatmatematikk ereinreinpapirogblyant-aktivitet.Ogmangelærebøkererlojalemotden tradisjonen.Dessverre.
Mangelærebøkerimatematikkerlagtopppådenmåtenateinførstgårgjennom eindelteori–medeksempel–ogsåskalelevenellerstudentensjølvbruke teorienpåkonkreteoppgåveretterpå.Herharviprøvdågjeretingpåeinlitt annanmåte.Herblirdusetttilågjereoppgåvermedeingong.Innimellomer
1 IfølgeordbokatilSpråkrådetkandetteordetdefinerastslik:“implementere (fråeng.av,lat. implere‘gjereferdig’)1)utføre,setteiverk;2)iIT:gjeredetsomskaltilforåfåmaskineller programtilåverke.”
derdryppavteori.Menframforalthåparviatteorienskalblitilei erfaring frå førstestund–vedatdugjerdetsjølv,vedatdu implementerer løysinga.Detsom ståridenneboka,skal gjerast,ikkje lesast.
Håpeteratalleskalklareågjeredesseøvingane–ogsådeisomaldriharskrive eilinjePython-kodeførelleraldriharbruktdatamaskinarognettbretttilnoko særlegannaennnettsurfing,sosialemediumogtekstbehandling.Viforsøkerå forklaretingsågrundigviklarar.Derforvilnokenkelteoppleveatdetheile kanblilittteksttungtogomstendeleg.Dettegjeldikkjeminstiløysingsforslaga. Mendeterviktigåvereklaroveratsjølvombokaerganskjetjukk,erdetikkje nødvendigvisveldigmykjeågjere.
Pådenandresida:Omdusynestatoppgåveneerioverkantdetaljstyrande,kjenn degfritilåløyseoppgåvenepådineigenmåte.Ogdersomduskulleblinyfiken påtingsomkanskjeligglittpåsidaavdetoppgåvaleggopptil,såikkjeverredd forågåeinlitenomveg!
Somtittelentyderpå,eroppgåveneknyttetilprogrammeringsspråketPython. FaktiskfinstdeteintidlegareversjonavdennebokabasertpåMATLAB,2 meni dennebokaharvibådeutvidaogomarbeidaheilemanuskriptettilåbrukePython. Determangegodegrunnartildet.Eingrunneratprogramvareforåkøyre Python-kodeergratis.Ogderermangeutviklararsomjobbarjamtogtruttmedå utvikleogutbetrenyttige,brukarvenlegeogeffektiveimplementeringarsomkan køyrastiPython.DerforharPythonogsåblitteitpopulærtprogrammeringsspråk –eitsommangebrukar.Mangeelevarogstudentarvilnokblisetttilåutvikle ellerforståPython-kodenårdeieingongskalutiarbeidslivet.
Meddetsagtbørdetogsånemnastatmykjeavdetsomvilæreråimplementere idenneboka,kan,medrelativtenklejusteringar,overførasttilandreplattformer ogspråk–somtildømesMATLAB/Octave,JuliaellerR–ellermeirgenerelle programmeringsspråksomC,C++,C#ellerJava.Sånnsettkaneingodtinvende atbokavillehattstørrenytteverdiomkodeogimplementeringhaddevoregjort meirgenerisk–alståformulertpålittmeirgenerellemåtar.Menettervårerfaring erverdienavåfåkonkret,køyrbarkjeldekodeganskestor.Detbidrartilåsenke terskelenforåkommeigang.Såfårhellerfugleperspektivetkommelittseinare. Sågodtsomallevelkjentenumeriskemetodarhareinellerannanferdigfunksjon ieitellerannaPython-bibliotek.Einkanforeksempelestimereintegraleller løyseeidifferensiallikningvedågiberreeitparkommandoar.Viskaliliten gradbrukeslikeferdiglagaløysingar.Dettekankanskjesjåutsomeineffektiv måteågjeretingmeirkompliserteenndeitrengåvere.Menpoengetmeddenne bokaerjoatviskal læreossnumeriskemetodar,ikkjelæreosskorleisviskalfå Pythontilågjeredeiforosspåenklastmoglegmåtevedåsettesamandeirette
2 Selstø,Sølve(2017). Praktiskintroduksjontilnumeriskemetodar.Øvingsoppgåverfor MATLAB.Universitetsforlaget. ISBN9788215028453
svarteboksane.Eitsliktoppleggvilledessutanhaførtmedsegeindelkjedeleg pugging.Nårvivelharlærtdessemetodane–ogkvadeiersterkeogkvadei ersvakepå–vildetveremeirnaturlegåbrukeslikeferdigepakkar.Menher,i startgropa,vilvibyggeoppmetodanevedhjelpavdeienklastebitane.
Nårviskalimplementeredeiaktuellenumeriskemetodane,vilviforsøkeå skrivekodanesåenkeltoggjennomsiktigsomviklarar.Kanskjekandettetil tidergåutovereffektiviteten;omvioppleveratdetskulleverekonfliktmellom ågjereeinkodepedagogiskogågjerehanoptimal,vilvitypiskveljeågjeredet første.Derforerkanskjeikkjedennebokaheilt optimal fordeisomhartenktå blisterkeprogrammerarar;dåkankanskjeboka“Pythonforrealfag”avFinn AakreHaugenogMariusLysakervereeitbetrealternativ.
Ideiførstekapitlafokuserervipåeittavgrensatemaomgongen.Dersomdublir ståandefastpånokreavoppgåvene,skuldastdettemestsannsynlegatoppgåva ikkjeertydelegnokformulertavoss–elleratduhartattlittforlettpåeittav deitidlegarekapitla.Tankeneratdersomdufølgerprogresjonen,skaldetikkje verenødvendigågrublelengeforåfåtingtil.Ogomduhargrublalitt,håparvi atdeidetaljerteløysingsforslagakanveretilnytte.Herbørdetogsånemnastat visseavkapitlaharekstraoppgåverderspesieltinteressertefårutfordraseglitt. Mendeiverkelegeutfordringanekjemidensistedelenavboka.Herblirdetgitt ganskekrevjandeoppgåverderduvilfåbrukforaltdetduharlærtideiførste kapitla.Deterikkjeutanvidareopplagdkvametodareinskaltaibrukikvar avoppgåvene,ogoftemåeinkombinerefleireavdei–itilleggtilåtaibruk meiranalytiske“papirogblyant”-metodar.Ogdeterakkuratslikvisomjobbar medkvantitativemetodartildagleg,heldpå.Vivekslarmellomnotatblokkog datamaskinheiletida.
Bokaerrikpåkodesnuttar.Omduharlysttilåbrukenokonavdesse,skaldu sleppeåskrivedeiav.Alledeiaktuellefilenekandufinneibokasitteige GitHub repository,på https://github.com/nummet/nummet Vihåparatduetteråhajobbadeggjennomdennebokasitattmedeioffensiv haldningtilkvantitativproblemløysing:“Dersomegklararåbrukematematikk tilå formulere problemet,skalegogsåklareå løyse det.”Ogkanskjeopplever duogså,somoss,atkodingakangjeredetlettareåforståteorien–ikkjeberre motsett.
Dennebokaharblitttilisamspelmedflottestudentarogkollegaerved OsloMet–storbyuniversitetet.Tusentakktildykkalle!
Numeriske metodar og berekningar er ein viktig del av ingeniørmatematikk, men for mange kan det å komme i gang med numerisk problemløysing kjennast utfordrande – spesielt om du har lite erfaring med programmering. I Praktisk introduksjon til numeriske metodar blir du leidd steg for steg gjennom numerisk problemløysing, med Python som kodeverktøy.
Metodane blir introduserte gjennom enkle oppgåver som er tilpassa for å gi deg ei klar forståing av korleis teori og praksis heng saman. Mot slutten av boka får du høve til å bruke desse teknikkane for å løyse meir samansette problem. Boka er full av praktiske oppgåver med grundige løysingsforslag som gir deg solid erfaring med metodane.
Boka er utvikla i tett samband med undervising, og er eit nyttig verktøy for deg som vil lære numeriske metodar på ein praktisk og tilgjengeleg måte.
Sølve Selstø er professor ved ingeniørutdanninga på OsloMet – storbyuniversitetet, der han underviser i matematikk og fysikk. Han er utdanna i teoretisk fysikk og forskar på kvantefysikk.
Martin Lilleeng Sætra er forskar ved Meteorologisk institutt og førsteamanuensis ved OsloMet – storbyuniversitetet. Han underviser og forskar innan anvend matematikk og berekningsvitskap.
André Brodtkorb er professor i berekningsvitskap ved OsloMet – storbyuniversitetet. Forskinga og undervisinga hans ligg i skjeringspunktet mellom matematikk og informatikk.