Adam Szustalewicz
Modelowanie zjawisk przyrodniczych 2001/2002
w.2, 27.02.2002
Wykªad 2. Interakcyjne ±rodowisko do prowadzenia oblicze«
MATLAB
1. Literatura, internet:
1. P. Drozdowski, Wprowadzenie do MATLAB-a, (skrypt) Politechnika Krakowska, Kraków, 1995
(jest w bibliotece instytutu),
2. Brzózka, Dorobczy«ski, Programowanie w MATLAB, NIKOM, Warszawa 1998,
3. B. Mrozek, Z. Mrozek, Matlab 5.x ... poradnik u»ytkownika, PLJ, Warszawa 1998,
4. materiaªy internetowe zwi¡zane z MATLABem:
(a) http://www.mathworks.co.uk/access/helpdesk/help/techdoc/
demo_example.shtml#development_environment
(b) http://www.indiana.edu/ statmath/math/matlab/gettingstarted/
(c) http://bass.gmu.edu/matlab/
(d) http://www.mathworks.co.uk/support/
(e) http://www.mathworks.com/company/digest/index.shtml
(f) http://www.mathworks.com/matlabcentral/leexchange/index.jsp
(g) ftp://ftp.mathworks.com/pub/books/
5. wesole:
(a) http://www.tcs.uni.wroc.pl/eciepecie/etapy.html
(b) http://rutcor.rutgers.edu/ bisrael/
2. Dwa przykªady oblicze« w MATLABie
%echo off;
% test linequ
clc; format long e; clear
echo on;
%
test linequ
% This program solves linear systems Ax = B.
% Remark. linequ.m is used.
% Solve the system Ax = B where:
A = [1
5
4 -3;
4
8
4
0;
1
3
0 -2;
1
4
7
2];
A
b = [-4; 8; -4; 10]
pause % dane
x = linequ(A,b);
disp(x);
res = b - A*x;
disp(res);
pause % rozwiazanie i residuum
x = inv(A)*b
res = b - A*x
pause % odwracanie macierzy: inv
x = A\b;
disp(x');
1
Adam Szustalewicz
Modelowanie zjawisk przyrodniczych 2001/2002
w.2, 27.02.2002
res = b - A*x;
disp(res');
pause % "lewe dzielenie": A\b
fprintf('\n\n przyklad nastepny z macierza Hilberta:')
pause
n=8;
A = hilb(n)
%disp(A);
pause % A
x=ones(n,1)
%disp(x);
pause % x
b = A*x
pause % b = prawa strona
x = linequ(A,b)
res = b - A*x
pause % linequ
x = inv(A)*b
res = b - A*x
pause % odwracanie macierzy: inv
x = A\b
res = b - A*x
pause % "lewe dzielenie": A\b
================= 2 =========================
clear, clc, echo off
I=1000;
disp(' for i=1:I x=x+1.0/(i*i); ');
x=0.0;
for i=1:I
r=1.0/(i);
x=x+r;
end
fprintf('
x = %f\n',x);
fprintf('
x = %20.12e\n',x);
disp(' for i=I:-1:1 y=y+1.0/(i*i); ');
y=0.0;
for i=I:-1:1
r=1.0/(i);
y=y+r;
end
fprintf('
y = %f\n',y);
fprintf('
y = %20.12e\n',y);
disp('
roznica:');
fprintf('
x-y = %20.12e\n',x-y);
if 1
disp('
eps maszynowe:');
e=1.0;
x=1.0; r=x+e; j=0;
while r~=x
e=e/2.0;
r=x+e;
j=j+1;
2
Adam Szustalewicz
Modelowanie zjawisk przyrodniczych 2001/2002
w.2, 27.02.2002
end
e=e+e;
j=j-1;
fprintf('
xmin = %20.12e
j = %i\n',e,j);
end
% if 1
3. Rzeczy wa»ne w Matlabie
1. Nazwy zmiennych
Nazwa zmiennej w Matlabie skªada si¦ z liter lub cyfr lub znaku podkre±lenia i musi rozpoczyna¢ si¦ od
litery.
2. Instrukcja podstawienia nie zako«czona ±rednikiem powoduje wydrukowanie warto±ci podstawianej.
3. Stosowanie maªych lub du»ych liter w nazwach.
Litery du»e i maªe s¡ przez Matlab rozró»niane. Mo»emy wyª¡czy¢ rozró»nianie du»ych i maªych liter.
Polecenia: ???
(a) casesen o wyª¡cza rozró»nianie du»ych i maªych liter.
(b) casesen on wª¡cza rozró»nianie du»ych i maªych liter.
4. Pierwsze«stwo operatorów arytmetycznych
(1) podnoszenie do pot¦gi ( , .),
(2) mno»enia, dzielenia (* , .* , / , ./ , \ , .\),
(3) dodawanie, odejmowanie (+ , −).
Nawiasy okr¡gªe pozwalaj¡ na ustalenie wybranej kolejno±ci dziaªa«, a argumenty musz¡ pasowa¢ do
operatora dziaªania.
5. Instrukcje warunkowe if
(1) if <warunek>, <instr1 >; <instr2 >; . . . <instrn >; end
(zamiast ±redników mog¡ by¢ przecinki.)
(2) if <warunek>
<
instrukcjeA>
else
<
instrukcjeB>
end
(3) if <warunek1>
<
instrukcjeA>
elseif <warunek2>
<
instrukcjeB>
elseif <warunek3>
<
instrukcjeC>
. . .
else
<
instrukcjeE>
end
6. <warunki>, wyra»enia logiczne
W miejscu <warunku> mo»e by¢
(1) wyra»enie arytmetyczne: warto±ci¡ warunku jest prawda dla ró»nej od zera warto±ci wyra»enia
arytmetycznego i faªsz w wypadku zera,
(2) wyra»enie logiczne zbudowane za pomoc¡ operatorów logicznych, podanych w kolejno±ci pierwsze«-
stwa:
relacje: <, <=, ==, =, >, >=,
negacja: ,
koniunkcja: &,
alternatywa: |.
3
Adam Szustalewicz
Modelowanie zjawisk przyrodniczych 2001/2002
w.2, 27.02.2002
Przykªad z równania kwadratowego:
if b2-4*a*c==0&a=0, x=-b/(2*a), end
Wida¢, »e warto u»ywa¢ nawiasów i rozstrzeli¢ tekst w kilku wierszach.
4. Zadania
1. Uruchomi¢ MATLABa. Wyda¢ komend¦ demo i obejrze¢ mo»liwo±ci programu. Wyda¢ komend¦ peaks
graka trójwymiarowa.
2. Zapozna¢ si¦ z komendami help, clc, who, whos, clear, echo, diary, delete.
3. Wyznaczy¢ warto±ci wyra»e« bez u»ycia Matlaba:
(a) 2 3 2
(b) -4 2
(c) dla a = [2 -1 5 0]; r = 0.9; b = [3 2 -1 4]; policzy¢
i. a * (1 + r) 10
ii. a .* (1 + r) 10
iii. a(1 + r) 10
iv. c = b + a - 3
v. c = 2 * a + a . b
vi. c = b ./ a
vii. c = b .\ a
viii. c = a . b
ix. c = (2) . b + a
x. c = 2*b/3.0.*a
xi. c = b*2.*a
(d) Fraktal. Opracowa¢ procedur¦ znajduj¡c¡ pierwiastki równania
z
4
= 1
w zbiorze liczb zespolonych, metod¡ Newtona. Wyprowadzi¢ odpowiednie wzory. Wybieraj¡c teraz
prostok¡t na pªaszczy»nie zespolonej mo»emy uruchamia¢ metod¦ Newtona przyjmuj¡c jako punkty
startowe punkty pªaszczyzny odpowiadaj¡ce kolejnym pikslom ekranu, znajduj¡cym sie w wybranym
prostok¡cie. Teraz, po przydzieleniu poszczególnym pierwiastkom ró»nych kolorów, nale»y startowe
piksle za±wieca¢ w kolorze otrzymanego rozwi¡zania. Pi¡ty kolor oznacza¢ b¦dzie brak rozwi¡zania.
*
*
*
4