Programmering for naturvitenskap og matematikk

Page 1


Andreas D. Haraldsrud og Joakim Sundnes

Programmering for naturvitenskap og matematikk

© H. Aschehoug & Co. (W. Nygaard) AS ved Universitetsforlaget 2025

ISBN 978-82-15-06664-6

Materialet i denne publikasjonen er omfattet av åndsverklovens bestemmelser. Uten særskilt avtale med rettighetshaverne er enhver eksemplarfremstilling og tilgjengeliggjøring bare tillatt i den utstrekning det er hjemlet i lov eller tillatt gjennom avtale med Kopinor, interesseorgan for rettighetshavere til åndsverk. Utnyttelse i strid med lov eller avtale kan medføre erstatningsansvar og inndragning og kan straffes med bøter eller fengsel.

Kapittelfoto: 1. Peshkov/iStock 2. Oleksii Arseniuk/iStock 3.Wmaster890/iStock 4. Khanchit Khirisutchalual/iStock 5. Sean Fleming/iStock 6. Mediaphotos/ iStock 7. Jeremy Richards/iStock 8. Hirun/iStock 9. Igor Kutyaev/iStock 10. Spawns/iStock 11. Oleh Slobodeniuk/iStock 12. VAWiley/iStock 13. Stanley45/ iStock 14. Margarita Balashova/iStock 15. Panya7/iStock.

Henvendelser om denne utgivelsen kan rettes til:

Universitetsforlaget AS

Postboks 508 Sentrum

0105 Oslo

www.universitetsforlaget.no

Forfatterne har mottatt støtte fra Det faglitterære fond.

Omslag: Stian Hole

Sats: Andreas D. Haraldsrud

Trykk og innbinding: Livonia Print, Latvia

Boka er satt med: Computer Modern Roman

Papir: 100 g Arctic Matt

Innhold

IGrunnleggendeprogrammering

1 Intro duksjon

1.1Naturvitenskapeligogmatematiskprogrammering

1.4Programmeringisamfunnet

1.4.1Programmeringiframtida...

1.5ProgrammeringsspråketPython

1.5.1Programmeringsmiljøer(IDE-er)...

1.5.2Kjøreprogrammerikommandolinja...

1.5.3BrukavJupyterNotebook

1.6Brukavgenerativkunstigintelligensiprogrammering

1.6.1FordelermedgenerativKI

1.6.2FallgruvervedavhengighetavKI

1.6.3BalansenmellombrukavKIogaktivlæring

2.2.1f-strengformatering

2.2.2Tipstilbrukavprint.

2.3.1Heltallogflyttall

2.3.2Standardform

2.4Tekststrenger

2.5Aritmetikk

2.5.1Regnerekkefølge

2.5.2Regningikonsollen

4

2.11Kompleksetall

2.12Kommandolinjeargumentersomalternativtil

2.13Feilsøking

3.1.1Eksempel:pH-beregninger

3.1.2Nøstedevilkår...

3.1.3Eksempel:bergarter

3.2Løkker

3.2.1While-løkker

3.2.2Eksempel:frittfall

3.3For-løkker

3.4Anvendelser

3.4.1Eksempel:følgerogrekker

3.4.2Eksempel:populasjonsdynamikk

3.5Nøstedeløkker.

3.5.1Eksempel:elektroneksitasjon

3.6Iterasjongjennomlister

3.6.1Iterasjongjennomflerelisteelementer

3.6.2Utfyllingavlister

3.7Løkkekontrollmed break og

4.1.1Hvorforfunksjoner?

4.2Funksjonermedflereparametre...

4.3Funksjonermedingenellerflerereturverdier...

4.4Argumentverdierogparameternavn

4.5Lokaleogglobalevariabler..

4.6Dokumentasjonsstrenger(docstring)

4.7Python-moduler

4.8Lambda-funksjoner.

4.9Rekursjon

5.1.1Opprettearrayer

5.1.2Behandlearraydata

5.1.3Biologieksempel:Populasjonsdynamikk

5.1.4Flerdimensjonalearrayer

5.1.5Vektorisering...

