6. laborgyakorlat

Numerikus számítások fizikusoknak

Contents

clear all, close all

Inline vagy anonim függvények létrehozása

Ideiglenes jelleggel definiálhatunk a munkaterületen, ill. egy m-fájlon belül is függvényeket.

f=@(x,y)x^2-y^2 % kétváltozós függvény definiálása, f: függvény fogantyú
f(1,2)
whos f
f = 
    @(x,y)x^2-y^2
ans =
    -3
  Name      Size            Bytes  Class              Attributes

  f         1x1                16  function_handle              

Használhatjuk a workspace változóit. A definiálás pillanatában rögzíti a Matlab ezeket a paramétereket.

a=3;
b=5;
f=@(x)a*x^2+b
f(1)
a=10;
f(1)
f = 
    @(x)a*x^2+b
ans =
     8
ans =
     8

Ahhoz, hogy vektorokra is használhassuk ezeket, a definícióban megfelelően kell definiálni őket.

f=@(x,y)x.^2-y.^2 % kétváltozós függvény definiálása
x=1:5, y=2:6
f(1,2)
f(x,y)
f = 
    @(x,y)x.^2-y.^2
x =
     1     2     3     4     5
y =
     2     3     4     5     6
ans =
    -3
ans =
    -3    -5    -7    -9   -11

Újabb példa - mátrix négyzetének determinánsa

negyzetdet=@(x)det(x^2)
negyzetdet([2,3;4,5])
negyzetdet = 
    @(x)det(x^2)
ans =
     4

Egyváltozós függvények ábrázolása

inline függvények ábrázolása

ezplot parancs. Alapból a [-2*pi,2*pi] intervallumon ábrázol, de megadható neki az intervallum is. Implicit függvények is ábrázolhatók vele.

f=@(x)x.^2
ezplot(f) % függvénynév, intervallum
f = 
    @(x)x.^2
ezplot('x.^3',[-1,1]) % Karakterláncként is megadhatjuk a függvényt
ezplot('x^2+y^2=1',[-2,2]) % Implicit függvény ábrázolása

Koordinátánkénti ábrázolás

plot parancs. Az x- és y-koordináták vektorának segítségével való ábrázolás

x=linspace(-1,1,50);
y=x.^2;
plot(x,y)

Az ábra csinosítása a plot parancs után megadott további parancsokkal történik.

x=linspace(-1,1,50);
y=x.^2;
plot(x,y,'r--*','LineWidth',2,'MarkerSize',8) % szín, vonaltípus, pontok szimbóluma, egyéb tulajd. (lásd a plot helpje).
title('Az x^2 függvény grafikonja. Aposztróf: '' ','FontSize',20)
xlabel('x-tengely','FontSize',20,'Color','red')
ylabel('y-tengely','FontSize',20,'Color','green')
legend('x^2')
axis([-1,1,0,2])
pause
axis equal % egyforma osztásköz a két tengelyen
grid on % rács bekapcsolása
pause
grid off % rács kikapcsolása

ezplot csinosítása*

h=ezplot('sin(x)')
set(h,'LineWidth',4) % Egyéb tulajdonságok a helpben.
h =
       4785.4

A grafikon menüből is csinosítható, de kilépés után a változtatások elvesznek. Vagy exportáljuk az ábrát vagy mentsük el fig fájlba!

Több grafikon egy ábrában

Egy plot parancsban több ábra

x=linspace(0,1,50);
y=sin(x); z=cos(x);
plot(x,y,'r-',x,z,'b--')

több grafikonablak

figure(1)
ezplot('sin(x)')
figure(2)
ezplot('cos(x)')
pause
figure(1)
h=ezplot('2*sin(x)');
set(h,'Linewidth',4)
pause
close 1
pause
close 2

subplot - mátrixszerűen elrendezett ábrák

subplot(1,2,1)
ezplot('sin(x)')
subplot(1,2,2)
ezplot('cos(x)')

A hold parancs. Rögzíti a készült ábrát, és arra rajzolja rá a következőt.

close all
ezplot('sin(x)')
pause
hold on
x=linspace(0,1,50);
y=x.^2;
plot(x,y,'r-')
hold off

Egyéb speciális grafikonok

két y-tengely

x=linspace(0,2*pi,50);
y1=sin(x);
y2=10*cos(x);
plotyy(x,y1,x,y2)

polár-koordináták

theta=linspace(0,pi/2,50);
r=ones(1,50);
h=polar(theta,r.*theta)
set(h,'LineWidth',4)
h =
       4812.4

semilogy (semilogx hasonlóan)

x=0:10;
y=exp(x);
semilogy(x,y)

loglog

x=0:100;
y=x.^2;
loglog(x,y)

üstökös

x=linspace(0,10*pi,150);
y=sin(x);
comet(x,y)

Mátrix ábrázolása, oszlopok sorindexek szerint

A=[1,2,3
   4,5,6
   7,8,9]

plot(A)
A =
     1     2     3
     4     5     6
     7     8     9

komplex elemű vektor ábrázolása a komplex számsíkon (mátrixnál csak a valós részt ábrázolja)

A=rand(5);
s=eig(A);
plot(s,'ro');