Generowanie wykresów
Transkrypt
Generowanie wykresów
Zajęcia nr 7 WYKRESY Prowadzący: mgr Marcin Spryszyński www: http://www-users.mat.uni.torun.pl/ ∼spryszyn e-mail: [email protected] Istotna informacja Prezentowane w tym skrypcie funkcje, poza plot oraz plot3d, dostępne są w bibliotece plots. Implementuje się ją poleceniem > with(plots); . Wykresy funkcji jednej zmiennej rzeczywistej o wartościach rzeczywistych X plot(f(x),x=a..b,y=c..d) - rysuje wykres funkcji (jednej zmiennej) f na przedziale [a, b], ograniczając zakres wartości do przedziału [c, d] ( podawanie zakresu osi wartości jest nieobowiązkowe); X plot([f1(x),· · · ,fk(x)],x=a..b,y=c..d) - rysuje na jednym układzie współrzędnych wykresy funkcji f 1, · · · , f k; X plot([f(t),g(t),t=a..b]) - rysuje krzywą zadaną parametrycznie, tj. zbiór postaci {(f (t), g(t)); t ∈ [a, b]} . Możliwe jest oczywiście zadanie kilku krzywych parametrycznych na jednym układzie współrzędnych. Aby to uczynić należy jako pierwszy argument funkcji podać listę złożoną z list określających parametrycznie krzywe; z Przykłady krzywych zadanych parametrycznie: okrąg o środku w punkcie (x0 , y0 ) i promieniu r > 0 ( x(t) = x0 + r · cos(t) y(t) = y0 + r · sin(t) t ∈ [0, 2π] elipsa o środku w punkcie (x0 , y0 ) i półosiach a, b > 0 ( x(t) = x0 + a · cos(t) y(t) = y0 + b · sin(t) t ∈ [0, 2π] asteroida (hipocykloida) o środku w punkcie (x0 , y0 ) i średnicy a > 0 (krzywa, jaką opisuje ustalony punkt okręgu toczącego się bez poślizgu wewnątrz okręgu o większym promieniu) ( x(t) = x0 + a · cos3 (t) y(t) = y0 + a · sin3 (t) t ∈ [0, 2π] cissoida o wierzchołku w punkcie (x0 , y0 ) i szerokości a > 0 ( 2 a·t x(t) = x0 + 1+t 2 a·t3 y(t) = y0 + 1+t2 1 t∈R cykloida o wysokości 2a > 0 (krzywa, jaką opisuje tor punktu leżącego na obwodzie koła, które toczy się bez poślizgu po prostej) ( x(t) = a · (t − sin(t)) y(t) = a · (1 − cos(t)) t∈R X interactive(funkcja,zmienne) - uruchamia applet języka Java (tzw. maplet), w którym mamy możliwość wybrać żądane opcje wykresu, bez odwoływania się do linii komend; X animate(procedura do generowania wykresu,lista określająca wykres,t=a..b,opcje) - generuje wykres (2D, 3D) i animuje go względem zadanego parametru w danym zakresie; Pierwszym argumentem funkcji może być plot, plot3d, pointplot. Można również określić tło na jakim dokonywana będzie animacja - opcja background. F Przykład: Efektem działania poniższej animacji jest punkt „ślizgający się” po sinusoidzie: > p:=plot(sin(x),x=-Pi..Pi,color=blue,thickness=2): animate(pointplot,[[x,sin(x)],symbol=diamond,symbolsize=20],x=-Pi..Pi ,frames=60,background=p); X polarplot(zbiór (lista) krzywych, opcje) - rysuje wykresy zadanych krzywych we współrzędnych biegunowych (r(θ), θ) (domyślny zakres jest od −π do π); X polarplot([r(t),θ(t),t=a..b]) - rysuje krzywą parametryczną (r = r(t), θ = θ(t)) dla podanego zakresu parametru t; X pointplot(lista punktów,opcje) - zaznacza w układzie współrzędnych zadane punkty; Można nakazać programowi połączyć podane punkty (style=line) oraz wpływać na symbol oznaczający punkt opcją symbol (box, circle, cross, diamond, point) oraz na wielkość danego symbolu symbolsize=n (n ∈ N); Wykresy funkcji dwu zmiennych rzeczywistych o wartościach rzeczywistych X plot3d(f(x,y),x=a..b,y=c..d) - rysuje wykres funkcji dwóch zmiennych na kwadracie [a, b]×[c, d]; Zakres zmiennej y może być zależny od zmiennej x. F Przykład: Wygenerowany zostanie wykres na pewnym dwuwymiarowym stożku. > plot3d(sqrt(x-y), x=0..9, y=-x..x); X plot3d([f(s,t),g(s,t),h(s,t)],s=a..b,t=c..d) - generuje wykres parametryczny powierzchni (obiektu) {(f (s, t), g(s, t), h(s, t)); s ∈ [a, b], t ∈ [c, d]} . X sphereplot(f(θ,φ),θ=a..b,φ=c..d,opcje) - rysuje powierzchnię określoną przy użyciu współrzędnych sferycznych (r = f (θ, φ), θ, φ) (efekt jest identyczny do zastosowania w funkcji plot3d parametru coords=spherical) F Przykład: „Skorupa ślimaka” > sphereplot( (1.33)∧ theta * sin(phi), theta=-1..2*Pi, phi=0..Pi ); 2 „sfera” > sphereplot( 1, theta=0..2*Pi, phi=0..Pi, scaling=constrained ); X sphereplot([r(s,t),theta(s,t),phi(s,t)],s=a..b,t=c..d) - generuje wykres parametryczny obiektu we współrzędnych sferycznych; X cylinderplot(f(θ,z),θ=a..b,z=c..d,opcje) - rysuje powierzchnię określoną przy użyciu współrzędnych cylindrycznych (r = f (θ, z), θ, z) (efekt jest identyczny do zastosowania w funkcji plot3d parametru coords=cylindrical) X sphereplot([r(s,t),theta(s,t),z(s,t)],s=a..b,t=c..d) - generuje wykres parametryczny obiektu we współrzędnych cylindrycznych; F Przykład: > cylinderplot( z, theta=0..2*Pi, z=0..1 ); > cylinderplot( [s*t, s, cos(t∧ 2)], s=0..Pi, t=-2..2 ); Parametry funkcji generujących wykresy Prezentowane poniżej opcje dodatkowe obu tytułowych komend definiuje się wewnątrz procedur wymieniając je po przecinku następująco: parametr = wartość. thickness = n - określa grubość linii jaką rysowany jest wykres; n ∈ {1, 2, . . . , 15}; color = kolor - określa kolor linii wykresu; kolor ∈ {grey, khaki, magenta, maroon, orange, navy, pink, plum, red, sienna, tan, turquoise, violet, wheat, white, yellow}; można również określić swój własny kolor funkcją color(paleta (RGB, HSV, HUE),parametry palety). title = tytuł - tytuł wykresu; wartość tego parametru jest typu tekstowego (tzw. string); titlefont = [RODZAJ,TYP,ROZMIAR] - określa czcionkę tytułu;rozmiar jest liczbą naturalną (domyślnie: 10), natomiast rodzaje i typy czcionek zawarte są w poniższej tabeli RODZAJ TIMES TYP ROMAN BOLD ITALIC BOLDITALIC COURIER DEFAULT BOLD OBLIQUE BOLDOBLIQUE HELVETICA DEFAULT BOLD OBLIQUE BOLDOBLIQUE font = [RODZAJ,TYP,ROZMIAR] - określa czcionkę stosowaną do opisu wykresu (tj. jednostek osi, nie dotyczy ani osi, ani legendy); axesfont = [RODZAJ,TYP,ROZMIAR] - określa czcionkę etykiet osi układu współrzędnych (analogicznie jak powyższe funkcje dotyczące czcionek); filled = true\false - wypełnia jednolitym kolorem powierzchnię między osią x-ową a wykresem funkcji (gdy true); domyślną wartością jest false; 3 labels = [etykieta osi x, etykieta osi y, (etykieta osi z)] - określa nazwy osi układu (etykiety są łańcuchami); do ustalenia czcionki etykiet służy parametr labelfont; labeldirections=[vertical\horizontal,vertical\horizontal] - określa wyświetlanie etykiet osi (pionowo, poziomo); style = line\point - określa styl wykresu (czy punkty próbkowania są łączone czy też nie); scaling = constrained\unconstrained - ustalenie tej samej długości jednostki na osiach układu (constrained); linestyle = SOLID\DOT - określenie stylu linii (ciągła\punktowa); numpoints = n - określenie ilości punktów w jakich próbkowana jest funkcja do narysowania wykresu (n ∈ N); discont = true\false - określa, gdy true, możliwość wystąpienia w generowanych wykresach punktów nieciągłości; grid = [n,m] - ustala, przy funkcjach dwóch zmiennych, ilość próbek na pierwszą i drugą współrzędną (n, m ∈ N); 4