5.1.6Kopieravarrayeroglister

5.2Dictionarier

5.2.1Nøstededictionarier..

5.2.2Håndteredictionarier

6 Testing, feilhåndtering og versjonskontroll

6.1Feilhåndteringmed try-except

6.1.1Håndteringavspesifikkefeil

6.1.2Håndteringavfeilikommandolinjeargumenter

6.2Brukavtestfunksjonerforåverifisereprogrammer

6.2.1Entestfunksjonkaninkluderefleretester

6.2.2Python-verktøyforautomatisktesting

6.3VersjonskontrollmedGit

6.3.1HvordankommeigangmedGithub

6.3.2LagringavendringeriGithub-repoet

7.1Klasser,objekteroginstanser

7.2Grunnleggendeomklasser...

7.2.1Førsteeksempel:Enklassesomrepresentererfysiskeobjekter.163

7.2.2Klasserformatematiskefunksjoner ..............166

7.2.3Meromklasseprogrammering... ..............168

7.2.4Beskyttedeattributter... ..................169

7.3Spesialmetoder .............................170

7.3.1Spesialmetoderformatematiskeoperasjoner... ......173

7.4Objektorientertprogrammering ....................175

7.4.1Klassehierarkierogarv .....................175

7.4.2Arvog polymorfisme ......................178

7.4.3Etklassehierarkiforpolynomer

IIDataogvisualisering

8 Visualisering og datahåndtering 197

8.1Plottingmed Matplotlib ........................197

8.1.1Plottingavlister ........................198

8.1.2Flereplottisammefigur

8.1.3Plottingavfunksjoner

8.2Lesefiler .................................204

8.2.1Skrivetilfil ...........................205

8.2.2Lesefrafil

8.3Lesefilermedpandaer

8.3.1Tipstillesingavfil..

8.3.2Velgeutelementerfradatarammer ..............210

8.3.3Lagenyedatarammerogskrivetilfil

8.3.4Leggetilogsletteelementer

8.3.5Leseflerefiler ..........................213

8.4PlottingmedSeaborn

9 Statistikk

9.1Sentraltendensogspredning

9.1.1Sentraltendens

9.1.2Spredningsmål

9.1.3Testerforutliggere

9.2Statistiskinferens

9.2.1Hypotesetestingmedt-tester..

9.2.2Korrelasjon ...........................244

9.2.3Regresjon

10.2.1Eksempel:Tilnærmingav π medtilfeldigetall

10.2.2Eksempel:Virrevandring

10.2.3Eksempel:Tilfeldigetrekk

10.2.4Eksempel:DNA-mutasjoner...

10.3Sannsynlighetsfordelinger

10.3.1Uniformfordeling

10.3.2Binomiskfordeling

10.3.3Hypergeometriskfordeling

10.3.4Normalfordeling

10.3.5Poisson-fordeling

10.3.6Maxwell-Boltzmann-fordeling

10.3.7Fradiskretetilkontinuerligefordelinger

11.2.1DenoriginaleNewton-Raphson-metoden

11.2.2Sekantmetoden

11.3LikningsløserefraSciPy

11.3.1Likningssystemer

12.1.1Newtonskvotient

12.1.2Feilanalyse..

12.1.3Uliketilnærminger

12.2Numeriskderivasjonavdiskretedata.

12.3Klasserfornumeriskderivasjon..

12.3.1Arvogsubklasserfornumeriskederivasjonsformler

12.4.1Rektangelmetoden

12.4.2Algoritmerogimplementering

12.4.3Trapesmetoden

12.4.4Simpsonsmetode ........................342

12.4.5MonteCarlo-integrasjon

12.5Bibliotekerforderivasjonogintegrasjon

12.5.1Dobbel-ogtrippelintegrasjon

12.5.2Analytiskderivasjonogintegrasjon

15.1Uliketilnærmingertilmaskinlæring

15.2Maskinlæringsmodeller

15.2.1Beslutningstrealgoritme

15.2.2kNN-algoritme

15.3Kunstigenevralenettverk

15.3.1Loss-funksjoner

