Wrocław, 2.05.2012 Przykładowe pytania na kolokwium z

Transkrypt

Wrocław, 2.05.2012 Przykładowe pytania na kolokwium z
Wrocław, 2.05.2012
Przykładowe pytania na kolokwium z Informatyki dla Inżynierii Biomedycznej 14.05.2012
1. Krótko zdefiniuj następujące pojęcia i techniki. Krótko wyjaśnij do czego i dlaczego są stosowane:
(Uwaga! Na kolokwium może się pojawić 1-3 pojęć)
• Język interpretowany
• Dynamiczny system typów
• Kompilacja Just-In-Time
• Programowanie zorientowane obiektowo
• Enkapsulacja (hermetyzacja)
• Dziedziczenia
• Programowanie sterowane zdarzeniami
• Funkcje zwrotne (callback)
2. Wyjaśnij czym są, porównaj (/) i/lub podaj przykład kodu źródłowego zawierającego (*):
(Uwaga! Na kolokwium może się pojawić 1-3 pojęć)
• M-skrypt / M-funkcja
• Funkcja główna / Subfunkcja
• Warunki początkowe*
• Macierz rzadka
• Operatory logiczne*
• Prealokacja tablic*
• Indeksowanie liniowe / wiersz-kolumna / logiczne*
• Replikacja wektora*
• Wektoryzacja
• Wektoryzacja sterowania
• Tablica komórkowa / Struktura (w Matlabie)*
• Własności i metody klasy*
• Konstruktor*
• Klasa zwykła (przekazywana przez wartość) / Klasa uchwytowa (przekazywana przez referencję)*
• Grafika uchwytów*
• Układ oznaczony / układ niedookreślony / układ nadokreślony
• Dzielenie macierzowe*
• Aproksymacja / interpolacja / ekstrapolacja
• Uchwyt funkcji*
• Funkcja anonimowa*
• Całkowanie numeryczne*
• Różniczkowanie numeryczne*
3. Utwórz obiekt klasy (typu):
a) zmienna całkowitoliczbowa ze znakiem 32-bitowa:
b) tablica komórkowa 2x2 zawierająca:
liczbę całkowitą, wektor liczb rzeczywistych, łańcuch znaków oraz macierz liczb rzeczywistych 2x3
c) struktura przechowująca imię, nazwisko i datę urodzenia osoby.
4. Dane są macierze X=[1 6 3; 4 5 1] i Y=[2 3 6; 2 1 2]. Uzupełnij brakujące miejsca o operatory arytmetyczne
lub porównania, tak, aby przedstawione poniżej wyniki działań na macierzach były poprawne:
a) X…….Y = [3 9 9; 6 6 3]
b) X…….Y = [0 1 0; 1 1 0]
c) X…….Y = [0.5 2 0.5; 2 5 0.5]
5. Wygeneruj macierz, której pierwszy wiersz będzie stanowiło 25 liczb równomiernie rozłożonych
pomiędzy 2 a 8, a drugi wiersz - 25 liczb wygenerowanych na podstawie rozkładu normalnego:
a) podnieś do czwartej potęgi elementy o wartości >2
b) oblicz iloczyn elementów z pierwszych pięciu kolumn
c) znajdź element najmniejszy w całej macierzy
d) wybierz elementy podzielne przez 3 lub 5.
6. Napisz funkcję, która
- przyjmuje za argumenty współrzędne punktów na płaszczyźnie zadane w wektorach x,y
- sprawdza czy każda współrzędna x-owa ma odpowiednik y-owy i odwrotnie;
jeśli nie – generuje komunikat o błędzie (polecenie: error('Blad!'))
- liczy środek geometryczny układu punktów
- zwraca położenie środka
.../1
.../1
.../1
.../1
7. Zwektoryzuj poniższy kod i napisz wynik uzyskany po jego wykonaniu:
x = 1:5;
y = [2 4 6];
for j = 1:length(x)
for i = 1:length(y)
if x(j)<=2
f(i,j) = x(j);
else
f(i,j) = x(j)*y(i);
end
end
end
8. Przypisz numery błędów do ich opisów. Popraw błędy:
A __
B __
C __
Należy zastosować działanie tablicowe.
Próba użycia zmiennej, która nie istnieje.
Pomylono operatory porównania i przypisania.
1. a=1:10, a^2
??? Error using ==> mpower
Matrix must be square.
…..................................................................................
2. c=round(rand(1)*10), if c = 3, c = -3, end
??? c=round(rand(1)*10), if c = 3, c = -3, end
|
Error: The expression to the left of the equals sign is not a valid target for an
assignment.
…..................................................................................
3. a = 1:10, plot(a,b)
??? Undefined function or variable 'b'.
…..................................................................................
9. Uzupełnij luki w kodzie klasy PomiarElastyczności
classdef PomiarElastycznosci
%POMIARELASTYCZNOSCI przechowuje pomiary elastycznosci i liczy modul
…...................
Material
NumerProbki
Odksztalcenie
Naprezenie
end
properties (Dependent = true, SetAccess = private)
Modul
end
methods
function pe = PomiarElastycznosci(material,numprob,naprez,odkszt)
if nargin~=4 % Sprawdzamy poprawn? liczb? danych
…..............................................
end
pe.Material = material;
…..............................
…..............................
pe.Odksztalcenie = odkszt;
end
function obj = set.Material(........................)
if ~(strcmpi(material,'aluminum') || strcmpi(material,'stal'))
error('Akceptowany material to aluminium lub stal')
end
obj.Material = material;
end
function ….......... = get.Modul(obj)
ind = find(obj.Odksztalcenie > 0); % Tylko niezerowe wartosci
modul = mean(obj.Naprezenie(ind)./obj.Odksztalcenie(ind));
end
function …............(obj)
%DISP wyswietla obiekt typu PomiarElastycznosci
fprintf(1,'Material: %s\nNumerProbki: %g\nModul:%1.5g\n',...
obj.Material,obj.NumerProbki,obj.Modul);
end
end
end
10. pac jest obiektem uchwytowej klasy Pacjent
classdef pacjent < handle
properties
PESEL = ''
Oddzial = ''
end
methods
function p = pacjent(pesel,oddz)
p.PESEL = pesel;
p.Oddzial = oddz;
end
function przeniesienie(obj,nowy_oddz)
obj.Oddzial = nowy_oddz;
end
end
end
Wykonano następujące operacje:
>> pac = pacjent('54093001218','Intensywna Terapia');
>> pac2 = pac;
>> przeniesienie(pac2,'Kardiologia');
Co wyświetli następujące odwołanie do własności Oddział?
>> pac.Oddzial
…..........................................
11. Poniższa sekwencja poleceń tworzy 1) wykres liniowy (linia kropkowana, kolor linii niebieski),
2) nowy rysunek i 3) nowe osie współrzędnych, 4) kopiuje wykres do nowych osi, 5) zmienia kolor wykresu (linii) na
czerwony. Uzupełnij kod:
1>> hl = plot(x,y,'b:');
2>> f2 = …..................
3>> a2 = axes;
4>> set(hl,.................,.......);
5>> …...............................
12. Następujący układ równań liniowych zapisz w postaci macierzowej i przedstaw dowolną prawidłową metodę
rozwiązywania:
-x + 3y + 2z = 0
x
- z = 1
2x – 3y - z = 3
…..............................................................................
…..............................................................................
…..............................................................................
…..............................................................................
…..............................................................................
…..............................................................................
13. Załóżmy, że mamy do czynienia z danymi (x,y) zgrupowanymi w macierzy D. Stosując
następujący skrypt
>> x = D(:,1);
>> y = D(:,2);
>> plot(x,y,’k*’)
otrzymujemy wykres:
Zadaniem jest dopasowanie danych z powyższego wykresu funkcją
y=a0+a1*x^3+a2*cos(2π5x)
Do tego zadania napisano funkcję zamieszczoną a tabeli poniżej.
function [y_hat] = fitmyfunction(D,N)
1
% Funkcja wpisuje funkcje wg wzoru y=a0+a1*x^3+a2*cos(2pi5x)
2
x=D(:,1); y=D(2,:);
3
H=[ones(L,1) x.^3 cos(2*pi*f*x)];
4
P=(H'*H).^(-1)*H'*y;
5
y_hat=H.*P;
6
RMS=sqrt(min((y-y_hat).^2));
7
Wykaż błędy w tym kodzie.
14. a) Utwórz funkcję anonimową, liczącą wartość funkcji Gaussa przy parametrach µ=0 i s=1. Zaprezentuj
wywołania funkcji.
…..............................................................................
…..............................................................................
…..............................................................................
…..............................................................................
b) Policz pochodną utworzonej funkcji na przedziale [-10:0.01:10]
c) Policz całkę oznaczoną utworzonej funkcji na przedziale [-100, 100]
Uwagi
•
•
•
Przewiduję od 6 do 8 zadań na kolokwium
Obowiązuje zasada „zero tolerancji” dla ściągania (bez ostrzeżeń i bez możliwości odwołania)
Na kolokwium proszę odpowiadać tylko na pytania, na które rzeczywiście znają Państwo odpowiedź:
Dziękuję prof. Robertowi Iskanderowi i mgr Joannie Basałydze za opracowanie propozycji zadań
Witold Dyrka