Základy algoritmizace a programování ˇ Práce se symbolickými promennými Práce s grafikou
Pˇrednáška 11 7. prosince 2009
ZAPG
ˇ Symbolické promenné
Zjednodušení aritmetických výrazu˚ simplify (s) Pˇríklady: >>syms a b c d x >>simplify(sin(x)ˆ2 + cos(x)ˆ2) >>simplify(exp(c*log(sqrt(a+b)))) >>simplify((xˆ2 -5*x +6/(x-2)) Rozvinutí výrazu˚ expand (s) Pˇríklady >>expand((x-2)*(x-3)) >>expand(exp((a+b)ˆ2))
ZAPG
ZAPG
Rozklad factor(s) Pˇríklady cˇ ísla na prvoˇcísla
factor(sym(’646759498054250578181342771362513764 factor(sym(’2009’)) výrazu factor(xˆ2-3/2*x+1/2) factor(xˆ+1) factor(aˆ3 - bˆ3)
ZAPG
Dosazení subs(s,z,a) Pˇríklady >>syms x y >>subs(sin(x)+cos(y), x, pi) ans = cos(y) >>subs(xˆ2 + 2*x*y + yˆ2, x+y,2) ans = xˆ(x + y) + yˆ(x + y) + x*y*(x + y) >>subs(sin(x)+cos(y),{x,y},{pi, sym(’alpha’)}) ans = cos(alpha) ZAPG
Limity
limit(f,x,a) limit(f,a) limit(f) Pˇríklady >>syms x n >>limit(sin(x)/x) ans = 1 >>limit((1+1/n)ˆn, Inf) ans = exp(1)
ZAPG
derivace
diff(s) diff(s,x) diff(s,x,n) Pˇríklady >>diff(sin(xˆ2)) ans = 2*x*cos(xˆ2) >>diff(tˆ6,2) ans = 30*tˆ4 >>diff(tˆ6,6) ans = 720
ZAPG
Integrály
int(s) int(s,x) int(s,x,a,b) Pˇríklady >>int(exp(-xˆ2)) ans = (piˆ(1/2)*Rerf(x))/2 2 x erf(x) = √2π · 0 e−t dt >>int(exp(-xˆ2),0,Inf) ans = piˆ(1/2)/2
ZAPG
ˇ Rešení rovnic a soustav rovnic solve(s) solve(s,x) solve(s1,...,sn) solve(s1,...,sn,x1,...,xn) Pˇríklady >>syms a b c d x y >>solve(a*xˆ2 + b*x + c) ans = -(b + (bˆ2 - 4*a*c)ˆ(1/2))/(2*a) -(b - (bˆ2 - 4*a*c)ˆ(1/2))/(2*a) >>solve(a*xˆ2 + b*x + c, a) ans = -(c + b*x)/xˆ2 >>solve(’xˆ2+ x*y + y = 3’, ’xˆ2-4*x + 3 = 0’) ans = 1 3 ZAPG
ˇ Rešení diferenciálních rovnic rovnic dsolve(eq1,...,eqn,pp1,...,pp2,p) >>dsolve(’Dy+4*y = exp(-t)’) ans = 1/(3*exp(t)) + C2/exp(4*t) >>dsolve(’Dy+4*y = exp(-t)’, ’y(0)=1’) ans = 1/(3*exp(t)) + 2/(3*exp(4*t)) >>dsolve(’Dx = y’, ’Dy = -x’, ’x(0) = 1’, ’y(0)=2’) V = y: [1x1 sym] x: [1x1 sym] >> V.x ans = (i + 1/2)/exp(i*t) - exp(i*t)*(i - 1/2) >> V.y ans = exp(i*t)*(i/2 + 1) - (i/2 - 1)/exp(i*t) ZAPG
Taylorovy polynomy
taylor(funkce, stupen, stred) Pˇríklady >>taylor(log(1+x)) ans = x-1/2*xˆ2+1/3*xˆ3-1/4*xˆ4+1/5*xˆ5
ZAPG
Užiteˇcné funkce
diff int limit taylor jacobian symsum
derivace integrál limita taylorova ˇrada Jacobiova matice souˇcet ˇrady
ZAPG
taylortool
ZAPG
Grafika - pˇríkaz plot
x = 0:pi/100:2*pi; y = sin(x); plot(x,y) xlabel(’x = 0:2pi’) ylabel(’Sine of x’) title(’Plot of the Sine Function’, ... ’FontSize’,12)
ZAPG
Grafika Pˇríkaz figure vytvoˇrí nové grafické okno, které se stane aktivním. Pˇríkaz figure(n): grafické okno n se stane aktivním. ˇ Nekolik kˇrivek v jednom okneˇ y2 = sin(x-.25); y3 = sin(x-.5); plot(x,y,x,y2,x,y3) legend(’sin(x)’,’sin(x-.25)’, ’sin(x-.5)’) ˇ Typ a barva car plot(x,y,’color_style_marker’) ˇ color_style_marker – ˇretezec 1–4 znaku, ˚ urˇcují styl a barvu barva: c, m, y, r, g, b, w, k styl cˇ áry: -, –, :, -. typ markeru: +, o, *, x, s, d, ˆ, v, >, <, p, h ZAPG
Grafika
plot(x,y,’r*-’) spojí cˇ arou a body oznaˇcí, plot(x,y,’y+’) nespojí cˇ arou, jen oznaˇcí body Argumenty – Matice: plot(vektor, matice): vykreslí závislost každého sloupce matice na vektoru plot(matice, matice): vykreslí závislost každého sloupce matice na odpovídajícím sloupci vektoru plot(x,y,’m–o’,’LineWidth’,3,’MarkerSize’,5)
ZAPG
Popis grafu, osy
Title, xlabel, ylabel Osy a anotace axis([xmin xmax ymin ymax]) axis auto axis equal axis off xlim[xmin xmax] ylim[ymin ymax]
ˇ urˇcuje rozmery ˇ k implicitneˇ urcenýym osám zpet stejné jednotky na osách nezobrazí osy ˇ x–ové osy urˇcení rozmeru ˇ y–ové osy urˇcení rozmeru
ZAPG
Pˇríklad plot(fft(eye(17))), axis equal, axis square plot(fft(eye(17))), axis equal, axis off
ZAPG
Další pˇríklad 3 1 + , x ∈< 0, 3 > 2 (x − 1) (x − 2)2 x = linspace(0,3,500); plot(x, 1./(x-1).ˆ2 + 3./(x-2).ˆ2) grid on Graf funkce
Nespojitost v bodech x = 1, x=2 – graf je málo informativní ˇ omezíme y–ové hodnoty: ylim([0,50]) – zajímavejší
ZAPG
vybarvení plochy fill(x,y,[r g b]) vybarví mnohoúhelník zadaný body x(i) a y(i) body se vybírají popoˇradeˇ a poslední se spojí s prvním barva se urˇcí podle kombinace [r g b] ... skaláry ∈< 0, 1 > [010] ... zelená, [101] ... magenta, stejné hodnoty ... stupneˇ šedé P = [0.1 0.3 0.7 0.8; 0.3 0.8 0.6 0.1]; plot(P(1,:),P(2,:),’*’) axis([0 1 0 1]); hold on fill(P(1,:),P(2,:),[0.8 0.8 0.8]) text(0.35,0.35,’4 uhelnik’) text(0.05,0.3,’P_1’) text(0.25,0.8,’P_2’) text(0.72,0.6,’P_3’) text(0.82,0.1,’P_4’) hold off ZAPG
4-úhelník
ZAPG
ˇ Nekolik grafu˚ v jednom obrázku
ˇ grafické okno na matici m×n obr. subplot(m, n, p) ... rozdelí oˇcíslovaných 1 ... p fplot(’funkce’, meze, presnost, ’typ_cary’) ... užiteˇcné pro grafy matematických funkcí subplot(221), fplot(’exp(sqrt(x)*sin(12*x))’,[0 2*pi]) subplot(222) fplot(’sin(round(x))’,[0 10],’-’) subplot(223) fplot(’cos(30*x)/x’,[0.01 1 -15 20],’.-’) subplot(224) fplot(’[sin(x),cos(2*x),1/(1+x)]’,[0 5*pi -1.5 1.5])
ZAPG
ZAPG
Funkce pro 2D grafiku plot loglog semilogx semilogy plotyy polar fplot ezplot ezpolar fill area bar barh hist pie comet quiver scatter
jednoduché x–y zobrazení bodu˚ ˇ rítku na osách zobrazení v logaritmickém meˇ ˇ rítku v x–ové ose zobrazení v logaritmickém meˇ ˇ rítku v y–ové ose zobrazení v logaritmickém meˇ x–y graf s y–ovou osou po obou stranách zobrazení v polárních souˇradnicích automatické zobrazeí funkcí verze fplot verze polar ˇ mnohoúhelníku vyplnení ˇ plochy vyplnení sloupcový diagram vodorovný sloupcový diagram histogram kruhový diagram animace zovrazení vektoru rychloti ZAPG
3D grafika
plot3(x,y,z) ... analog plot, spojí body cˇ arou t = -5:0.005:5; x=(1+t.ˆ2).*sin(20*t); y=(1+t.ˆ2).*cos(20*t); z = t; grid on plot3(x,y,z) xlabel(’x(t)’), ylabel(’y(t)’), zlabel(’z(t)’) title(’priklad 3D zobrazení’,’FontSize’,14) Barvu, typ cˇ áry a markeru lze zadatr stejneˇ jako v plot.
ZAPG
ZAPG
Vrstevnice Pˇríklad: f (x, y ) = sin(3y − x 2 + 1) + cos(2y 2 − 2x) x ∈< −2, 2 >, y ∈< −1, 1 > subplot(211) ezcontour(’sin(3*y-xˆ2+1)+cos(2*yˆ2 - 2*x)’ , [-2 2 -1 1]); x = -2:0.01:2; y=-1:0.01:1; [ X, Y ] = meshgrid(x,y); ... vygeneruje matice X a Y : ˇrádek X je kopie vektoru x a sloupec Y kopie y
Z = sin(3*Y-X.ˆ2+1)+cos(2*Y.ˆ2 - 2*X); ... matice Z: Z(i,j) má funkˇcní hodnoty pro x(j) a y(i) ... to vyžaduje contour
subplot(212) contour(x,y,Z,20) ... Z je výška pro bod x a y, 20 úrovní
ZAPG
ZAPG
Pˇríklady 3D grafiky x = 0:0.1:pi; y = 0:0.1:pi; [X, Y] = meshgrid(x,y); Z = sin(Y.ˆ2 + X) - cos(Y - X.ˆ2); subplot(221) mesh(Z) subplot(222) meshc(Z) subplot(223) mesh(x,y,Z) axis([0 pi 0 pi -5 5]) subplot(224) mesh(Z) hidden off ZAPG
ZAPG
Použití jiných funkcí Vykreslíme MATLABovské logo (generuje funkce membrane) surf vykreslí plochy surfc pˇridá projekci flat odstraní sít’ové kˇrivky waterfall podobná mesh Z = membrane; FS = ’FontSize’; subplot(221), surf(Z), title(’surf’,FS,14) subplot(222), surfc(Z), title(’surfc’,FS,14) colorbar subplot(223), surf(Z), shading flat title(’surf shading flat’,FS,14) subplot(224), waterfall(Z) title(’waterfall’,FS,14) ZAPG
ZAPG
ˇ Pokud v datech jsou NaN, jsou interpretována jako chybející data a nejsou zobrazena. plot( [ 1 2 NaN 3 4 ] ) vykreslí 2 cˇ áry, body 2 a 3 nespojí A = peaks(80); A (28:52, 28:52) = NaN; surfc(A)
ZAPG
ZAPG