Zad 1:

Transkrypt

Zad 1:
8/03/2012
INFORMATYKA – laboratorium / semestr letni 2011/12 / lista 3
1. a) Funkcję z=sin(x)*cos(4y) przedstaw na 4 wybranych rodzajach wykresów
trójwymiarowych, na jednym rysunku.
b) Przedstaw film z animacją z=sin(x)*cos(ay), zmieniająca parametr a, na wybranym
rodzaju wykresu. Dobierz parametr a oraz prędkość odtwarzania tak, aby animacja zachowała
płynność.
2. Porównaj prędkość działania poniższych kodów, które przypisują co drugiemu
elementowi myVector, wartość jego cotangensa. Możesz użyć poleceń tic i toc..
% pętla for:
myVector = 1:100000;
for x=1:length(myVector)
if(mod(myVector(x),2))
myVector(x) = cot(myVector(x));
end
end
% po wektoryzacji:
myVector = 1:100000;
indexTrue = mod(myVector,2)==1;
myVector(indexTrue) = cot(myVector(indexTrue));
W oparciu o powyższy pomysł, zwektoryzuj poniższy kod, który „odbija końcówki sinusa”.
Porównaj czas działania.
myVector = sin(-10:.01:10);
for x=1:length(myVector)
if(myVector(x) > 0.9)
myVector(x) = 1.8 - myVector(x);
elseif(myVector(x) < -0.9)
myVector(x) = -1.8 - myVector(x);
end
end
Sprametryzuj utworzony program: niech Twoja funkcja przyjmuje wektor wartości dowolnej funkcji
oraz wartość graniczną odbicia. Niech zwraca wektor wartości po odbiciu końcówek.
3. Zwektoryzuj kod zadania 2 z listy 2. Użyj funkcji meshgrid.
4. Przedstawiony kod usuwa powtórzone dane z wektora x i zapisuje wynik w y. Ponadto
zlicza w count ilość duplikatów dla każdego elementu w x. Pomysł opiera się na
posortowaniu wartości x, a następnie użycie funkcji diff, która domyślnie liczy różnicę
pomiędzy kolejnymi elementami wektora. Zwróć uwagę na długość wektora zwracanego
przez diff. Użyta również funkcja find domyślnie zwraca indeksy elementów
niezerowych.
x = round(100*(rand(100,1)));
x = sort(x(:));
difference = diff([x;max(x)+1]);
count = diff(find([1;difference]));
y = x(find(difference));
plot(y,count)
Zmodyfikuj kod tak, by zwracał tylko elementy powtórzone co najmniej 2 razy.
Sparametryzuj program, tak by działał na dowolnym przekazanym wektorze danych
oraz zwracał elementy powtórzone co najmniej zadaną liczbę razy oraz ich liczności.
Terminy listy - zadania:
1-2 – 12-14/03/2012
3-4 – 19-21/03/2012
Powodzenia!
Witold Dyrka