15.3.2Lineæreregresjonsmodeller

15.3.3Andreregresjonsmodeller

15.4Regresjonmedscikit-learn

VLøsningsforslag

1.Introduksjon

1.1 Naturvitenskapeligogmatematiskprogrammering

Detteerenlærebokinaturvitenskapeligogmatematiskprogrammering.Hovedformåletmeddennetypenprogrammeringerågjørematematiskeberegningerogutforskenaturvitenskapeligefenomener.

Selvommatematikkognaturvitenskaptradisjoneltharblittformidlet gjennomligninger,illustrasjonerogskriftligeforklaringer,erprogrammering etkraftfulltverktøyforåforståogutforskekompleksesystemer.Meddatamaskinensomverktøykanvisimulerealtfrakjemiskereaksjonerogplaneters bevegelsertilevolusjonæreprosesserogjordskjelv.Datamaskinenkanaltså bådebrukessometkraftigmikroskopsomlarossseenkeltatomer,ogsomet teleskopsomlarossstuderestjerner,planeteroggalakser.Idennebokavil vivisehvordanprogrammeringkanværeetdynamiskverktøyforlæringog eksperimenteringinaturvitenskapogmatematikk.

Bokagirenpraktisktilnærmingtilprogrammeringgjennomeksemplerpå problemstillingerogprogramkodefraulikenaturvitenskapeligefag.Eksempleneerforankretimatematiskteoriognaturvitenskapeligeprinsipper.Måleter ågidegeksemplerfradittegetfagområdesomfølesrelevanteogsomgirdeg

enhelhetligforståelseforhvordandukanbrukeprogrammeringsomverktøy inaturvitenskapogmatematikk.

Inaturvitenskapeligogmatematiskåndhåperviatdukanværeundrendeognysgjerrigimøtetmedprogrammering,ogatprogrammeringenkan stimuleretilkreativitetogskapergledehosdeg.

Detviktigstedukangjøreforålæredegåløsematematiskeognaturvitenskapeligeproblemermedprogrammering,eråprogrammereselv.Deter viktigatdugjørmangeoppgaversomduprøveråløsepåegenhåndførdu eventueltspøromhjelp.Viharderforlagetunderveisoppgaversomdukan løseforåsjekkeatduharforståttdetduharlest.Dissebørdugjøremensdu leser.Nårduharprøvdpåenoppgave,kandusjekkeløsningsforslagetbakerst iboka.

1.2 Algoritmer

Algoritmerogmodellerersværtviktigeinaturvitenskapeligogmatematisk programmering.Laossderforsenærmerepådissebegrepene.

Algoritmer

Enalgoritmeerenpresisbeskrivelseavenserieoperasjonersomskal utføresforåoppnåetvisstresultat.

Velkjenteeksemplerpåalgoritmererstrikkeoppskrifter,kakeoppskrifterog algoritmenesomgirossanbefaltefilmerpåNetflixogannonserpåFacebook. Algoritmerinaturvitenskaperpåsinsideenserieoperasjonersomløseret naturvitenskapeligproblem.Noenalgoritmerersværtkompliserte,mensandre erenkleåforstå.Pythonharmangebibliotekersomvikanimportereforåfå tilgangtiltusenvisavnyttigealgoritmer.

Menselvomdetfinnesferdigprodusertealgoritmer,børviogsålæreoss ålageflereavdemselv.Vileggeropptilatduskalforståogimplementere matematiskealgoritmeriPythonpåegenhåndidenneboka.Dettegjørviav flereårsaker:

•Viforståralgoritmenebedrehvisvilagerdemselv.

•Viharmulighetenetilåmodifiserealgoritmenedersomviskulletrenge det.Destomerduforstår,jomerkontrollhardupådetsomskjer.

•Nårduprogrammereralgoritmer,kandufåendabedreinnsiktidet matematiskeognaturvitenskapeligeinnholdet.

Alledisseergodegrunnertilatviskalprogrammerealgoritmerfrabunnen av,mennårduførstharlærtalgoritmene,skalviogsåsepåimporteringav ferdiglagdemetoderogalgoritmerfraprogrammeringsbiblioteker.

