MMM-Tehtäväportaali

 

 

Menu:

MATLAB-tehtäviä koskien monen muuttujan analyysia.

Käytön idea: kun löydät mieleisesi tehtävän, sen alapuolella on linkki tex-tiedostoon. Lataa tiedosto, ja liitä se pääsivulta löytyvään harjoituspohjaan.

  • 1. 
    Muista, että Jacobin matriisi koostuu vektori- tai skalaariarvoisen funktion F ensimmäisistä osittaisderivaatoista:
          ⌊              ⌋
       ∂∂yx11   ...  ∂∂y1x1-
      || ..          .. ||
JF =  || .   ⋅⋅⋅    . ||.
      |⌈∂∂yxm1-  ...  ∂∂xy1n-|⌉

    Kuinka laskisit numeerisen Jacobin matriisin? Vihje:  Muista, että numeerisesti

    f′(x ) ≈ f(x+-h)-− f-(x-−-h),
              2h

    Tehtava

  • 2. 
    Harjoitellaan usean muuttujan funktioiden piirtämistä. MATLABissa tämä tehdään määrittelemällä ensin piirtoalueen peittävä diskretointi, tai hila. Tämä määritellään komennolla meshgrid. Luodaan esimerkiksi suorakulmion [1, 2] × [3, 4] peittävä hila:
    x = 1:0.2:2;  
    y = 3:0.2:4;  
    [X Y] = meshgrid(x,y);

    Nyt muuttujissa X ja Y ovat hilapisteiden x- ja y-koordinaatit. Niillä voidaan suorittaa laskutoimituksia kuten tavallisillakin muuttujilla; on vain pidettävä mielessä että kyseessä ovat nyt matriisit, eli yleensä haluamme valita alkioittaiset operaatiot matriisioperaatioiden sijaan.

    Pintojen piirtäminen tapahtuu komennoilla surf ja mesh. Lasketaan ja piirretään funktion

    f(x,y) = xy2

    kuva:

    Z = X.*Y;  
    % Huomaa alkoittainen kertolasku  
    surf(x,y,Z);

    .

    Piirrä näillä keinoin seuraavien funktioiden kuvat

    • f(x,y) = √ -----2----2
  1 − x  − y alueessa [1
2,1
2] × [1
2,1
2]
    • f(x,y) = x3 3xy alueessa [1, 1] × [1, 1].

    Toinen yleinen tapa kuvata usean muuttujan funktioita on käyttää tasa-arvokäyriä. Näitä piirretään komennolla contour, syntaksi on sama kuin tavallisilla piirtokomennoilla. Kokeile piirtää myös edellisten funktioden tasa-arvokäyrät.

    Tehtava

    Ratkaisu

  • 3. 
    Vektorianalyysissä on todistettu että funktion tasarvo-käyrä on aina gradientin normaali. Tutkitaan tätä nyt käytännössä. Piirrä funktiolle
               −x2−y2
f(x,y ) = e

    tasa-arvokäyrät haluamassasi hilassa käyttäen komentoa contour (komennon syntaksi on sama kuin tavallisten piirtokomentojen). Tämän jälkeen laske funktion numeerinen gradientti tässä hilassa funktiolla gradient. Funktio palauttaa tässä tapauksessa kaksi matriisia, joissa on pisteittäiset numeeriset estimaatit arvoille

    ∂f     ∂f
--- ja ---.
∂x     ∂y

    Gradientit kannattaa piirtää vektorikenttänä, MATLABin tapauksessa komennolla quiver. Esimerkiksi, jos halutut osittaisderivaatat ovat matriiseissa dx ja dy niin piirto tapahtuisi komennolla quiver(x,y,dx,dy). Lopuksi piirrä kuvat näkyviin päällekäin komentamalla:

    contour(x,y,z)  
    hold on  
    quiver(x,y,dx,dy)

    Tutki kuvasta, ovatko gradienttinuolet suorassa kulmassa tasa-arvokäyriä vastaan.

    Tehtava

    Ratkaisu

  • 4. 
    Muista, että Jacobin matriisi koostuu vektori- tai skalaariarvoisen funktion F ensimmäisistä osittaisderivaatoista:
          ⌊              ⌋
       ∂∂yx1   ...  ∂∂y1x-
      || .1         1. ||
