Základy algoritmizace a programování Práce se symbolickými proměnnými Práce s grafikou Přednáška 11 7. prosince 2009
Symbolické proměnné Zjednodušení aritmetických výrazů simplify (s) Pří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ýrazů expand (s) Příklady >>expand((x-2)*(x-3)) >>expand(exp((a+b)ˆ2))
Rozklad factor(s) Příklady čísla na prvočí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)
Dosazení subs(s,z,a) Pří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)
Limity limit(f,x,a) limit(f,a) limit(f) Příklady >>syms x n >>limit(sin(x)/x) ans = 1 >>limit((1+1/n)ˆn, Inf) ans = exp(1)
derivace diff(s) diff(s,x) diff(s,x,n) Pří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
Integrály int(s) int(s,x) int(s,x,a,b) Příklady >>int(exp(-xˆ2)) ans = (piˆ(1/2)*erf(x))/2 erf(x) = 2 π x 0 e t2 dt >>int(exp(-xˆ2),0,inf) ans = piˆ(1/2)/2
Řešení rovnic a soustav rovnic solve(s) solve(s,x) solve(s1,...,sn) solve(s1,...,sn,x1,...,xn) Pří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
Řeš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)
Taylorovy polynomy taylor(funkce, stupen, stred) Příklady >>taylor(log(1+x)) ans = x-1/2*xˆ2+1/3*xˆ3-1/4*xˆ4+1/5*xˆ5
Užitečné funkce diff derivace int integrál limit limita taylor taylorova řada jacobian Jacobiova matice symsum součet řady
taylortool
Grafika - pří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)
Grafika Příkaz figure vytvoří nové grafické okno, které se stane aktivním. Příkaz figure(n): grafické okno n se stane aktivním. Několik křivek v jednom okně 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 čar plot(x,y, color_style_marker ) color_style_marker řetězec 1 4 znaků, určují styl a barvu barva: c, m, y, r, g, b, w, k styl čáry: -,, :, -. typ markeru: +, o, *, x, s, d, ˆ, v, >, <, p, h
Grafika plot(x,y, r*- ) spojí čarou a body označí, plot(x,y, y+ ) nespojí čarou, jen označí 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)
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čuje rozměry zpět k implicitně urcenýym osám stejné jednotky na osách nezobrazí osy určení rozměru x ové osy určení rozměru y ové osy
Příklad plot(fft(eye(17))), axis equal, axis square plot(fft(eye(17))), axis equal, axis off
Další příklad 1 Graf funkce (x 1) 2 + 3, x < 0, 3 > (x 2) 2 x = linspace(0,3,500); plot(x, 1./(x-1).ˆ2 + 3./(x-2).ˆ2) grid on Nespojitost v bodech x = 1, x=2 graf je málo informativní omezíme y ové hodnoty: ylim([0,50]) zajímavější
vybarvení plochy fill(x,y,[r g b]) vybarví mnohoúhelník zadaný body x(i) a y(i) body se vybírají popořadě a poslední se spojí s prvním barva se určí podle kombinace [r g b]... skaláry < 0, 1 > [010]... zelená, [101]... magenta, stejné hodnoty... stupně š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
4-úhelník
Několik grafů v jednom obrázku subplot(m, n, p)... rozdělí grafické okno na matici m n obr. očíslovaných 1... p fplot( funkce, meze, presnost, typ_cary )... užitečné 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])
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í bodů zobrazení v logaritmickém měřítku na osách zobrazení v logaritmickém měřítku v x ové ose zobrazení v logaritmickém měřítku v y ové ose x y graf s y ovou osou po obou stranách zobrazení v polárních souřadnicích automatické zobrazeí funkcí verze fplot verze polar vyplnění mnohoúhelníku vyplnění plochy sloupcový diagram vodorovný sloupcový diagram histogram kruhový diagram animace zovrazení vektoru rychloti
3D grafika plot3(x,y,z)... analog plot, spojí body č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 čáry a markeru lze zadatr stejně jako v plot.
Vrstevnice Pří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 : řá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ční 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í
Pří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
Použití jiných funkcí Vykreslíme MATLABovské logo (generuje funkce membrane) surf vykreslí plochy surfc přidá projekci flat odstraní sít ové křivky 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)
Pokud v datech jsou NaN, jsou interpretována jako chybějící data a nejsou zobrazena. plot( [ 1 2 NaN 3 4 ] ) vykreslí 2 čáry, body 2 a 3 nespojí A = peaks(80); A (28:52, 28:52) = NaN; surfc(a)