1.3 Modellering

Naturvitenskapeligogmatematiskmodelleringerendynamiskprosessdervi lager,vurdererogforbedrermodeller,somerforenklederepresentasjonerav virkeligheten.Dissemodellenekanværeutledetframatematiskesammenhenger,ellerdekanværeempiriske,ogdermedbasertpåeksperimenter.

EteksempelpåenmodellerHookeslov.Denbleformulerti1676ogbeskriveratkraftenvitrekkerenfjærmed(F ),erproporsjonalmedforlengelsen avfjæra(x )fralikevektspunktet(x0 ):

Modellenhar,somalleandremodeller,begrensninger.Hvisviforeksempel trekkerfjæraforlangt,kandendeformeresellerryke.Allemodellerharderfor et gyldighetsområde ogbegrensningeravhengigavsammenhengenvibenytter demi.

Figur1.1:Hookesoriginaletegningavenfjæri DePotentiaRestitutiva (1678).

F = k (x x0 )

DetsomerfascinerendemedHookeslov,eratdennemodellenfor«fjærkraften»ogsåkanbrukessommodellforåstudereandrefenomener,foreksempel kjemiskebindingerogvibrasjonikjemiskeforbindelser.Dennemodellenbrukesfaktiskimodernedatasimuleringeravmolekylerogkrystaller.Enomlag 350årgammelmodellermedandreordlikeaktuellidag!

Figur1.2:Utsnittfraensimuleringavenkrystallmedbindingermodellertsomfjærer. SimuleringenerlagdmedVPython.

Modellering

Modelleringerenprosesssominnebærerålage,vurdereogforbedre forenklederepresentasjoneravfenomenerivirkeligheten,altså modeller.

Forhverenkeltmodellerdetviktigåværeoppmerksompåbegrensningeneog forutsetningenesomgjelder.Detteerenklereåblibevisstpånårvilagerog utforskermodelleneselv,noesomerlettereåfåtilmedprogrammering.Programmeringerderforetviktigverktøyforåforståogutforskenaturvitenskap ogmatematikk.

1.4

Programmeringisamfunnet

Selvomvifokusererpåmatematiskognaturvitenskapeligprogrammeringi denneboka,erdetviktigåforståatprogrammeringharenmyebredererelevansisamfunnet.Programmeringeretverktøysombrukestilåstyreog automatisereprosesser,analyserestoredatamengder,simulerekompleksesystemerogskapenyeteknologiskeløsninger.Altfraøkonomitilmedisinbenytter segavprogrammeringforåløseproblemersomtidligerekrevdemyetidog ressurser.Nårdutilnærmerdegproblemermedprogrammeringsomverktøy, kanduogsåblienbedreproblemløser.Ensolidkunnskapomprogrammering åpnerderformangedøreridagensteknologidrevnesamfunn.

Ferdigheteriprogrammering,modelleringogdataberegningererogsåsvært viktigforåkunne forstå samfunnet.Algoritmerogkunstigintelligensomgir oss,ogvitrengerdigitaleferdigheterforåkunneengasjereosssomaktiveskapereavdenneteknologien,ikkebarekonsumenter.Menogsåsomkonsumenter avdigitalteknologierdetviktigatviforstårdenneteknologien.Detgjøross istandtilåtavelinformertevalg,ogbidrardermedtilendemokratiseringav samfunnet.

1.4.1

Programmeringiframtida

Iframtidavilteknologiforståelseogprogrammeringkunnespilleenendaviktigererolleettersomteknologienutviklersegraskt.Enveldigspennendeutviklingskjerinnenforkvantedatamaskiner,somloveråkunneløseproblemersom dagensdatamaskinerbrukermangeårpå.Kvantedatamaskinerkanpotensielt revolusjoneredataberegningersomkrevermyeressurseridag.

Figur1.3:KvantedatamaskinenIBMQ[Adventtr/iStock].

Itilleggøkerogsåbrukenavmaskinlæringogkunstigintelligensinnenfor

