, S. Chapman) - Matematik | KTH · kommandof onstret, m.h.a. diary lnamn. Vid kommandot diary off...
Transcript of , S. Chapman) - Matematik | KTH · kommandof onstret, m.h.a. diary lnamn. Vid kommandot diary off...
Numeriska Metoder och
Grundlaggande Programmering
for P1, VT2014
Forelasning 1,
Introduktion & MATLABrepetition.
(Kap. 1–2 i “MATLAB Programming for
Engineers“, S. Chapman)
January 20, 2014
Kursansvarig och huvudforelasare: Beatrice FrockForelasningar pa MATLAB-delen: Erik von Schwerin
Undervisning:
Forelasningar Presenterar teori och fardiga program/exempel.Stod till egna studier av kurslitteraturen.
Ovningar Visar problem och foljer losningsprocessen.
Laborationer Ni far problem och ska sjalva arbeta er fram tillderas losning.
Ovningsledare:
Grupp 1 B. F.
Grupp 2 E. v. S.
Grupp 3 Erik Dalsryd
Kursen bestar av:
I numeriska metoder,
I programmering i MATLAB.
Larandemal: “. . . ge . . . insikt om att numeriska metoder ochprogrammeringsteknik behovs for att gora tillforlitliga ocheffektiva simuleringar av tekniska och naturvetenskapligaprocesser baserade pa matematiska modeller.”
Efter kursen kan ni anvanda numeriska metoder for att:Losa olinjara ekvationer: hitta x s.a.
ex2 − cos(3x)− 2 = 0
Losa linjara och icke-linjara ekvationssystem: hitta x , y ,och z s.a.
x − 3y + 2z = 0
−6x + 5y = 3z
4(y − z) = x
x − 3yz = 0
− cos(x) + 5y = 3z
zy = 1/x
Interpolera data: Skatta y(2010) da
t 2007 2009 2011 2013y 432 467 547 693
och minstakvadratanpassning: bestam parametrarna a, b,c , och w i modellfunktionen f (t) = aebx + c cos (wt) givetdata
t 2.1 2.2 2.4 2.5 2.7 2.8f (t) 13.4 16.2 15.1 17.8 19.3 17.6
Ni kommer ocksa kunna avgora om den foreslagnamodellfunktionen ar bra, eller maste forbattras.
Berakna integraler:∫ 10
−3
cos (2x)e−x3
√0.8 + x2
dx
∫ ∞0
1√
x(x2 +
√1 + x3
) dx
och losningar till differentialekvationer: rita y(x) for5 ≤ x ≤ 9 da
d3y
dx3+x cos (yx) = 0.86
(d2y
dx2− dy
dx
)med
y(5) = 12,
y ′(9) = 34,
y”(5) = 56.
Och bedoma noggrannheten i de numeriska svar somberaknats.
Numeriska metoder Efter kursen kan ni:
I identifiera olika matematiska problem och skriva om dempa en form som ar lamplig for numerisk behandling
I valja lamplig numerisk metod for behandling av det givnaproblemet
I motivera val av metod genom att redogora for fordelaroch begransningar
I valja en algoritm som leder till effektiva berakningar ochimplementera den i ett programsprak lampat forberakningar t ex Matlab
I presentera resultaten pa ett relevant och illustrativt satt
I gora tillforlitlighetsbedomning av resultaten
Programmering Efter kursen kan ni:
I bryta ner storre problem i hanterliga delar och skriva egnafunktioner for dessa i programspraket
I anvanda styr- och datastrukturer
I hantera filer pa olika satt, bade vid inlasning och utskrift
I anvanda fardiga funktioner ur programsprakets bibliotek(t ex Matlabs bibliotek) for berakning, visualisering ocheffektiv programmering
I skriva valstrukturerade program i programspraket.
Forelasningarna i programmering inleder kursen, men nikommer ova pa och lara er programmering under hela kursen.
Administrativa punkter:
I kursen ger 9hp, (tentamen 3hp, laborationer 6hp)
I Godkanda delmoment rapporteras i “Rapp” – registera er!
Angaende laborationer:
I Laborationer gors och redovisas i par
I Bilda par i dag och valj terminalovningsgrupp (A eller B)
I Schemalagd tid inte nog – arbeta pa egen tid ocksa!
I Allmanhandledning (for hjalp, ej redovisning)
I Vid godkand lab., “signaturbladet”– ert ansvar!
I Lab. redovisad och godkand i tid ⇒ bonuspoang(Galler ej Lab. 1 och projektet)
I Terminalovningar i CSC:s salar (linux-miljo)
I Linux-konton delas ut 1:a salsovningen, under rasten.Kom ihag legitimation!
MATLABREPETITION
(Las ocksa kapitel 1 och 2 i PEng.)
I Egenskaper hos MATLAB
I Grafiska granssnittets komponenter och deras betydelse
I Variabler, identifierare
I “Tabeller”, (skalarer, vektorere, matriser, . . .)
I Uttryck, tilldelning, . . .
I Operatorer, (aritmetiska, logiska, komponentvisa ellermatrisoperationer)
I Skapa, indexera, omforma tabeller
Egenskaper hos MATLAB
MATLAB ar ett kommersiellt program som finns pa fleraplattformar: Unix, Windows, och Mac OS X.
I kan anvandas interaktivt, som en miniraknare
I ar anpassat for numeriska berakningar
I har manga inbyggda funktioner, speciellt:I metoder for linjar algebra,I metoder for ordinara differentialekvationerI lattanvanda ritfunktioner
I kan byggas ut med egna kommandofiler och funktioner,eller genom tillagg av en s.k. “toolbox”
I anvands vanligtvis interpreterat
Nackdelar: dyrt och exekverar langsammare an kompileradeprogram (t.ex. C och Fortran)
En titt pa Matlabs grafiska miljo
Viktiga delar
I Kommandofonstret: har skriver man kommandon somutfors direkt
I Kommandohistoriken: visar de senaste utfordakommandona
I Man kan aven kopiera allt som skrivs ikommandofonstret, m.h.a. diary filnamn. Vidkommandot diary off avslutas kopieringen.
I redigeraren anvands for att arbeta med kommandofiler,som ar textfiler med flera kommandon; kan aven redigerasfristaende textredigerare som Emacs
I faltet Workspace visar variabelminnet
Tabeller
I MATLAB star for MATrix LABoratory, utvecklat for attundervisa linjar algebra
I Med matris brukar man mena en tabell av dimension 2(rader och kolumner)
I Matlabs grundlaggande datastrukturer ar tabeller igenerellt antal dimensioner
I Specialfall:I Skalar: ses som tabell med en rad och en kolum [1,1]I Kolumnvektor: tabell med flera rader och en kolum[m,1]
I Radvektor: tabell med en rad och flera kolumner [1,n]I Matris: [m,n]
I Tabeller av hogre dimension kan ocksa skapas (andvandsinte lika ofta)
Variabler
I En matris som man vill spara lagras i en variabel
I En variabel ges ett namn (identifierare) sa att man kankomma at den senare
I Kan ses som en namngiven plats i datorns minne
I Identifierare kan innehalla A–Z, a–z, siffror, och . (Forstatecknet bokstav!)
I Stora (versaler) och sma (gemena) bokstaver tolkas somolika tecken
I Konvention: anvand variabelnamn med enbartVERSALER for s.k. globala variabler, men inte for andravariabler
Uttryck och tilldelning
I Skriv en formel i kommandofonstret och tryck “enter” saberaknas uttryckets varde, vardet tilldelas variabeln ans,och variabeln skrivs ut.
I Vill man spara vardet i en annan variabel anvander manen tilldelningssats, var = uttryck, t.ex.>> a = sqrt(2); % ; undertrycker utskriften
I Det ar vardet ar hogerledet som kopieras in i variabeln ivansterledet.
I Behover man mer an en rad for ett uttryck avslutar manraden med ... och fortsatter pa nasta rad.
Variabler
I Variabler definierade i kommandofonstret (eller kordakommandofiler) finns i variabelminnet eller“workspace”,”arbetsplats”
I who ger information om variablerna i variabelminnet,(whos extra information)
I clear rensar variabelminnet
I Det finns fordefinierade variabler, t.ex. ans, pi, i, j,eps, realmin, realmax, Inf, NaN
I Ni kan andra deras varden, men de aterstalls vid clear
I Identifierare i variabelminnet “doljer” inbyggdafunktioner: t.ex.>> sin = 3 % Doljer sinus-funktionen>> sin(1) % Returnerar vardet 3>> sin(2) % Ger fel, variabeln sin har ett element
Skapa tabeller
Man skapar en tabell genom att rakna upp, mellanhakparanteser, elementen. Radbryte eller “;” separerar raderoch blanktecken eller “,” separerar kolumnerna.>> A = [1 2; 3 4]; A = [5 6; 7 8];
>> c = [9 10]; d = [11;12]; e=[13 14];Man kan ocksa sammanfoga tabeller>> f = [c; e]
lagga till nya rader eller kolumner
Speciella tabeller:
I b:s:e
I linspace och logspace
I ones och zeros
I eyes
Fler satt att modifiera tabeller, eller komma at delar av dem:
I indexering, ger enstaka element eller subtabeller
I A(:)
I reshape
I vektorer genom stegning
Operatorer
Aritmetiska operatorer i Matlab:+,- addition, subtraktion* multiplikation/ division (hogerdivision) 6/3 ar 2\ vansterdivision 6\3 ar 0.5^ exponentiering, “upphojt till”, 3^2 ar 9
Matrisoperationer som i linjar algebraFor matriser finns ocksa elementvisa operationer; da mastematriserna ha samma storlek, eller en vara skalar+,- elementvis addition, subtraktion.* elementvis multiplikation./ elementvis division.\ elementvis vansterdivision.^ elementvis exponentiering
Icke elementvisa operatorer
Om ena operanden ar skalar fungerar operatorerna elementvis.C=A*B matrismultiplikation. A och B har dimension
hogst 2; antal kolumner i A = antal rader i B.C=A/B matrisdivision, loser linjart ekvationssystem, C = AB−1
C=A\B matrisdivision, loser linjart ekvationssystem, C = A−1BC=A.’ transponering Cjk = Akj
C=A’ komplexkonjugering Cjk = conj(Akj)C=A^p for kvadratisk matris A och skalar p,
C = A*A*. . .*A, p ggr
Logiska operatorer
Vardet 0 tolkas som falskt; alla andra som sant, menresultatet “sant” lagras som 1.< elementvis mindre an<= elementvis mindre an eller lika med> elementvis storre an>= elementvis storre an eller lika med== elementvis lika med~= elementvis skilt fran& elementvis och| elementvis eller~ elementvis icke&& och med “genvagsutvardering”|| eller med “genvagsutvardering”
Prioritet
1. ^,.^,’,.’
2. +,-,~ (med en operand, unara)
3. *,.^*,/,./,\,.\4. +,- (binara operationer)
5. :
6. ==,~=,<,<=,>,>=
7. &
8. |
9. &&
10. ||
Paranteser anvands for att andra ordningen
Polynom
Lagras som en koefficientvektor med hogstagradskoefficientenforst och det finns speciella funktioner for polynom. Ex.p(x) = 2x3 + 3
2x + π
>> p = [2 0 1.5 pi];
>> val = polyval(p,1)
>> val = polyval(p,[1 2; 4 8])
>> rot = roots(p)
Datatyper
I Data lagras som bitfoljder i datorns minne. Likadanabit-foljder maste kunna tolkas pa olika satt i olikasammanhang.
I En datatyp i Matlab kan ses som ett satt att lagra dataeller tolka en variabels varde.
I Manga andra programmeringssprak kraver att anvandarenanger vilken sorts datatyp en variabel ska innehalla.
I Matlab ar mer “forlatande” och tolkar sjalv datatypen vidtilldelningen.
I I ett Matlab-programm kan samma variabel ha olikadatatyper vid olika tillfallen
Datatyper
Alla variabler hittils har varit av datatypen double som armatlabs standard datatyp for numeriska varden. Andradatatyper ar t.ex.
I single flyttal med halften sa manga bitar (mindreminnesatgang, lagre precision)
I int8 heltal mellan -128 och 127
I char tecken
I fler exempel senare i kursen
Tilldela variabler av datatypen char genom att anvanda
citationstecken>> c = ’a’;
>> d = ’b’;“Strangar” i Matlab ar
tabeller av datatypen char och man kan indexera in i dem
(och utfora andra matrisoperationer)>> e = [c d];
>> f = [c;d];
eval
Formler kan lagras som text. Exempel:1 + x + x2 + . . . + xK = xK+1−1
x−1>> str = ’sK = (x^(K+1)-1)/(x-1)’;
>> x = 2; K = 10;
>> eval(str)
sK =
2047
I morgon
Styrstrukturer och programmeringsteknik