JF =  || ..   ⋅⋅⋅    .. ||.
      |⌈∂∂yxm-  ...  ∂∂xy1-|⌉
         1         n

    Kuinka laskisit numeerisen Jacobin matriisin? Vihje:  Muista, että numeerisesti

    f′(x ) ≈ f(x+-h)-− f-(x-−-h),
              2h

    Tehtava

  • 5. 
    Funktio
    function Jf = numjaco(F,m,x,n)  
    % f is a function with m components,  
    % x is a vector with n components,  
    % the result is an m by n matrix.  
    Jf = ones(m,n);   h = 1e-4;  
    f = fcnchk(F);  
    for j =1:n  
        e = zeros(n,1); e(j) = 1;  
        Jf(:,j) = (f(x+h*e)-f(x-h*e) )/(2*h);  
    end;

    laskee vektorikentän F numeerisen Jacobin matriisin, olettaen että käytetty kanta on standardi. Jos vektorikentässä on vain yksi komponentti, kyseessä on kyseisen funktion gradienttivektori.

    Kopioi edellä oleva funktio tiedostoon, ja määrittele funktiot

    • f(x,y) = x2y
    • g(x,y) = xex2+y

    ja laske niiden numeeriset gradientit pisteissä (1, 2) ja (2,4). Vertaa tulosta tarkkoihin arvoihin:

          [    ]       [ x2+y     2 x2+y]
∇f =   2xy  ∇g  =   e    +  2x e
        x2               xex2+y

    Tehtava

  • 6. 
    Piirrä funktion f(x,y) = ex2y2 määrittelemä pinta (x,y)-tason neliön [2, 2] × [2, 2] alueella. Laske tämän funktion integraali yli kyseisen neliön. Kyseisen integraalin arvo koko tason ylitse on π. Vihje:  Pinnan piirtämiseen tarvitset sopivan alueen peittävän hilapisteistön. Näitä luodaan MATLABissa komennolla meshgrid, katso help meshgrid. Pinta piirretään komennolla mesh tai surf, katso dokumentaatiota.

    Integraalin laskemiseen kannattaa käyttää funktiota dblquad. Katso kutsumisohjeet dokumentaatiosta. dblquadin ensimmäisen argumentin tulee olla funktio: tässä kannattaa käyttää MATLABin anonyymifunktioita. Esimerkiksi 03 23xydxdy = dblquad(@(x,y)x.*y,2,3,0,1). Jälleen kerran, tutki dokumentaatiota function_handle.

    Tehtava

  • 7. 
    Laske funktion f(x,y) = 3 + cos(x) + cos(y) määräämän pinnan ja suorakulmion [0] × [0, 2π] väliin jäävä tilavuus. Piirrä havainnolistava kuva. Vihje:  Tilavuuteen tarvitset kaksinkertaista integraalia dblquad, pinta piirretään komennoilla meshgrid ja mesh.

    Tehtava

  • 8. 
    Piirrä funktion f(x,y) = y2 x2 tasa-arvokäyrät ja gradienttivektorikenttä, ja totea, että gradientti on aina kohtisuorassa tasa-arvokäyrää vasten. Vihje:  Laske gradientti funktiolla gradient, ja piirrä tasa-arvokäyrät komennolla contour. Gradienttivektorikentän saat piirrettyä komennolla quiver.

    Tehtava

  • 9. 
    Määritä pinnan z = x2 y2 normaalivektori, ja piirrä sen vektorikenttä samaan kuvaan pinnan kanssa. Vihje:  Aloita määrittelemällä jokin tason suorakulmio funtion meshgrid avulla - tämän jälkeen voit määritellä pinnan, eli matriisin z. Pinnan normaalivektorin saat laskettua funktiolla surfnorm. Piirrä ensiksi pinta komennolla surf(x,y,z), sen jälkee kirjoita hold on, jonka jälkeen kirjota quiver3(x,y,z,u,v,w), missä u,v ja w ovat surfnormin palauttamat matriisit.

    Tehtava

Työkaluja