programvaresomhjelperdegåskrive,testeogkjørekodendinpåeneffektiv måte.EksemplerpåpopulæreIDE-erforPythoner:

1. VSCode: EtmyebruktIDEsomstøttermangeforskjelligeprogrammeringsspråk,inkludertPython.Detharmangeutvidelsersomgjørdet tiletsværtfleksibeltvalgforprogrammerere.

2. JupyterNotebook: EtpopulærtIDEforvitenskapeligprogrammering.DetlardegskriveogkjørePython-kodeismåseksjoner,noesom ersværtnyttigforåtesteutideerstegforsteg.Itilleggkanduskrive tekstogmatematikkisammemiljø,noesomgjørmiljøetgodtegnetfor vitenskapeligkommunikasjon.

3. Spyder: EtIDEsomfølgermedAnaconda-pakka.Detteerenpopulær samlepakkesominneholderPython,flereIDE-er,nyttigebibliotekerog endelannenfunksjonalitet.

4. PyCharm: EtrelativtavansertIDEsomgirdegmangeverktøyfor åjobbemedstørreprosjekter.Detharinnebygdfeilsøkingogstøtter versjonskontroll.

Detfinnesmangeflereutviklingsmiljøer,ogdubørvelgedetsompasserbest fordinarbeidsflyt.NoenforetrekkerenenkelteksteditorsomSublimeText ellerAtom,mensandrevelgermeravanserteIDE-ersomVSCodeellerSpyder.

Figur1.4:UtsnittavprogrammeringsmiljøetVSCode,etmyebruktIDE.

1.5.2 Kjøreprogrammerikommandolinja

ForutenåbrukeetIDEtilåskriveogkjøreprogrammer,erdetogsåvanligå kjørePython-programmerdirektefrakommandolinjaellerterminalen.Dette erspesieltnyttignårduønskeråkjøreetprogramutenååpneetutviklingsmiljø,ellerhvisduarbeiderpåenserverderingengrafiskbrukergrensesnitter tilgjengelig.Kommandolinjagirogsåmerkontrolloverhvordanprogrammet kjører,ogdukanenkeltsendemedparametereellerbrukeulikeverktøyfor feilsøking.

HererenkortoversiktoverhvordandukankjørePython-programmerfra kommandolinja:

1.Åpnekommandolinjaellerterminalen.

Førstmåduåpnekommandolinja(iWindows)ellerterminalen(imacOS/Linux).Detteerettekstbasertgrensesnittderdukanskrivekommandoerforå kjøreprogrammerogmanipulerefiler.

• Windows:Dukanåpnekommandolinjavedåtrykke Win+R,skrive cmd ogtrykkeEnter.

• macOS:TerminalenfinnerduvedåtrykkeCommand+Spaceogsøke etter«terminal».

• Linux:PådeflesteLinux-distribusjonerkanduåpneterminalenvedå søkeetter«terminal»iapplikasjonsmenyen.

2.Navigertilriktigmappe.

NårdukjørerPython-programmerfrakommandolinja,mådunavigeretil mappahvorPython-filaduønskeråkjøre,erlagret.Dukanbrukekommandoen cd (changedirectory)tilåbyttemappe.

Hvisforeksempelprogrammetditterlagretienmappesomheter prosjekter/python påskrivebordet,kandunavigereditvedåskrive:

cdDesktop/prosjekter/python

3.KjørPython-programmet.

Nårduharnavigerttilriktigmappe,kandukjørePython-programmetvedå brukekommandoen python etterfulgtavfilnavnet.

HvisduforeksempelharenPython-filsomheter mitt_program.py,skriverdu:

python3mitt_program.py

Dettevilkjøreprogrammetditt,ogresultatetvilvisesiterminalvinduet.

4.KjørePython-konsollen.

Iprogrammeringssammenhengreferereren konsoll spesifikttiletinteraktivt miljøsomofteåpnesfraenterminal,hvorbrukerekanskriveogevaluere Python-kodedirekte.

