9789144160429

Page 1

PY YTH PYTHON PYTHON I ANALYS OCH LINJÄR ALGEBRA EN INTRODUKTION

I ANALYS OCH LINJÄR ALGEBRA EN INTRODUKTION

STAFFAN LUNDBERG

STAFFAN LUNDBERG


KOPIERINGSFÖRBUD Detta verk är skyddat av upphovsrättslagen. Kopiering, utöver lärares och studenters begränsade rätt att kopiera för undervisningsändamål enligt Bonus Copyright Access kopieringsavtal, är förbjuden. För information om avtalet hänvisas till utbildningsanordnarens huvudman eller Bonus Copyright Access. Vid utgivning av detta verk som e-bok, är e-boken kopieringsskyddad. Den som bryter mot lagen om upphovsrätt kan åtalas av allmän åklagare och dömas till böter eller fängelse i upp till två år samt bli skyldig att erlägga ersättning till upphovsman eller rättsinnehavare. Studentlitteratur har både digital och traditionell bokutgivning. Studentlitteraturs trycksaker är miljöanpassade, både när det gäller papper och tryckprocess.

Art.nr 45425 ISBN 978-91-44-16042-9 Upplaga 1:1 © Författaren och Studentlitteratur 2022 studentlitteratur.se Studentlitteratur AB, Lund Formgivning omslag: Francisco Ortega Printed by Eurographic Group, 2022


INNEHÅLL

Förord 5 KAPITEL 1

1.1 1.2

Inledning 7 Allmänna rekommendationer 8

KAPITEL 2

2.1 2.2

Om grafik i Python 35

Grundläggande tvådimensionell grafik 35 Blandade övningsuppgifter 42

KAPITEL 5

5.1 5.2 5.3 5.4

Om arrayer i Python 17

Listor i Python 17 NumPy – ett paket för linjär algebra 17 Vektorer – endimensionella arrayer i NumPy 18 Operationer med vektorer 21 Matriser – tvådimensionella arrayer i NumPy 23 Operationer med matriser 23 Några problemtyper i linjär algebra 26 Blandade övningsuppgifter 31

KAPITEL 4

4.1 4.2

Om grundläggande kommandon i Python 11

Elementära operationer 11 Blandade övningsuppgifter 14

KAPITEL 3

3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8

Om beräkningsmiljön i Python 7

Om symbolisk matematik i Python 43

Grunder 43 Python i envariabelanalysen 49 Python i den linjära algebran 79 Blandade övningsuppgifter 104

© F Ö R FAT TA R E N O C H S T U D E N T L I T T E R AT U R

3


innehåll

KAPITEL 6

Svar till udda övningsuppgifter 115

BILAGA A

Om SciPy – en kortfattad introduktion 131

Sakregister 137

4

© F Ö R FAT TA R E N O C H S T U D E N T L I T T E R AT U R


FÖRORD

På många lärosäten används idag Matlab i specifika kursmoment som ingår i ingenjörernas baskurser i en- och flervariabelanalys respektive linjär algebra. Denna bok har för avsikt att introducera Python som ett fullgott alternativ till Matlab. Bokens innehåll fokuserar på hur Python kan användas för att lösa diverse typexempel i envariabelanalys och linjär algebra. Syftet är inte att ersätta befintlig kurslitteratur i analys och linjär algebra. Man behöver nog konsultera såväl kursböcker och webb som kurskamrater och lärare för att någorlunda framgångsrikt lösa och förstå de presenterade problemen. Målgruppen är främst teknologer på olika ingenjörsprogram på universitet och högskola. Rekommenderade förkunskaper är baskurser i envariabelanalys och linjär algebra på postgymnasial nivå. Boken lämpar sig dessutom utmärkt för självstudier. Boken innehåller ett stort antal exempel med lösningar. Samtliga exempel är framgångsrikt exekverade i utvecklingsmiljön Spyder. En del av de presenterade problemen i framför allt kapitel 5 ingår normalt inte på kortare ingenjörsprogram, och kan därmed betraktas som överkursbetonade för dessa. I en introducerande lärobok ska antalet typexempel med nödvändighet vara begränsade. Jag hoppas dock att presenterade exempel och övningsuppgifter ska kunna ge läsaren inspiration och kreativitet att på egen hand utforska och utöka floran av problemtyper som Python kan bemästra. Det är viktigt att påpeka att lösningarna egentligen är lösningsförslag. Det finns säkert bättre och mer eleganta lösningsalternativ. Avslutningsvis riktar jag ett varmt tack till förläggare Eric Rehn och redaktör Eva Broberg, Studentlitteratur, för uppmuntran, förändringsförslag och goda råd vid arbetet med denna bok. Luleå, maj 2022 Staffan Lundberg

