% Matlab-skripti: ..v/3/01/matlab/suuntak1.m % Kts. myös exasuuntak.m % HA 4.9.2001 % % Aihe: Diffyhtälön y'=f(x,y) suuntakenttä ja isokliinit. % % Havainnollinen versio, jossa jananpätkät piirretään for- % silmukassa. Oikeaoppisempi tehoversio: suuntak.m % clf f=inline('y-x','x','y') % f(x,y)=y-x %f=inline('x.*y','x','y') % Toinen esimerkki: f(x,y)=xy h=0.5;a=-1;b=1;c=0;d=2; % Muuta tarpeen mukaan x=a:h:b;y=c:h:d; [X,Y]=meshgrid(x,y); Z=f(X,Y); flipud(Z) % havainnollistukseen, tosi käytössä kommentti. plot(X(:),Y(:),'x') % Jos haluat merkitä ristillä pisteet, joissa % derivaatta-arvot on laskettu, poista kommentti hold on xx=X(:); yy=Y(:); n=length(xx); for i=1:n v=[1,f(xx(i),yy(i))];v=0.5*h*v/norm(v); alkup=[xx(i),yy(i)]-v;loppup=[xx(i),yy(i)]+v; plot([alkup(1),loppup(1)],[alkup(2),loppup(2)]) end; % Jos haluat vain suuntakentän, lopeta tähän. % % Piirretään edellä olevia korkeusarvoja vastaavat isokliinit. x=linspace(a,b,30);y=linspace(c,d,30); [X,Y]=meshgrid(x,y); ZZ=f(X,Y); contour(x,y,ZZ,Z(:)) % Korkeusvektoriksi valitaan Z(:), tällöin axis equal % saadaan kaikki suuntakenttäpiirroksen arvot, axis([a,b,c,d]) % ovelaa! grid title('y''=f(x,y)') % Jos haluat oikean otsikon, editoi tähän shg