mlD001.tex (iv3 harj.1 av 2001)
Tätä tehtävää harjoitellaan Matlab-teknisesti loppuviikon harjoituksissa. Osattava esittää liitutaululla käsin piirtäen periaatteessa.

Tarkastellaan diffyhtälöä $y'=y-x$ alueessa $-1 \leq x,y \leq 1$.
Piirrä $xy$-koordinaatistoon suuntakenttä ja isokliinejä käsin ja kokeile myös Matlabia laskimen roolissa. Ota hilaväliksi aluksi vaikka $h=0.5$.

Matlab-laskussa kannattaa muodostaa matriisi, sanokaamme K, jonka alkioina ovat arvot $y_i - x_j$, $i=1\ldots 5, j=1\ldots 5$ tähän tapaan:
  h=0.5; 
  t=-1:h:1;
  x=0:h:2;

  for i=1:5 
    for j=1:5  
      K(i,j)=y(i)-x(j) 
    end  
  end                           
Koska matriisissa rivi-indeksi i juoksee alaspäin, on helpompaa sijoittaa arvot koordinaatistoon kääntämällä matriisin sarakkeet ylösalaisin; tämä tapahtuu komennolla flipud. Katso siis matriisista flipud(K) arvot ja merkitse ne kynällä piirrokseen. Tarkista käsin (tai ``skalaarilaskimella'' (Matlabkin käy)) muutama alkio ainakin. (Hilan tihentäminen käy nyt helposti muuttamalla vain yllä $h$:ta.)
Myöhemmin opimme, että K-matriisin muodostaminen käy kätevämmin, tehokkaammin ja rutiininomaisemmin näin:
                                                                          
x=...;y=...  % Kuten edellä                                                     
[X,Y]=meshgrid(x,y);  
K=Y-X;    
      %{ 
        Jos esiintyy kertolaskua, potenssia ym.,
        on varustettava pisteellä, siis 
        .*, .^  ./  (taulukko-operaatiot)
       %}     
 
Nyt meillä on kaikki data kerättynä suuntakentän piirtämistä varten. Voit katsoa skriptiä suuntak1.m ja miettiä, mitä siinä tapahtuu.

Lopuksi voit kokeilla Rice-Universityn sivulla olevaa mainiota funktiota dfield , jonka käyttö ei vaadi Matlabin tuntemista lainkaan.

Vaikeus 2.

Tehtävän Latex-koodi:
Ratkaisu (pdf - ei vielä)
Ratkaisu (m)

Viitteitä:

Avainsanat: matlabDiffyhtälöt, mlbDifferentiaali,suuntakenttä