DukanstartePython-konsollendirekteiterminalenvedåskrive python3. DetteåpnereninteraktivPython-sesjonderdukanskriveogkjørePythonkommandoerfortløpende,utenålageenegenfilsominneholderkommandoene.Dukanogsåbrukekonsollensomenenkelkalkulator(foreksempelved åskrive 3**5 ogtrykkeEnter).Dettekanværenyttigforrasktestingavsmå kodebiterellerforågjøreenkleberegninger.

1.5.3 BrukavJupyterNotebook

Etverktøysomegnersegsværtgodttilåskrivedokumentersominneholderkode,er JupyterNotebook.DetteIDE-etinneholderbådematematisk tekstformateringogeneditorsomkankjørekode.JupyterNotebookfinnesi Anaconda-pakka,sådenkanstartesherfra.Daåpnesenlistemedfilersom ligger lokalt pådatamaskinen(selvomdetåpnesiennettleser).Alternativt kandubrukeJupyterLab,somerenannenmåteåleseoginterageremed JupyterNotebookspå.VSCodekanogsåkjøreJupyterNotebooks.

Trykkpå new og Python3,såkommerdutilettomtdokument.Notebookenbyggesoppavblokkermedinnhold.Detfinnesihovedsaktoinnholdsblokker: code (kodeblokk)og markdown (tekstblokk).Ienkodeblokkkandu skrivePython-kodeakkuratsomienanneneditor.Itilleggkjørerogsåkoden her,ogdufåretoutputunderkodeblokka.TrykkShift+Enterforåkjøre kodenihverblokk.Menpasspå–allkodeniennotebookhengersammen. Deterderforikkelikegyldighvilkenrekkefølgedukjørerkodeni.

Dersomvivilskrivetekst,kanvibruketekstblokkene.Herskriverviiet markeringsspråksomkalles markdown.Dettegjørossistandtilåblandetekst medmatematikk,bilderogannet.Markdownharsinegenkode,mendeter ikkesåmyeåholdestyrpåher.Følgendetabelloppsummererdetviktigste:

Overskrift,nivå1

Overskrift,nivå2 ### Overskrift,nivå3 _tekst_ Kursiv **tekst** Fetskrift ![bildetekst](bilde.jpg) Settinnbilde [tittel](https://www.elg.no) Lenke |tabelltekst|tabelltekst| Tabeller

Dersomviønskeråskrivematematikkiteksten,trengerviålæreosslitt LaTeX (uttales«latekj»eller«latek»ogerikkeåforvekslemedpolymer-

emulsjonenlateks).LaTeXeretdokumentbehandlingsspråksombrukesfor åskrivepentformatertedokumenter,spesieltmedmatematisknotasjon.All matematikkiLaTeX-kodeskrivesmeddollartegnpåhversideavuttrykket. Hvisduønskermatematikkenmidtstilt,kandubrukedobledollartegnpåhver side.EndelnyttigLaTeX-kodefinnerduitabellennedenfor:

Tegn

Forklaring \alpha Greskbokstav,f.eks. α \cdot Gangetegn \rightarrow Høyrepil \rightleftharpoons Kjemisklikevektspil \frac{teller}{nevner} Brøk

Hevettekst Senkettekst \sum_{nedre}ˆ{øvre} Summetegn \int_{nedre}ˆ{øvre} Integral \lim_{x\to\infty} Grenseverdi \left( Storvenstreparentes \right) Storhøyreparentes

Forågrupperesammensatteindekserellereksponenter,ellerannentekst,kan dubrukekrøllparenteser.

1.6 Brukavgenerativkunstigintelligensiprogrammering

Idagharvitilgangtilkraftigeverktøybasertpågenerativkunstigintelligens, foreksempelChatGPTogGithubCopilot,somkanbidrabetydeligtilprogrammering.Disseverktøyenekanværesværtnyttigeforåøkeeffektiviteten oghjelpeossmedåfokuserepådetvitenskapeligeinnholdetistedetforå brukemyetidpåtekniskedetaljersomsyntaksogformatering.Likevelerdet viktigåværeklaroverbådefordeleneogfallgruvenevedåbrukeslikteknologi.

1.6.1 FordelermedgenerativKI

