Aalto-yliopisto, Matematiikan ja Systeemianalyysin laitos

-e

Osittaisdifferentiaaliyhtälöt

1. mlPDE018.tex Määritä sivuiltaan eristetyn sauvan L = 10 lämpötila t = 2 sekunnin kuluttua alkuhetkestä käyttämällä eksplisiittistä menetelmää numeeriseen approksimointiin. Valitse h = 1 ja k = 0.5 Alkulämpötila: f(x) = x − 0.1x^{2} ja sauvan päät pidetään “jäissä”. Tehtävä on siis: u_{t} = u_{xx} (Olkoon lämpöyhtälön vakio = 1.) u(0, t) = 0, u(L, t) = 0 (Reunaehdot) u(x, 0) = f(x) (Alkuehto).

Piirrä alkulämpöätilafunktion f(x) ja ratkaisufunktiota u(x, 2) approksimoivan lämpötilamurtoviivan kuvaaja.

Vihje:

2. mlPDE020.tex Neliöalueessa diskretoidun Laplacen yhtälön matriisi on muotoa:

A = [ B I O … O ; I B I O …; O ... ... ... O ; ⋮ ; O … I B I ; O . . . . . . I B ], missä B = [ −4 1 0 … 0 ; 1 −4 1 0 …; 0 ... ... ... 0 ; ⋮ ; 0 … 1 −4 1 ; 0 . . . . . . 1 −4 ]

ja I on yksikkömatriisi sekä O nollamatriisi.

Jos solmuja on reunat mukaan lukien n×n kpl., niin sisäsolmuja on (n−2)^{2} kpl. Tällöin B, I, O ovat (n−2)×(n−2) ja A on (n−2)^{2}×(n−2)^{2} matriisi. A koostuu siis kolmesta lohkonauhasta, diagonaalilohkoina B ja ylä- ja alanauhalohkoina I.

Tällaisen matriisin muodostamiseen on monta tapaa. Kaikkein helpoin on valmiiksi ohjelmoitu Matlab-funktio delsq. Koska matriisit ovat yleensä suuria, on syytä käsitellä niitä harvoina (engl. sparse), ts. nollia ei talleteta, ainoastaan nollasta poikkeavat indekseineen. Niinpä delsq rakentaa matriisista automaattisesti harvan. Jos haluat katsoa sitä tai sen osaa täytenä, käytä komentoa full. Kokeile:

help delsq
help numgrid
G=numgrid('S',10) % 'S' viittaa alueeseen ``Square''. Muitakin
A=delsq(G)        % on Matlabin numgrid-repertuaarissa.
full(A)
ans(1:10,1:10)

(Yhtä helppoa nelioalueen tapauksessa on käyttää omatekoista lapm-funktiota matlabhakemistossa.) Lopussa muita tapoja:

Kokeile näitä komentoja muutellen sopivasti parametreja. Suorita myös komento help sparfun, saadaksesi katsauksen tärkeään osaan Matlab:ia: harvojen matriisien käsittelyfunktioihin.

Ratkaise tehtävä AV 3 käyttäen 50 × 50-hilaa reunat mukaan lukien, siis 48^{2} × 48^{2}-matriisia A. Tulosvektori kannattaa muotoilla 48 × 48−matriisiksi komennolla U=reshape(u,48,48), jolloin sen voi heti visualisoida komennolla surf(U). Teepä se.

Esitys taululla: Kerro kokeiluistasi ja havainnoista, mitä opit harvoista matriiseista ja miten lopun suorit ja mitä tunnelmia kuva herätti. (Jos joku kohta, kuten kuva ei onnistunut, voit ihmetellä ääneen, miksi.)

Vihje: