11.6 Metoda konˇcnih elementov - fmf.uni-lj.siplestenjak/Vaje/NaFgg/... · 11.6 Metoda konˇcnih...

27
11.6 Metoda konˇ cnih elementov Obravnavali bomo PDE oblike ∂x p(x, y ) ∂u ∂x + ∂y q (x, y ) ∂u ∂y + r (x, y )u(x, y )= f (x, y ), kjer je (x, y ) Ω in je Ω obmoˇ cje v ravnini z robom S . Rob naj bo razdeljen na dva dela, S 1 in S 2 . Na delu S 1 imamo robni pogoj oblike u(x, y )= g (x, y ), na delu S 2 pa mora reˇ sitev zadoˇ cati p(x, y ) ∂u ∂x (x, y ) cos ϕ 1 + q (x, y ) ∂u ∂x (x, y ) cos ϕ 2 + g 1 (x, y )u(x, y )= g 2 (x, y ), kjer sta ϕ 1 in ϕ 2 kota zunanje normale v toˇ cki (x, y ) S . ϕ 1 ϕ 2 S Bor Plestenjak - Numeriˇ cna analiza 2005/06

Transcript of 11.6 Metoda konˇcnih elementov - fmf.uni-lj.siplestenjak/Vaje/NaFgg/... · 11.6 Metoda konˇcnih...

  • 11.6 Metoda končnih elementov

    Obravnavali bomo PDE oblike

    ∂x

    (p(x, y)

    ∂u

    ∂x

    )+

    ∂y

    (q(x, y)

    ∂u

    ∂y

    )+ r(x, y)u(x, y) = f(x, y),

    kjer je (x, y) ∈ Ω in je Ω območje v ravnini z robom S. Rob naj bo razdeljen na dvadela, S1 in S2. Na delu S1 imamo robni pogoj oblike u(x, y) = g(x, y), na delu S2 pa

    mora rešitev zadoščati

    p(x, y)∂u

    ∂x(x, y) cos ϕ1 + q(x, y)

    ∂u

    ∂x(x, y) cos ϕ2 + g1(x, y)u(x, y) = g2(x, y),

    kjer sta ϕ1 in ϕ2 kota zunanje normale v točki (x, y) ∈ S.

    ϕ1

    ϕ2S

    Bor Plestenjak - Numerična analiza 2005/06

  • Minimiziranje funkcionala

    Denimo, da sta p, q enkrat zvezno odvedljivi, da sta r, d zvezni na Ω in da velja

    p(x, y) > 0, q(x, y) > 0, r(x, y) ≤ 0 in g1(x, y) > 0. Potem rešitev podane PDEminizira funkcional

    I(w) =

    ∫∫Ω

    1

    2

    [p(x, y)

    (∂w

    ∂x

    )2+ q(x, y)

    (∂w

    ∂x

    )2− r(x, y)ω2

    ]dxdy

    +

    ∫∫Ω

    f(x, y)wdxdy +

    ∫S2

    [−g2(x, y)w +

    1

    2g1(x, y)w

    2

    ]dS

    po vseh funkcijah w, ki so dvakrat zvezno odvedljive in zadoščajo robnemu pogoju na S1.

    Pri metodi končnih elementov ǐsčemo aproksimacijo za rešitev tako, da minimiziramo

    funkcional I po končno dimenzionalnem razredu funkcij, podobno kot Rayleigh-Ritzova

    metoda za robne probleme.

    Bor Plestenjak - Numerična analiza 2005/06

  • Triangulacija

    Prvi korak v metodi končnih elementov je razdelitev območja na končno število manǰsih

    odsekov oz. elementov pravilnih oblik. Tu se uporabljajo bodisi trikotniki ali pa pravokotniki.

    x

    y

    S

    Denimo, da smo razdelili območje s trikotnimi elementi v regularno mrežo, kar pomeni, da

    se dva trikotnika lahko dotikata le v eni točki, vzdolž celotne stranice ali pa nikjer.

    Bor Plestenjak - Numerična analiza 2005/06

  • Aproksimacija

    Razred funkcij s katerimi aproksimiramo rešitev, je množica odsekoma polinomskih funkcij

    omejene stopnje v x in y. Polinomi iz različnih elementov morajo biti združeni tako, da bo

    zlepek zvezen in da bosta njegov prvi in drugi odvod integrabilna ali zvezna na celotnem

    območju. V primeru trikotnih elementov se ponavadi uporabljajo linearni polinomi oblike

    φ(x, y) = a + bx + cy,

    za pravokotnike pa bilinearni polinomi

    φ(x, y) = a + bx + cy + dxy.

    Denimo, da smo razdelili območje s trikotno regularno mrežo. Potem ǐsčemo aproksimacijo

    oblike

    φ(x, y) =

    m∑i=1

    γiφi(x, y),

    kjer so φ1, φ2, . . . , φm linearno neodvisni kosoma linearni polinomi. Nekatere izmed

    konstant γ1, . . . , γm (denimo γn+1, . . . , γm) so že določene z robnimi pogoji, preostale

    parametre γ1, . . . , γn pa porabimo za to, da minimiziramo funkcional I.

    Bor Plestenjak - Numerična analiza 2005/06

  • Bazne funkcije

    Točke v triangulacijski mreži označimo z v1 do vm. Za bazne funkcije vzamemo kosoma

    linearne polinome φ1, . . . , φm. Vsak φi je zlepek linearnih polinomov, ki ima v točki vivrednost 1, v vseh drugih točkah mreže pa ima vrednost 0.

    Če mrežo sestavljajo trikotniki T1, . . . , Tk, potem ima φi na vsakem Tj obliko

    φi(x, y) = φij(x, y) = aij + bijx + cijy.

    Torej je φi neničelen le na tistih trikotnikih Ti, ki imajo vi za oglǐsče.

    1

    vi

    Bor Plestenjak - Numerična analiza 2005/06

  • Bazne funkcije

    Denimo, da je trikotnik Tk sestavljen iz točk v1, v2 in v3. Ǐsčemo koeficiente polinoma

    φ1k(x, y) = a1k + b1kx + c1ky,

    za katerega naj velja φ1k(v1) = 1 in φ1k(v2) = φ1k(v3) = 0. Dobimo jih iz linearnega

    sistema 1 x1 y11 x2 y21 x3 y3

    a1kb1kc1k

    = 10

    0

    .

    Bor Plestenjak - Numerična analiza 2005/06

  • Aproksimacija

    Ko v funkcional I vstavimo φ(x, y) =m∑

    i=1

    γiφi(x, y), dobimo

    I(φ) = I

    [m∑

    i=1

    γiφi

    ]

    =

    ∫∫Ω

    12

    p(x, y)[

    m∑i=1

    γi∂φi

    ∂x(x, y)

    ]2+ q(x, y)

    [m∑

    i=1

    γi∂φi

    ∂y(x, y)

    ]2

    −r(x, y)[

    m∑i=1

    γiφi(x, y)

    ]2 + f(x, y)m∑

    i=1

    γiφi(x, y)

    dydx+

    ∫S2

    −g2(x, y)m∑

    i=1

    γiφi(x, y) +1

    2g1(x, y)

    [m∑

    i=1

    γiφi(x, y)

    ]2 dS.Minimum bo dosežen, ko bodo vsi parcialni odvodi I(φ) po γ1, . . . , γn enaki 0.

    Bor Plestenjak - Numerična analiza 2005/06

  • Linearni sistem

    Iz enačb∂I

    ∂γk(φ) = 0 za k = 1, . . . , n dobimo linearni sistem

    Ac = b,

    kjer je

    c = [γ1 · · · γn]T ,za elemente A = [αij] in b = [βi] pa velja

    αij =

    ∫∫Ω

    [p(x, y)

    ∂φi

    ∂x(x, y)

    ∂φj

    ∂x(x, y) + q(x, y)

    ∂φi

    ∂y(x, y)

    ∂φj

    ∂y(x, y)

    −r(x, y)φi(x, y)φj(x, y)]dxdy +

    ∫S2

    g1(x, y)φi(x, y)φj(x, y)dS

    za i, j = 1, . . . , n in

    βi = −∫∫

    f(x, y)φi(x, y)dxdy +

    ∫S2

    g2(x, y)φi(x, y)dS −m∑

    k=n+1

    αikγk.

    Bor Plestenjak - Numerična analiza 2005/06

  • Poenostavitev

    Integrale je potrebno računati le po tistih trikotnikih, kjer so bazne funkcije neničelne. To

    pa pomeni, da so v matriki A neničelni le tisti elementi αij za katere velja, da točki vi in

    vj ležita v istem trikotniku Tk. Če je i 6= j, se potem npr. izračun

    I =

    ∫∫Ω

    p(x, y)∂φi

    ∂x(x, y)

    ∂φj

    ∂x(x, y)dxdy

    spremeni v

    I =

    ∫∫Tk

    p(x, y)bikbjkdxdy,

    v primeru i = j pa dobimo

    I =∑

    k, vi∈Tk

    ∫∫Tk

    p(x, y)b2ikdxdy.

    Bor Plestenjak - Numerična analiza 2005/06

  • 11.7 Reševanje robnih problemov in PDE v Matlabu

    V Matlabu imamo naslednja orodja za reševanje robnih problemov in parcialnih diferencialnih

    enačb:

    • za robne probleme imamo metodo bvp4c, ki uporablja kolokacijsko metodo,• za eliptične PDE imamo nekaj funkcij, ki nam olaǰsajo uporabo metode končnih diferenc,• za parabolično-eliptične PDE imamo metodo pdepe, ki uporablja integracijo po časovnih

    nivojih,

    • za splošne PDE imamo dodaten paket Partial Differential Equation Toolbox, ki uporabljametodo končnih elementov in kjer imamo med drugim grafično orodje pdetool.

    Bor Plestenjak - Numerična analiza 2005/06

  • 11.7.1 Reševanje robnih problemov z bvp4c

    Rešujemo robne probleme, ki jih zapǐsemo v obliki

    d

    dxy(x) = f(x, y(x), p), g(y(a), y(b), p) = 0.

    Tu je y(x) vektor, f je podana funkcija x in y, ki opisuje diferencialno enačbo. Vektor p je

    neobvezen in opisuje neznane parametre, ki jih ǐsčemo. Rešitev ǐsčemo na intervalu [a, b],

    s funkcijo g pa podamo robne pogoje. Metoda bvp4c potrebuje tudi začetni približek zarešitev y(x).

    Oblika za klic bvp4c je sol=bvp4c(@odefun,@bcfun,solinit,options), pri čemer:

    • funkcija odefun poda diferencialno enačbo, oblika je yodv = odefun(x,y);• funkcija bcfun poda robne pogoje (vrne ostanek, ki mora biti pri izpolnjenih pogojih 0),

    oblika je res = bcfun(ya,yb);

    • solinit je struktura, s katero podamo začetni približek, strukturo zgradimo s pomožnofunkcijo bvpinit kot solinit = bvpinit(linspace(a,b,n),@initf), kjer je initffunkcija oblike y = initf(x), s katero podamo robne pogoje;

    • options je neobvezen argument, kjer lahko nastavimo delovanje metode, za nastavitveuporabimo metodo bvpset.

    Bor Plestenjak - Numerična analiza 2005/06

  • Zgled 1 za bvp4c

    Presek oblike kapljice vode na ravni podlagi je podan z rešitvijo robnega problema

    u′′(x) + (1− u(x))(1 + u′(x)2)3/2 = 0, u(−1) = 0, u(1) = 0.

    Za uporabo bvp4c to spremenimo v sistem enačb prvega reda:

    y′1(x) = y2(x),

    y′2(x) = (y1(x)− 1)(1 + y2(x)

    2)3/2

    ,

    Za začetni približek vzamemo y1(x) =√

    1− x2 in y2(x) = −x/(0.1 +√

    1− x2). Zapǐsemo

    function yodv = kaplja(x,y)yodv = [ y(2); (y(1)-1)*((1+y(2)^2)^(3/2)) ];

    function res = kapljarp(ya,yb)res = [ ya(1); yb(1) ];

    function y = kapljainit(x)y = [ sqrt(1-x^2); -x/(0.1+sqrt(1+x^2)) ];

    resinit = bvpinit(linspace(-1,1,20), @kapljainit);res = bvp4c(@kaplja, @kapljarp, resinit);plot(res.x, res.y(1,:))

    Bor Plestenjak - Numerična analiza 2005/06

  • Zgled 2 za bvp4c

    Ǐsčemo lastno vrednost λ, pri kateri ima robni problem

    y′′(x) + (λ− 10 cos(2x))y(x) = 0, y′(π) = 0, y′(0) = 0

    neničelno rešitev. Ker lahko vsako tako rešitev pomnožimo s poljubnim skalarjem, dodamo še tretji pogoj,npr. y(0) = 1. Podobno kot v preǰsnjem primeru to spremenimo v sistem enačb prvega reda:

    y′1(x) = y2(x), y

    ′2(x) = (10 cos(2x)− λ)y1(x).

    Za začetni približek vzamemo y(x) = cos(4x) in λ = 15. Zapǐsemo

    function yodv = mth(x,y,lambda)yodv = [ y(2); (10*cos(2*x)- lambda)*y(1) ];

    function res = mthrp(ya,yb,lambda)res = [ ya(2); yb(2); ya(1)-1 ];

    function y = mthinit(x)y = [ cos(4*x); -4*sin(4*x) ];

    resinit = bvpinit(linspace(0,pi,10), @mthinit, 15);res = bvp4c(@mth, @mthrp, resinit);fprintf(’Lastna vrednost je %7.3f.\n’, res.parameters)plot(res.x, res.y(1,:))

    Bor Plestenjak - Numerična analiza 2005/06

  • Zgled 3 za bvp4c

    Naslednje enačbe opisujejo pretok v dolgem navpičnem kanalu, kjer je tekočina vbrizgana skozi eno izmedstranic:

    f′′′ − R

    [(f′)2 − ff ′′

    ]+ RA = 0,

    h′′

    + Rfh′+ 1 = 0,

    θ′′

    + Pfθ′

    = 0,

    pri čemer je R Raynoldsovo število in P = 0.7R. Ker parameter A spada med neznanke, imamo 8 robnihpogojev:

    f(0) = f′(0) = 0, f(1) = 1, f

    ′(1) = 0,

    h(0) = h(1) = 0,

    θ(0) = 0, θ(1) = 1.

    Problem bi radi rešili pri R = 10000, vendar nimamo nobenih dobrih začetnih približkov. Zato uporabimo

    metodo zveznega nadaljevanja. Najprej problem rešimo za R = 100, potem to uporabimo kot začetni

    približek za R = 1000, tega pa za R = 10000.

    Bor Plestenjak - Numerična analiza 2005/06

  • Matlab implementacija za zgled 3function demopretok

    R = 100; resinit = bvpinit(linspace(0,1,10), ones(7,1), 1);res1 = bvp4c(@pretok, @pretokbc, resinit);fprintf(’Parameter A pri R=100 : %7.4f\n’,res1.parameters)

    R = 1000; res2 = bvp4c(@pretok, @pretokbc, res1);fprintf(’Parameter A pri R=1000 : %7.4f\n’,res2.parameters)

    R = 10000; res3 = bvp4c(@pretok, @pretokbc, res2);fprintf(’Parameter A pri R=10000 : %7.4f\n’,res3.parameters)plot(res1.x, res1.y(2,:), res2.x, res2.y(2,:), res3.x, res3.y(2,:));

    function yodv = pretok(x,y,A)P = 0.7*R;yodv = [ y(2); y(3); R*(y(2)^2 - y(1)*y(3) - A);

    y(5); -R*y(1)*y(5) - 1; y(7); -P*y(1)*y(7) ];end

    function res = pretokbc(ya,yb,A)res = [ya(1); ya(2); yb(1) - 1; yb(2); ya(4); yb(4); ya(6); yb(6) - 1];

    end

    end

    Bor Plestenjak - Numerična analiza 2005/06

  • 11.7.2 Reševanje PDE z pdepe

    Rešujemo robne probleme, ki jih lahko zapǐsemo v obliki

    c(x, t, u, ux)ut = x−m ∂

    ∂x(x

    mf(x, t, u, ux)) + s(x, t, u, ux),

    kjer je u funkcija spremenjivk x in t. Za m velja, da mora biti enak 0, 1 ali 2. Rešitev

    ǐsčemo za a ≤ x ≤ b in t0 ≤ t ≤ tf . Začetni pogoj je x(x, t0) = u0(x), robna pogojapri x = a oz. x = b v trenutku t pa sta

    p(x, t, u) + q(x, t)f(x, t, u, ux) = 0.

    Oblika za klic je sol=pdepe(m,pdefun,icfun,bcfun,xmesh,tspan), pri čemer:

    • m je ekponent pri x−m, ki mora biti 0,1, ali 2;• funkcija pdefun poda diferencialno enačbo, oblika je [c,f,s] = pdefun(x,t,u,ux);• funkcija icfun poda začetni pogoj, oblika je res = icfun(x);• funkcija bcfun poda robne pogoje, oblika je [pa,qa,pb,qb] = bcfun(xa,ua,xb,ub,t),

    kjer so pa,qa,pb,qb po vrsti vrednosti p in q iz robnega pogoja pri x = a oz. x = b;

    • xmesh je podana mreža za x, velja xmesh(1)=a, . . ., xmesh(end)=b;• tmesh je podana mreža za t, velja tmesh(1)=t0, . . ., tmesh(end)=tf .

    Bor Plestenjak - Numerična analiza 2005/06

  • Zgled 1 za pdepe

    Rešujemo parabolični problem ut = uxx na območju x ∈ [0, 1], t ≥ 0, robna pogoja stau(0, t) = 0, u(1, t) = 1, začetni pogoj pa u(x, 0) = 2x/(1 + x2).

    To lahko prevedemo na obliko

    c(x, t, u, ux)ut = x−m ∂

    ∂x(x

    mf(x, t, u, ux)) + s(x, t, u, ux),

    če vzamemo m = 0, c(x, t, u, ux) = 1, f(x, t, u, ux) = ux in s(x, t, u, ux) = 0.

    Tudi robne pogoje lahko podamo v obliki

    p(x, t, u) + q(x, t)f(x, t, u, ux) = 0,

    če vzamemo pa(x, t, u) = u, qa(x, t) = 0, pb(x, t, u) = u− 1, qb(x, t) = 0.

    Bor Plestenjak - Numerična analiza 2005/06

  • Matlab implementacija za zgled 1

    function [c,f,s] = wavepde(x,t,u,ux)c = 1;f = ux;s = 0;

    function [pa,qa,pb,qb] = wavebc(xl,ul,xr,ur,t)pa = ul;qa = 0;pb = ur-1;qb = 0;

    function y = waveini(x)y = 2*x/(1+x^2);

    m = 0;x = linspace(0,1,20);t = linspace(0,2,10);u = pdepe(m,@wavepde,@waveini,@wavebc,x,t);surf(x,t,u);

    Bor Plestenjak - Numerična analiza 2005/06

  • Zgled 2 za pdepe

    Rešujemo sistem dveh enačb

    ut =1

    2uxx +

    1

    1 + v2, vt =

    1

    2vxx +

    1

    1 + u2

    na območju x ∈ [0, 1], t ∈ [0, 0.2], robni pogoji so

    ux(0, t) = ux(1, t) = vx(0, t) = vx(1, t) = 0,

    začetna pogoja pa

    u(x, 0) = 1 +1

    2cos(2πx), v(x, 0) = 1−

    1

    2cos(2πx).

    To zapǐsemo v obliki c(x, t, u, ux)ut = x−m ∂

    ∂x (xmf(x, t, u, ux)) + s(x, t, u, ux) z

    m = 0, c(x, t, u, ux) =

    [11

    ], f(x, t, u, ux) =

    1

    2ux, s(x, t, u, ux) =

    [1/(1 + u22)

    1/(1 + u21)

    ].

    Robne pogoje podamo v obliki p(x, t, u) + q(x, t)f(x, t, u, ux) = 0 z

    pa(x, t, u) = pb(x, t, u) =

    [00

    ], qa(x, t, u) = qb(x, t, u) =

    [11

    ].

    Bor Plestenjak - Numerična analiza 2005/06

  • Matlab implementacija za zgled 2

    function [c,f,s] = sisde(x,t,u,ux)c = [ 1; 1 ];f = ux/2;s = [ 1/(1+u(2)^2); 1/(1+u(1)^2) ];

    function [pa,qa,pb,qb] = sisbc(xl,ul,xr,ur,t)pa = [0; 0];qa = [1; 1];pb = [0; 0];qb = [1; 1];

    function y = sisini(x)y = [ 1+0.5*cos(2*pi*x); 1-0.5*cos(2*pi*x)];

    m = 0;x = linspace(0,1,20);t = linspace(0,0.2,10);u = pdepe(m,@sispde,@sisini,@sisbc,x,t);u1 = u(:,:,1); u2 = u(:,:,2);sublot(221); surf(x,t,u1);sublot(222); surf(x,t,u2);

    Bor Plestenjak - Numerična analiza 2005/06

  • Zgled 3 za pdepe

    Rešujemo Fischerjevo enačbout = uxx + u(1− u)

    na območju x ∈ R, t ≥ 0, robni pogoji so

    limx→−∞

    u(x, t) = 1, limx→∞

    u(x, t) = 0.

    Mi vzamemo x ∈ [−50, 50] in na robu ux(±50, t) = 0.

    Za začetni pogoj vzamemo

    u(x, 0) =

    { 14 cos

    2(πx10 ), |x| ≤ 5,0, |x| > 5.

    To zapǐsemo v obliki c(x, t, u, ux)ut = x−m ∂

    ∂x (xmf(x, t, u, ux)) + s(x, t, u, ux) z

    m = 0, c(x, t, u, ux) = 1, f(x, t, u, ux) = ux, s(x, t, u, ux) = u(1− u).

    Robne pogoje podamo v obliki p(x, t, u) + q(x, t)f(x, t, u, ux) = 0 z

    pa(x, t, u) = pb(x, t, u) = 0, qa(x, t, u) = qb(x, t, u) = 1.

    Bor Plestenjak - Numerična analiza 2005/06

  • Matlab implementacija za zgled 3

    function [c,f,s] = fisherde(x,t,u,ux)c = 1;f = ux;s = u*(1-u);

    function [pa,qa,pb,qb] = fischerbc(xl,ul,xr,ur,t)pa = 0;qa = 1;pb = 0;qb = 1;

    function y = fischerini(x)y = 0.25*(cos(0.1*pi*x).^2).*(abs(x)

  • 11.7.3 Uporabni ukazi za eliptične PDE in metodo končnih diferenc

    Nekaj uporabnih ukazov:

    • del2(U) izračuna diskretni Laplaceov operator na matriki U ,• delsg(G) vrne matriko diskretnega Laplaceovega operatorja za območje, podano z

    indeksi elementov G,

    • numgrid(obl,n) vrne matriko indeksov točk v mreži. Število točk je n, možnosti zaobliko območja so med drugim: ’S’: cel kvadrat, ’L’: oblika črke L, 3/4 celotnegakvadrata; ’C’ - podobno kot prej, le da ima v 4-tem kvadrantu četrt kroga; ’D’ -enotski krog; ’A’ - kolobar; ’H’ - kardioida, . . ..

    Bor Plestenjak - Numerična analiza 2005/06

  • Zgled 1 za eliptične PDE in metodo končnih diferenc

    Rešujemo Poissonovo PDE ∆u = 2 na območju oblike črke L: D = [−1, 1] × [−1, 1] brez 3. kvadranta,z robnimi pogoji u(x, y) = 0 na ∂D.

    Rešitev bomo predstavili z matriko 41× 81, v kateri bodo točke z razmikom h = 1/40.

    % 1. Sestavimo mrežo, G je matrika indeksov točk iz mrežem = 40; h = 1/m; G = numgrid(’L’,2*m+1);

    % 2. Izračunamo matriko A diskretnega Laplaceovega operatorjaA = -delsq(G); N = sum(A(:)>0)

    % 3. Sestavimo vektor desne strani, ki ima vse elemente enake 2b = 2*ones(N)*h^2;

    % 4. Rešimo sistem in iz vektorja napolnimo elemente mrežeu=A\b; U = A; U(G>0) = full(u(G(G>0)));

    % 5. Rešitev lahko narišemo

    mesh(U)

    Bor Plestenjak - Numerična analiza 2005/06

  • Zgled 2 za eliptične PDE in metodo končnih diferenc

    Rešujemo Laplaceovo PDE ∆u = 0 na območju oblike črke L: D = [−1, 1] × [−1, 1] brez 3. kvadranta,kjer ima u na robu zgoraj in desno vrednosti 10, sicer pa 0.

    Rešitev bomo predstavili z matriko 101× 101, v kateri bodo točke z razmikom h = 1/50.

    % 1. Sestavimo mrežo, G je matrika indeksov točk iz mrežem = 50; h = 1/m; G = numgrid(’L’,2*m+1);

    % 2. Izračunamo matriko A diskretnega Laplaceovega operatorjaA = -delsq(G); N = sum(A(:)>0)

    % 3. Sestavimo vektor desne strani. Ustrezna indekse preberemo iz matrike Gb = zeros(N,1);b(G(2,2:end-1)) = 10;b(G(2:end-1,end-1)) = b(G(2:end-1,end-1)) + 10;

    % 4. Rešimo sistem in iz vektorja napolnimo elemente mrežeu=A\b; U = G; U(G>0) = full(u(G(G>0)));

    % 5. Rešitev lahko narišemo

    mesh(U)

    Bor Plestenjak - Numerična analiza 2005/06

  • Zgled 3 za eliptične PDE in metodo končnih diferenc

    Za membrano oblike črke L: D = [−1, 1] × [−1, 1] brez 3. kvadranta, kjer so vrednosti na robu fiksne inenake 0, ǐsčemo prve tri lastne frekvence in lastne funkcije. Približke dobimo iz lastnih vrednosti in lastnihvektorjev diskretnega Laplaceovega operatorja. Problem, ki ga rešujemo, je ∆u = λu, u|∂D = 0.

    m = 150; h = 1/m;A = delsq(numgrid(’L’,2*m+1))/h^2;lambda = eigs(A,5,0)

    Dobimo [9.64225 15.19669 19.73849 29.51944 31.91689].

    Prave vrednosti so [9.63972 15.19725 19.73921 29.52148 31.91264].

    Kljub temu, da delamo z matriko velikosti 66901 × 66901, so približki točni le na dve decimalki. Ker jematrika razpřsena, lahko s posebnimi algoritmi za razpřsene metode vseeno hitro izračunamo lastne pare.

    Bor Plestenjak - Numerična analiza 2005/06

  • 11.7.4 Paket PDE Toolbox

    S pomočjo dodatnega paketa PDE Toolbox lahko z metodo končnih elementov rešujemo

    PDE različnih tipov na spošnih območjih. Območja lahko celo grafično skonstruiramo.

    Orodje poženemo z ukazom pdetool.

    Delo z orodjem pdetool lahko razdelimo v naslednje korake:

    1. Določitev območja Ω. Območje sestavimo z unijo ali komplementi območij pravokotne,

    eliptične ali poligonske oblike.

    2. Določitev robnih pogojev. Za vsak kos roba lahko določimo, ali imamo tam Dirichletov

    ali Neumannov robni pogoj in določimo vrednosti parametrov.

    3. Določimo tip PDE. Izbiramo lahko med eliptičnimi, paraboličnimi, hiperboličnimi PDE

    in med iskanjem lastnih vrednosti za eliptični operator (frekvence nihanja membrane z

    izbrano obliko).

    4. Trianguliramo območje, pri čemer lahko izberemo kvaliteto triangulacije.

    5. Rešimo problem in grafično predstavimo rešitev.

    Prednost metode končnih elementov pred metodo končnih diferenc je v tem, da jo je lažje

    uporabljati za območja nepravilnih oblik saj ni potrebno preračunavati robnih pogojev.

    Bor Plestenjak - Numerična analiza 2005/06