© F Ö R FAT TA R E N O C H S T U D E N T L I T T E R AT U R

5



K APITEL 1

Om beräkningsmiljön i Python

I detta inledande kapitel bekantar vi oss med Pythons beräkningsmiljö.

1.1 Inledning Att Matlab är en högkvalitativ miljö för teknisk-vetenskapliga beräkningar, kan nog de flesta hålla med om. Under senare år har emellertid Python kommit att bli en allvarlig konkurrent till Matlab. Man kan utan tvekan påstå att Python idag har samma beräkningskraft som Matlab. Många välbekanta webbapplikationer, som Dropbox för att ta ett exempel, är skrivna i Python. Som vetenskapligt exempel kan nämnas att datamängden för att skapa den numera världsberömda bilden av ett svart hål (publicerad 2019) processades i Python. Python är ett interpreterande högnivåspråk. Språket skapades 1990 av den nederländske programmeraren Guido van Rossum. Lite kuriosa: van Rossum döpte programspråket efter TV-showen Monty Python’s Flying Circus. Python är ett kraftfullt verktyg, som erbjuder såväl interaktiv exekvering via kommandon, som exekvering via så kallade skript (det vill säga kommandon på fil). Språket är skrivet i öppen källkod, vilket betyder att Python är gratis, till skillnad från det kommersiella Matlab. Python är portabelt och körs i de vanligaste miljöerna: MacOS, Linux och Windows. Python är inte stort i sig, men kan bli enormt omfattande eftersom vi behöver importera diverse moduler, skrivna för vitt skilda tillämpningar. När vi installerar Python, följer (beroende på distribution) ett hundratal moduler med i installationen. För närvarande finns 100 000-tals moduler, fria att ladda ner. Eller också kan vi skriva egna moduler, allt efter behov.

© F Ö R FAT TA R E N O C H S T U D E N T L I T T E R AT U R

7


1 om beräkningsmiljön i python

1.2 Allmänna rekommendationer DISTRIBUTION

Python kan fritt laddas ner från ett flertal så kallade distributioner. Eftersom denna bok huvudsakligen fokuserar på teknisk-vetenskapliga beräkningar, rekommenderar vi Anaconda-distributionen när det är dags att installera Python. Oavsett operativsystem, ska vi välja länken https://www.anaconda.com/download. Där hittar vi relevanta länkar för respektive operativsystem. PROGRAMMERINGSMILJÖ

När vi startar Anaconda, visas Anaconda Navigator. Härifrån startar man många applikationer. Vi rekommenderar utvecklingsmiljön Spyder, som på många sätt liknar Matlab.

FIGUR 1.1

Anaconda Navigator.

Spyder är en kraftfull integrerad utvecklingsmiljö (IDE) skriven i Python, och designad av och för forskare och ingenjörer. Den har en unik kombination av avancerad editering, analys och felsökning. När vi startar Spyder, kommer vi in i arbetsfönstret.

FIGUR 1.2

8

Spyders utvecklingsmiljö.

© F Ö R FAT TA R E N O C H S T U D E N T L I T T E R AT U R


1 om beräkningsmiljön i python

De viktigaste komponenterna i Spyders miljö är: • Editor – där vi skriver och editerar källkod, • IPython Console – ett interaktivt kommandofönster, där vi interagerar med vår källkod, • Plots – som visar funktionsplottar, • Stegvis exekvering av kod, värdefullt vid avlusning (debugging) av koden. Anmärkning 1.1 Vill vi ha ett Matlab-liknande utseende på Spyders arbetsfönster kan vi ordna det med rullgardinsmenyn View → Window layouts → Matlab layout. INTERAKTIVA DOKUMENT

Matlab erbjuder, som bekant, en möjlighet att skriva så kallade live scripts, dvs. interaktiva dokument som kombinerar Matlab-kod med formaterad text, ekvationer och bilder. Dessa dokument skapas i Matlab-miljön Live Editor. På liknande sätt kan vi i Python skapa interaktiva dokument i Pythonmiljön Jupyter Notebook. Vi kommer inte att använda Jupyter i denna bok. För mer information om Jupyter, hänvisar vi till den rikhaltiga information som finns på webben.

© F Ö R FAT TA R E N O C H S T U D E N T L I T T E R AT U R

9



K APITEL 2

Om grundläggande kommandon i Python

I detta kapitel ska vi bekanta oss med grundläggande kommandon i Python. Vi ska arbeta i så kallad interactive mode, vilket innebär att vi skriver våra kommandon i Spyders kommandofönster.

2.1 Elementära operationer Exempel 2.1 Beräkna värdet av uttrycket sin(π/4) + e ln 2

och avrunda resultatet till 2 decimaler. # För att få tillgång till matematiska funktioner # i Python skriver vi In [1]: from math import * # Vi importerar allt från math−modulen In [2]: round(sin(pi/4)+e**log(2),2) # Avrundning till två decimaler Out [2]: 2.71

Anmärkning 2.2 Text som placeras efter # tolkar Python som kommentarer. Python struntar i att evaluera kommentarer. Från Exempel 2.1 noterar vi att Python har, i modulen math, ett stort antal inbyggda matematiska standardfunktioner. En del av dessa funktioner är listade i nedanstående tabell.

© F Ö R FAT TA R E N O C H S T U D E N T L I T T E R AT U R

11


2 om grundläggande kommandon i python

Standardfunktion

Förklaring

factorial(x)

x-fakultet, dvs. x!.

fabs(x) fmod(x,y) sqrt(x) hypot(x,y) exp(x) log(x,[b])

absolutbeloppet av x, dvs. ∣x∣.

rest vid heltalsdivision mellan x och y. √ kvadratroten av x, dvs. x. √ Euklidiska normen , dvs. x 2 + y 2 . exponentialfunktionen av x, dvs. e x .

b-logaritmen av x, dvs. logb x (default b = e).

log10(x)

10-logaritmen av x, dvs. lg x.

pow(x,y)

xy.

sin(x)

sin x där x är i radianer.

cos(x)

cos x där x är i radianer.

tan(x)

tan x där x är i radianer.

degrees(x)

konverterar vinkeln x från radianer till grader.

radians(x)

konverterar vinkeln x från grader till radianer.

asin(x)

arcsin x.

acos(x)

arccos x.

atan(x)

arctan x.

Följande kommandon används vid de vanliga aritmetiska operationerna: + − * / ∗∗

addition subtraktion multiplikation division exponentiering

Python tillämpar den vanliga prioriteringsordningen mellan de aritmetiska operationerna – exponentiering har högst prioritet. VARIABLER I PYTHON

Vi använder variabler för att lagra värden. Med tilldelningssaten lagrar man ett värde i en variabel, enligt nedanstående exempel.

12

© F Ö R FAT TA R E N O C H S T U D E N T L I T T E R AT U R


2 om grundläggande kommandon i python

Exempel 2.3 Beräkna arean av en cirkel med radie 3. In [3]: from math import * In [4]: radie=3

# Tilldelningssats

In [5]: Area=pi*radie**2 # Tilldelningssats In [6]: print(Area) Out [6]: 28.274333882308138

För att få reda på värdet hos någon variabel anger man variabelns namn: In [7]: Area Out [7]:

28.274333882308138

Fördefinierade variabler

Närmevärden till π och e finns fördefinierade i Python: In [8]: pi Out [8]: In [9]: e Out [9]:

3.141592653589793 # Alternativ: exp(1) 2.718281828459045

Normalt är Python inställt på att ge närmevärden med 15 decimaler. Man kan emellertid styra antalet decimaler som skrivs ut med ett speciellt kommando. print("{:.nf}".format(variabel));

# n decimaler

Här följer ett exempel på hur man kan använda detta kommando. Vi beräknade tidigare cirkelarean som lagrades i variabeln Area: In [10]: Area Out [10]: 28.274333882308138 In [11]: print("{:.6f}".format(Area)); Out [11]:

# sex decimaler

28.274334

© F Ö R FAT TA R E N O C H S T U D E N T L I T T E R AT U R

13


2 om grundläggande kommandon i python

NÅGRA TIPS

• Python är skiftlägeskänslig (case-sensitive): area och Area är två skilda variabler. • I Python sparas alla kommandon i en historietabell. Tidigare kommandon kan återfås med piltangenterna ▲ och ▼. Man kan korrigera ett tidigare kommando genom att flytta markören med piltangenterna ◂ och ▸ och sedan ta bort tecknen till vänster om markören med relevant knapptryckning (Del eller BackSpace).

2.2 Blandade övningsuppgifter 1. Beräkna 14,92 − 6,5 , 3,82 13,4 5,13 − 6,22 + 3 +( (b) ), 6 1,6 − 2 5 √ ln 505 . Svaret anges med tre decimaler. (c) 3 134 + 8 π π 2. Definiera och tilldela två variabler u= och v= . Visa att nedanstå4 6 ende trigonometriska identitet är korrekt genom att beräkna värdet av vänster och höger led och sedan göra en jämförelse. (a)

cos(u) + cos(v) = 2 cos (

u+v u−v ) ⋅ cos ( ). 2 2

3. Antag att variabeln x tilldelas värdet 6,5. Beräkna därefter 3x 4 − 5x 3 + 14,7x 2 + 10,1.

4. Antag att variabeln x tilldelas värdet −3. Därefter minskas x med 15. Vilket värde har x efter dessa kommandon? 5. Vilka värden har variablerna a och b efter kommandona? a=4 b=3.5 a=a*b b=a/b**3

6. Beräkna värdet av uttrycket log4 1 024. 11 7. Beräkna resten vid heltalsdivisionen . 4 8. Beräkna sin(arccos 0,3). 9. Bestäm arctan(tan 2). 14

© F Ö R FAT TA R E N O C H S T U D E N T L I T T E R AT U R


2 om grundläggande kommandon i python

10. Bestäm 50-fakultet, 50!.

50 11. Bestäm binomialkoefficienten ( ). 5 12. Avgör vilket av följande tal som är störst. √ √ (a) 3 15 eller 4 37, √ √ (b) 4 11 eller 5 19. 13. Avgör vilket av följande tal som är störst: 910 eller 109 .

© F Ö R FAT TA R E N O C H S T U D E N T L I T T E R AT U R

15


sakregister

punkter, 59 partialbråksuppdelning, 70 Fil.dr Staffan Lundberg har arbetatstationära som universitetslektor symbolisk variabel, 43 planets ekvation, 29 Luleå tekniska universitet. i matematikvid Han har mångårig SymPy, 43 civil- och prioriteringsordning, 12 erfarenhet av undervisningi matematik på diverse högskoleingenjörsprogram. Hans forskningsprofil är operator65 analysen, rotationskropp, 73 teori på speciella funktionsrum i dentalföljd, harmoniska tilldelningssats, 12, 47 med tillämpning på partiella differentialekvationer. SciPy, 131 Författaren har varit en populär föreläsare och har nominerats variabel, 12 serier, 67till teknologkårens pris för bästa lärare. vektor, 18 skript, 7 vektoralgebra, 81 Spyder, 8 vektorkalkyl, 28 standardfunktioner, 11

PY PYTHON I ANALYS OCH LINJÄR ALGEBRA EN INTRODUKTION

På många lärosäten används i dag Matlab i specifika kursmoment som ingår i ingenjörernas baskurser i en- och flervariabelanalys respektive linjär algebra. Denna bok har för avsikt att introducera Python som ett fullgott alternativ till Matlab.

Innehållet i Python i analys och linjär algebra fokuserar på hur Python kan användas för att lösa diverse typexempel i envariabelanalys och linjär algebra. Bokens målgrupp är främst teknologer på olika ingenjörsprogram vid universitet och högskola. Rekommenderade förkunskaper är baskurser i envariabelanalys och linjär algebra på postgymnasial nivå. Python i analys och linjär algebra lämpar sig dessutom utmärkt för självstudier.

Art.nr 45425

138

© F Ö R FAT TA R E N O C H S T U D E N T L I T T E R AT U R

studentlitteratur.se


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.