GenerativKIkanhjelpeossmedmangepraktiskeoppgaveriprogrammering. Noenavdeviktigstefordeleneer:

1. Raskfeilsøking. KI-verktøysomGithubCopilotkanofteoppdagefeil ogforeslåkorrigeringermensduskriverkode,noesomreduserertiden dubrukerpååidentifiseresyntaksfeilellerskriveoverflødigkode.Du kanogsåspørregenerativKIomhvasomerfeilmedkodendin.Passda pååværetydeligpåhvasomvarintensjonen,hvordankodenserutog hvilkefeildufår.

2. Effektiviseringavgjentakendekode. GenerativKIkanrasktgenererekodeforvanligeoppgaver,slikatdukanfokuserepådemer komplekseaspektenevedproblemet,sommatematiskeberegningereller naturvitenskapeligesimuleringer.MenpasspåatduforstårhvaKI-en hargjortførduleggertilendamerkompleksitet.

3. Oversettelseavfagligeproblemertilprogramkode. GenerativKI kanhjelpedegmedåoversettekomplekserealfagligeproblemstillinger tilfungerendeprogramkode.Dettekanværespesieltnyttignårdustår fastpåhvordanduskalimplementereenmatematiskmodellellernaturvitenskapeligsimuleringietprogrammeringsspråk.

4. Pedagogiskstøtte. GenerativKIkangiveiledningvedåforklarekonsepterogkodepåenforståeligmåtetilpassetdittnivå.Determedandre ordetverktøysomkanhjelpedegåforståhvordanalgoritmerogmodellerfungerer.Dettekangidypereinnsiktogsparetid,slikatdukan konsentreredegomdetmatematiskeognaturvitenskapeligeinnholdet.

1.6.2 FallgruvervedavhengighetavKI

SelvomgenerativKIkanværeetnyttigverktøy,erdetogsåviktigåvære oppmerksompårisikoenevedåstoleformyepådet:

1. KIkangenererefeilkode. SelvdebesteKI-verktøyenekanprodusere kodesominneholderfeilellergjørnoeannetenduønsker.Deterderfor viktigåalltidvalidereogtestekodengrundig,spesieltnårdetgjelder vitenskapeligesimuleringerellerkomplekseberegninger.GenerativKI kannoengangergiløsningersomserriktigeutvedførsteøyekast,men somikkefungerersomforventetellerønskeligipraksis.Detkanenten skyldesatKI-engjørfeil,elleratduharværtupresisiledetekstendu hargitttilKI-en.

2. Passivlæring. EnannenfarevedåstoleformyepågenerativKIer atdetkanføretilatdublirenpassivbrukeravverktøyene,utenå utvikleendypereforståelseavhvordankodenfaktiskfungerer.Dette kanhemmedinevnetilåløseproblemerpåegenhånd.Programmering erikkebareenferdighetiåfådatamaskinentilåfungere,menogså enprosessmedålæreproblemløsing,logikkogmodellering.Dersomdu virkeligskallærenoe,erdetviktigatduengasjererdegkognitivtmed detduskallære.Ålærenoeforutsetteratduinvestererbådetidog krefter–ensnarveikanderforhindredennelæringen.

3. Manglendekontrolloveregenkode. NårdubrukerKItilågenerere storedeleravkoden,kandumisteoversiktenoverhvordanforskjellige deleravprogrammethengersammen.Dettekangjøredetvanskeligå

feilsøke,utvideellertilpassekodensenere,spesielthvisnoegårgalteller hvismåletmedkodenendrerseg.

1.6.3

BalansenmellombrukavKIogaktivlæring

DeterviktigåfinneengodbalansemellomåbrukegenerativKIsomet verktøyogsamtidigutvikleegneprogrammeringsferdigheter.KIkanhjelpe degmedåeffektiviserearbeidetogfåraskereresultater,mendumåogså sørgeforatduikkeblirforavhengigavdet.Herernoentipsforåoppnå dennebalansen:

•BrukKItilåløsesmå,konkreteproblemerellerforåfåforslagtilhvordandukanløseetproblem,menprøvderetteråskriveomellertilpasse kodenselv.IkkelaKI-enskriveformyefordegomgangen,menvær aktivogdeltakende.

•BrukKI-verktøyenesomenlæringsressurs.Utfordreførstdegselven godstund,ogsettborttrivielletingtilKI-en.Trivielletingkanvære enkelfeilsøking,visualisering,lesingavdataogandreferdighetersom kanværemindreviktige.Detviktigsteeratdufokusererpåproblemløsning,analyseogforståelseavdetmatematiskeognaturvitenskapelige innholdet.

•TadegtidtilåforståkodensomKIgenererer,ogtestogeksperimenter medkoden.Ikkeladegluretilatduforståraltvedåbareleseigjennom koden.

•InngåidialogmedKI-en.Ikkegapoverformye,menspørhellerom småtingomgangen.Stilloppfølgingsspørsmålnårnoeeruklartellerdu ønskerålæremer.

EneffektivmåtedukanbrukegenerativKIpå,eråfåtilbakemeldingpådet dugjør.Hvisduforeksempelharbegyntpåetprogramogikkekommerdeg videre,kandukopieredetteprogrammetinniengenerativKIogforklarehva duhartenktoghvordandukankommevidere.Dettegjøratdufårindividuelle tilbakemeldingerbasertpådetduhargjort,noesomer mye mereffektivtenn åforeksempelbarefåetløsningsforslag.

VedåkombinerebrukenavKImedaktivlæring,kanduoppnåbådeøkt effektivitetogbyggeoppferdighetersomvilhjelpedegtilåblienbedreproblemløserinaturvitenskapogmatematikk.Idennebokavilvigidegnoen oppgaverderdugjernekanbrukeKItilhint,feilrettingellertilbakemelding. MendeteralltidlurtåprøvesåmyesommuligutenKInårenskallæreseg programmeringforførstegang–medetgodtfagliggrunnlagoggodgrunnforståelseblirdubådeenbedreproblemløserogenbedreprogrammerer,både medogutengenerativKI.

2.Tallogvariabler

Læringsmål

Etteråhaarbeidetmeddettekapitteletskaldukunne:

•deklarereogskriveut variabler påulikemåter

•gjøreredeforkjennetegnenetilulike datatyper :heltall,flyttall, strengerogboolskevariabler

•brukedeviktigstearitmetiskeoperatorenetilågjøreberegninger

•brukehensiktsmessige kommentarer ikoden

•tainputfrabrukeren,bådemed input-funksjonenoggjennomkommandolinja/konsollen

•oppretteoggjøreulikeoperasjonerpålister,spesieltleggetilelementer

•importereogbrukefunksjonerfra biblioteker

•lese,forståogbrukefeilmeldinger

Andreas D. Haraldsrud er universitetslektor ved

Kjemisk institutt, Center for Computing in Science

Education og Kompetansesenter for undervisning i realfag og teknologi ved Universitetet i Oslo (UiO). Han underviser i flere emner i kjemi og programmering for naturvitere, og forsker på bruk av simuleringer, modellering og kunstig intelligens i kjemi.

Joakim Sundnes er forsker ved Simula Research Laboratory, og underviser ved Universitetet i Oslo (UiO). Han forsker på bruk av matematiske modeller og beregninger i fysiologi og medisin, og har skrevet flere bøker om programmering og vitenskapelige beregninger.

Programmering for naturvitenskap og matematikk er en innføringsbok i programmering som retter seg mot studenter i matematiske og naturvitenskapelige fag på universiteter og høgskoler. Boka bruker eksempler og teori fra fag som kjemi, biologi, geofag, fysikk og matematikk for å vise hvordan programmering kan være et nyttig verktøy innenfor ulike fagdisipliner.

Gjennom å arbeide med boka lærer du grunnleggende programmering, datahåndtering, statistikk, numeriske metoder og naturvitenskapelig modellering. Boka forbereder deg på videre studier innenfor matematikk og naturvitenskap, der datamaskinen er et uvurderlig verktøy.

ISBN 978-82-15-06664-6

Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.