Laboratorium metod numerycznych nr 3a
Edycja i tworzenie wykresów w Scilabie
Wywołanie instrukcji graficznej takiej jak plot czy plot3d powoduje umieszczenie rysowanego obrazu w oknie graficznym o numerze 0.
Wywołanie funkcji graficznej powoduje powstanie nowego obrazu na już istniejącym, stąd potrzeba uprzedniego wymazania zawartości
okna przy pomocy funkcji xbasc( ).
Na początku każdego skryptu czyścić pamięć i ekran
Przykład 1:Wykreślenie większej ilości krzywych na wspólnym wykresie, nadanie tytułu wykresom oraz podpisanie osi xi y.
x=linspace(-1, 1, 61)';
y=x^2;
plot2d(x,y)
ybis=1-x^2;
plot2d(x, ybis)
yter=2*y;
plot2d(x, yter)
xbasc()
plot2d(x, [y ybis yter])
xtitle(" Wykreślanie 3 krzywych na wykresie", " oś x", " oś y")//tytuł i podpisanie osi
Przypisywanie kolorów dla poszczególnych krzywych na wspólnym wykresie. Określanie zakresu wartości dla osi rzędnych i
odciętych.
Przykład 2: Narysować 5 funkcji Bessela na wspólnym wykresie. Przyjąć następujące wartości dla osi odciętych od 0 do 16, a dla osi
rzędnych od 0.4 do 0.6. Kolejność argumentów jest dowolna w linii 5.
x=linspace(0, 15,200)';
y=besselj(1:5, x);
xbasc()
plot2d(x, y, style=[2, 3, 4, 5, 6], leg="J1@J2@J3@J4@J5@")
xtitle("Funkcje Bessela, J1, J2, J3, J4, J5", x , y )
Tabela 1 .Wartości przypisane do kolorów w Scilabie:
1- czarny, 2- niebieski 3- zielony (dość jasny, ale widoczny na ekranie)
4- jasnoniebieski 5- czerwony 6- różowy
7- czerwony 8- biały 9- granatowy
10 granatowy nieco jaśniejszy 11- najjaśniejszy granatowy
Wykresy zawierajÄ…ce symbole:
Przykład 3 Wykreślić na jednym układzie współrzędnych funkcję f=sin(x) za pomocą linii, oraz f=sin(x) utworzoną za pomocą znaczników.
x=linspace(0,2*%pi,40)';
y=sin(x);
yp=sin(x)+0.1*rand(x,"normal");
xbasc()
plot2d(x,[yp y],style=[-2,2],leg="y=sin(x)+perturbation@y=sin(x)")
Określenie skali
Przykład 4 Niezbędne jest skorzystanie ze skali izometrycznej bowiem chcemy narysować okrąg. Dodatkowy parametr w postaci
frameflag=val, gdzie val powinna przyjąć wartość 4, aby otrzymać skalę izotermiczną (dobraną na podstawie wartości minimalnej i
maksymalnej).
t=linspace(0,2*%pi,60)';
xbasc() Wyjaśnienie: erf to funkcja błędu wg wzoru poniżej:
x
x1=2*cos(t); y1=sin(t); //elipsa
2
erf(x) = Å" e- t2 dt
x2=cos(t); y2=y1 //okr\{a}g
+"
0
Ä„
x3=linspace(-2,2,60)'; y3=erf(x3);//funkcja b\l{}k{e}du
legenda="elipsa@okr\{a}g@funkcja b\l{}k{e}du"
plot2d([x1 x2 x3], [y1 y2 y3], style=[1, 2, 3], frameflag=4, leg=legenda)
xtitle("I znowu krzywe na rysunku")
Przykład 5
W pewnych wypadkach frameflag towarzyszyć będzie parametr rect. Jeśli np. chcemy samodzielnie określić obszar rysowania użyjemy
zapisu :rect=[x y , x , y ] w połączeniu z frameflag=1:
min, min max max
x=linspace(-5, 5, 200) ;
y=1./(1+x.^2);
xbasc()
plot2d(x, y, frameflag=1, rect=[-6, 0, 6, 1.1])
xtitle( Funkcja Runge-Kutty )
Przykład 6
Użycie axesflag5 bez pudełka, ale z osiami i jednostkami (punkt przecięcia dla x=0 i y=0)
x=linspace(-14, 14, 300)';
y=sin(x);
xbasc()
plot2d(x,y, style=2,axesflag=5)
xtitle( Funkcja sinus )
Inne wersje plot2d; plot2d2; plot2d3
Plot 2d2 pozwala narysować funkcję w oparciu o skalary. W miejscu prostego wykresu wprowadzamy punkty (x y ) i (x y ), plot2d2
i, i i+1, i+1
odcinek poziomy (od (x y ) do (x y )),a następnie odcinek pionowy od (x y ) do (x y ).
i, i i+1, i i+1, i i+1, i+1
Przykład 7:
n=10;
x=(0:n)';
y=x;
xbasc()//czyszczenie okna graficznego
plot2d2(x, y, style=2,frameflag=5,rect=[0,-1,n+1,n+1])
xtitle(" Przykład zastosowania instrukcji plot2d2")
Przykład 8. plot 3d rysuje diagram: dla każdego punktu (x y ), plot 2d3 rysuje segment pionowy od (x 0) do (x y ).
i, i i, i, i
n=6;
x=(0:n)';
y=binomial(0.5,n);
xbasc()
plot2d3(x,y,style=2,frameflag=5,rect=[-1, 0, n+1, 0.32])
xtitle("Prawdopodobieństwo dla prawa binomialnego B(6, 1/2)")
Przykład 9 Rysowanie większej ilości krzywych złożonych z różnej ilości punktów
x1=linspace(0,1,61)';
x2=linspace(0,1,31)';
x3=linspace(0.1,0.9,12)';
y1=x1.*(1-x1).*cos(2*%pi*x1);
y2=x2.*(1-x2);
y3=x3.*(1-x3)+0.1*(rand(x3)-0.5); //identyczne jak y2 ale z zaburzeniem;
ymin=min([y1;y2;y3]);
ymax=max([y1;y2;y3]);
dy=(ymax-ymin)*0.05;
rect=[0,ymin-dy,1,ymax+dy];
xbasc()
plot2d(x1, y1,style=1,frameflag=5,rect=rect)
plot2d(x2, y2,style=2,frameflag=0)
plot2d(x3, y3,style=-1,frameflag=0)
xtitle("Rysowanie wiekszej ilosci krzywych zlozonych z roznej ilosci punktow")
Przykład 10:
dl=linspace(-%pi, %pi);
y1=sin(dl);
y2=cos(dl);
xbasc();
xtile('Wykresy funkcji trygonometrycznych','wartosci na osi odcietych','wartosci na osi rzednych');
legend('funkcja sinus', 'funkcja kosinus', 2) //miejsce polozenia legendy
xset('thickness', 1)
plot(dl, [y1', y2'],style=[5,3,2]);
Przykład 11: Wykreślić na jednym układzie współrzędnych funkcje y=cos(t), (y=cos 2t), y=cos (3t). Podpisać odpowiednie krzywe za
pomocą legendy w prawym górnym rogu.
set figure_style new
xbasc();
t=0:0.1:2*%pi;
a=gca();
a.data_bounds=[t(1) -1.8;t($) 1.8];
plot2d(t,[cos(t'),cos(2*t'),cos(3*t')],[-1,2,3]);
e=gce();
e.children(1).thickness=3;
e.children(2).line_style=4;
hl=legend(['cos(t)';'cos(2*t)';'cos(3*t)'], a=1);
Przyklad 12: Sprawdzić, co będzie wynikiem poniższych poleceń:
nr=1:20;
x=[1;10];
y=[1;1];
xinit()
xset('thickness', 6)
plot2d(x, y*nr, style=nr)
Przykład 13: Sprawdzić dostępne znaczniki w Scilabie:
xbasc()
nr=-[1:20];
x=[1:10]';
y=ones(x);
xinit()
plot(x,y*nr,style=nr)
Przykład 14:
x1=linspace(0,1,61)';
x2=linspace(0,1,31)';
x3=linspace(0.1,0.9,12)';
y1=x1.*(1-x1).*cos(2*%pi*x1);
y2=x2.*(1-x2);
y3=x3.*(1-x3)+0.1*(rand(x3)-0.5); //identyczne jak y2 ale z zaburzeniem;
ymin=min([y1;y2;y3]);
ymax=max([y1;y2;y3]);
dy=(ymax-ymin)*0.05;
rect=[0,ymin-dy,1,ymax+dy];
xbasc()
plot2d(x1, y1,style=1,frameflag=5,rect=rect)
plot2d(x2, y2,style=2,frameflag=0)
plot2d(x3, y3,style=-1,frameflag=0)
xtitle("Rysowanie wiekszej ilosci krzywych zlozonych z roznej ilosci punktow")
Przykład 15:powierzchnie
x=linspace(-%pi, %pi, 31);
z=sin(x)'*sin(x);
n=200;
theta=linspace(30,360,n);//390 pełny obrót
apha=[linspace(60, 0, n/2) linspace(0, 80, n/2)];// od góry do dolu
xselect()
xset("pixmap",1)//aktywowanie podwójnego buforowania
driver("Xll")
//zmieniamy parametr theta
for i=1:n
xset("wwpc") //wyczyszczenie z bieżacego bufora
plot 3d(x, y, z, theta=theta(i), alpha=alpha(l), leg="x@y@z", flag=[2 4 4])
xtitle("Zmany punktu widzenia przy pomocy parametru theta")
xset("wshow")
end
//zmieniamy parametr alpha
for i=1:n
xset("wwpc") //wyczyszczenie bieżacego bufora
plot 3d(x, y, z, theta=theta(i), alpha=alpha(l), leg="x@y@z", flag=[2 4 4])
xtitle("Zmany punktu widzenia przy pomocy parametru alpha")
xset("wshow")
end
xset("pixmap",0)
driver("Rec")
Przykład 16: Krzywe w przestrzeni:
t=linspace(0,4*\%pi, 100);
x=cos(t), y=sin(t); z=0.1*t; //spirala
param3d(x, y, z)
x2=x1+0.1*(1-rand(x1));
y2=x1+0.1*(1-rand(y1));
z2=x1+0.1*(1-rand(z1));
xbasc()
xset("font", 2, 3]
param3d1([x1 x2], [y1 y2], list([z1 z2], [1,-9], flag=[4 4])
xset("font", 4, 4)
xtitle("Spirala z perelkami")
Wyszukiwarka
Podobne podstrony:
41 Scharakteryzuj oddzialywania czasteczkowe na przykladzie wykresuprzyklad wykresy zespoloneprzykładowe błędne sprawko bez podpisanych wykresów, tabelek, rysunkówprzyklad opis wykresu 2DPrzyklad wykresy Bodegoprzykład MATLAB wykresycw6 arkusz obliczeniowy przykladprzykładowy test AprzykladowyJrkusz150UM[1] drukowOEiM AiR Przykladowy EgzaminZnaczenie korytarzy ekologicznych dla funkcjonowania obszarów chronionych na przykładzie Gorcówprzykladowe zadania redoksĆwiczenie 14 przykład6 6 Zagadnienie transportowe algorytm transportowy przykład 2Przyklad5 csproj FileListAbsolutewięcej podobnych podstron