Ćw.10 Matlab2

Transkrypt

Ćw.10 Matlab2
Ćw 8. Matlab (2)
M-pliki
W Matlab-ie można zapisać tekst ciągu instrukcji w pliku tekstowym ASCII o rozszerzeniu
.m
(tzw. m-pliki), a
następnie wykonać te instrukcje w całości (jedna po drugiej).
Przykład
1. Utworzyć własny folder.
2. Zmienić katalog bieżący w Matlabie na utworzony katalog metodami jak na rysunku:
3. Utworzyć nowy m-plik (menu File/New/M-file lub ikonka) i w oknie edytora Matlaba napisać
przykładowo poniższy ciąg poleceń Matlaba (można też wykorzystać Notatnik Windows):
a = 1.2;
b = 1.5;
c = 2.5;
d = a+b+c;
d = d -1;
disp('Obliczone d wynosi:');
disp(d)
Uwaga: średniki na końcu instrukcji powodują brak wyświetlenia echa instrukcji na ekranie.
4. Zapisać plik (File/Save as..) we własnym folderze nadając plikowi nazwę, np. test1.m (koniecznie z rozszerzeniem m). Nazwa musi się zaczynać od litery, w nazwie pliku zabronione są polskie litery i spacje, nazwa pliku nie może też być taka sama, jak nazwa zmiennej w kodzie pliku.
5. Wykonanie m-pliku przy pomocy narzędzia Run w oknie edytora m-pliku (lub F5).
6. Przeanalizować rezultat wykonania skryptu.
Wykresy 2D
Funkcja plot
Definiujemy wektor serii x i wektor y(x):
>>x= [0 1 2 3 4 5 6 7 8 9 10] % wektor serii wartości x
albo:
>>x=0:10
>>y=sqrt(x)
>>plot(x,y)
%generowanie wektora co 1, wart_pocz:wart_konc
% wektor wartości y=f(x)
% narysowanie wykresu (w osobnym oknie)
Dwie krzywe w jednym układzie współrzędnych:
>>x=0:pi/50:6*pi
>>y=cos(2*x)./sqrt(x+1)
>>z=sin(x)
>>plot(x,y,'b',x,z,'r')
% definicja wektora x
% definicja wektora y(x)
% definicja wektora z(x)
% (b=blue, r=red)
Uwaga: Stosujemy operator ./ dzielenie elementowe wektorów.
Przydatne dodatkowe funkcje (wykonać po funkcji plot):
grid
axis([xmin xmax ymin ymax])
title('Tekst')
xlabel('Opis osi x')
ylabel('Opis osi y')
Funkcja fplot
Dla funkcji fplot niepotrzebne są wektory dla zmiennych – jedynie wyrażenie tekstowe (lub tablica wyrażeń) opisujące funkcję:
fplot ( ' wyrażenie_arytmetyczne (x) ' , [ x_pocz x_konc ] )
fplot ( ' wyrażenie_arytmetyczne (x) ' , [ x_pocz x_konc y_pocz y_kon ] )
fplot ( ' [w1(x), w2(x)] ' , [ x_pocz , x_konc y_pocz , y_kon ] )
Przykład:
>>fplot('sin(x*x)/x',[0 4*pi]) % punkt dzielenia przez 0 nie jest rysowany
Dwie krzywe na wykresie:
>>fplot('[sin(x*x)/x , cos(x)]',[0 2*pi])
Funkcja mesh – powierzchnia 3D
>>y=0:pi/50:3*pi
>>x=y'
>>z=sin(x)*cos(y)
>>mesh(x,y,z)
% definicja wektora wierszowego y
% definicja wektora kolumnowego x (y transponowane)
% definicja wektora z(x,y)
% wykres
Funkcja plot3 – krzywa 3D
>>x=0:pi/100:6*pi
>>y=exp(-0.06*x).*sin(5*x)
>>z= exp(-0.06*x).*cos(5*x)
>>plot3(x,y,z)
% definicja wektora x
% definicja y(x)
% definicja z(x)
% wykres
Zadania
7. Wykonać na wykresie obrazek kwardratu funkcją plot (utworzyć wektory x i y dla współrzędnych punktów narożnych).
−
x
8. Wykonać wykres funkcji e 3 sin x w przedziale [–10, 10] stosując funkcję plot i fplot.
9. Wykonać w jednym układzie współrzędnych wykresy dwóch paraboli podanych równaniami
2-go stopnia o zróżnicowanych współczynnikach.
10. Wykonać wykres 3D funkcji:
, =
.
Instrukcja warunkowa
Postać ogólna instrukcji:
if warunek1
instrukcje (wykonywane gdy warunek1 jest prawdą)
elseif warunek2
instrukcje (wykonywane gdy warunek2 jest prawdą)
elseif warunek3
instrukcje (wykonywane gdy warunek3 jest prawdą)
else
instrukcje (wykonywane gdy nieprawdziwe wszystkie warunki)
end
Bloki elseif można dowolnie "rozmnażać", chociaż może ich nie być. Bloku else może także nie być.
Uwaga: po else nie podajemy warunku! (pozostałe przypadki).
Przykłady warunków:
a == 0 (!! równe UWAGA: 2 znaki =)
b<c
2*a >= 5
x ~= 5
(różne od 5)
x>0 && x<=10 (&& operator koniunkcji – przynależność do przedziału (0, 10])
(x>0 && x<10) || (x>20 && x<30) (|| operator alternatywy – w tym lub tym przedziale")
Warunki dają wartość prawda (true) lub fałsz (false).
Przeanalizować przykłady, tworząc i wykonując odpowiednie m-pliki:
Przykład 1a:
a=1
b=6
c=3
delta = b^2-4*a*c;
if delta<0
disp ('delta jest ujemne')
else
delta
end;
Przykład 1b (interakcja z użytkownikiem):
a = input('Podaj a:');
b = input('Podaj b:');
c = input('Podaj c:');
delta = b^2-4*a*c;
if delta<0
disp ('delta jest ujemne')
elseif delta==0
disp('delta=0');
else
disp('delta=');
disp(delta);
end;
Zadania
1. Uzupełnić przykład 1b o:
a. obliczanie niewiadomych x oraz x1 i x2 w odpowiednich miejscach.
b. sprawdzenie rozwiązań, czyli podstawienie pierwiastków do równania i test czy da to
wynik 0.
2. Napisać m-plik, w którym rysowany jest wykres funkcji a sin(bx+c), gdzie a, b, c oraz granice
przedziału zmiennej x podawane są interakcyjnie przez użytkownika.
3. Napisać m-plik rozwiązujący równanie 3-go stopnia z wykorzystaniem funkcji roots, gdzie
współczynniki a, b, c, d podaje użytkownik.