Języki Modelowania i Symulacji

Podobne dokumenty
Języki Modelowania i Symulacji

Metody numeryczne Wykład 4

Zaawansowane metody numeryczne

Egzamin z Metod Numerycznych ZSI, Egzamin, Gr. A

Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Układy równań liniowych. Krzysztof Patan

Metody numeryczne. Janusz Szwabiński. Metody numeryczne I (C) 2004 Janusz Szwabiński p.1/50

Rozdział 1. Pierwsze kroki w MATLAB-ie Rozdział 2. Grafika w MATLAB-ie Wykresy dwu- i trójwymiarowe 25 Wykorzystanie gotowych rysunków 36

Wartości i wektory własne

Rozwiązywanie układów równań liniowych

Języki Modelowania i Symulacji

Podstawowe struktury danych Tablice, macierze. LABORKA Piotr Ciskowski

UKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH

04 Układy równań i rozkłady macierzy - Ćwiczenia. Przykład 1 A =

Obliczenia równoległe w zagadnieniach inżynierskich. Wykład 6

MATLAB. Leksykon kieszonkowy

NUMERYCZNE ALGORYTMY PRZECHOWYWANIA MACIERZY RZADKICH

Projekt 6: Równanie Poissona - rozwiązanie metodą algebraiczną.

PODSTAWY AUTOMATYKI. MATLAB - komputerowe środowisko obliczeń naukowoinżynierskich - podstawowe operacje na liczbach i macierzach.

Wstęp do metod numerycznych Faktoryzacja Cholesky ego i QR. P. F. Góra

UKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH

Numeryczna algebra liniowa. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

SKRYPTY. Zadanie: Wyznaczyć wartość wyrażenia arytmetycznego

Analiza numeryczna Kurs INP002009W. Wykłady 6 i 7 Rozwiązywanie układów równań liniowych. Karol Tarnowski A-1 p.

WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI INSTYTUT AUTOMATYKI I INFORMATYKI KIERUNEK AUTOMATYKA I ROBOTYKA STUDIA STACJONARNE I STOPNIA

Wstęp do metod numerycznych Równania macierzowe Faktoryzacja LU i Cholesky ego. P. F. Góra

Metody uporządkowania

Plan wykładu. Obliczenia równoległe w zagadnieniach inżynierskich. Wykład 6 p. Rozwiazywanie układów równań. metody bezpośrednie,

Numeryczna algebra liniowa

A A A A A A A A A n n

Metody Obliczeniowe w Nauce i Technice

Języki Modelowania i Symulacji

Zaawansowane metody numeryczne

Modelowanie Systemów Dynamicznych Studia zaoczne, Automatyka i Robotyka, rok II. Podstawy MATLABA

Ćwiczenie 3: Wprowadzenie do programu Matlab

Metody numeryczne. Wersja robocza, 19 czerwca 2009

Wstęp do metod numerycznych Faktoryzacja macierzy. P. F. Góra

Metody uporządkowania

ALGEBRA LINIOWA. Wykład 2. Analityka gospodarcza, sem. 1. Wydział Zarządzania i Ekonomii Politechnika Gdańska

Wprowadzenie do środowiska

Metody dekompozycji macierzy stosowane w automatyce

Metody numeryczne II. Układy równań liniowych

Wstęp do metod numerycznych Algebraiczna metoda gradientów sprzężonych. P. F. Góra

dr Mariusz Grządziel 15,29 kwietnia 2014 Przestrzeń R k R k = R R... R k razy Elementy R k wektory;

Macierze Lekcja I: Wprowadzenie

ECTS (Część 2. Metody numeryczne) Nazwa w języku angielskim: Algorithms and data structures.

III TUTORIAL Z METOD OBLICZENIOWYCH

Metody iteracyjne rozwiązywania układów równań liniowych (5.3) Normy wektorów i macierzy (5.3.1) Niech. x i. i =1

Matlab, zajęcia 2. Dwukropek. Tomasz Mostowski 28.luty 2008

Wykład III Układy równań liniowych i dekompozycje macierzy

Pisząc okienkowy program w Matlabie wykorzystujemy gotowe obiekty graficzne, lub możemy tworzyć własne obiekty dziedzicząc już zdefiniowane.

Komputerowa analiza zagadnień różniczkowych 3. Numeryczne zagadnienie własne

MATEMATYKA I SEMESTR ALK (PwZ) 1. Sumy i sumy podwójne : Σ i ΣΣ

5. Rozwiązywanie układów równań liniowych

1 Metody rozwiązywania równań nieliniowych. Postawienie problemu

10. Metody obliczeniowe najmniejszych kwadratów

Sposoby tworzenia uwarunkowania wstępnego dla metody gradientów sprzężonych

Obliczenia w programie MATLAB

MATLAB Prowadzący: dr hab. inż. Marek Jaszczur Poziom: początkujący

Metody numeryczne. materiały do wykładu dla studentów

det[a 1,..., A i,..., A j,..., A n ] + det[a 1,..., ka j,..., A j,..., A n ] Dowód Udowodniliśmy, że: det[a 1,..., A i + ka j,..., A j,...

Metody rozwiązania równania Schrödingera

Uniwersytet Kazimierza Wielkiego w Bydgoszczy Zespół Szkół nr 5 Mistrzostwa Sportowego XV Liceum Ogólnokształcące w Bydgoszczy

Wstęp do metod numerycznych Uwarunkowanie Eliminacja Gaussa. P. F. Góra

1 Wartości własne oraz wektory własne macierzy

Wstęp do metod numerycznych Metody iteracyjne Algebraiczna metoda gradientów sprzężonych. P. F. Góra

Zadania z Algebry liniowej 4 Semestr letni 2009

Wyznaczanie wartości i wektorów własnych macierzy (problem własny)

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Stosowana Analiza Regresji

Wstęp do metod numerycznych Faktoryzacja QR i SVD. P. F. Góra

METODY NUMERYCZNE. wykład. konsultacje: wtorek 10:00-11:30 środa 10:00-11:30. dr inż. Grażyna Kałuża pokój

Algebra Liniowa 2 (INF, TIN), MAP1152 Lista zadań

Metody Numeryczne Optymalizacja. Wojciech Szewczuk

ANALIZA DANYCH I PROCESÓW. Mgr inż. Paweł Wojciech Herbin

Przestrzeń unitarna. Jacek Kłopotowski. 23 października Katedra Matematyki i Ekonomii Matematycznej SGH

Krótkie wprowadzenie do macierzy i wyznaczników

Analiza matematyczna i algebra liniowa Macierze

Obliczenia naukowe Wykład nr 8

Filtracja obrazów. w dziedzinie częstotliwości. w dziedzinie przestrzennej

DB Algebra liniowa semestr zimowy 2018

Większość zagadnień inżynierskich sprowadza się do przewidywania odpowiedzi projektowanego urządzenia na działanie zewnętrznych czynników.

Rozwiązywanie algebraicznych układów równań liniowych metodami iteracyjnymi

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

Macierze. Rozdział Działania na macierzach

do MATLABa programowanie WYKŁAD Piotr Ciskowski

MODELOWANIE PRZESTRZENI ZA POMOCĄ MULTIILOCZYNÓW WEKTORÓW

Analiza matematyczna i algebra liniowa Macierze

WYKŁAD 9 METODY ZMIENNEJ METRYKI

Wykład 5. Metoda eliminacji Gaussa

MATLAB - laboratorium nr 1 wektory i macierze

Wstęp do metod numerycznych 5. Numeryczne zagadnienie własne. P. F. Góra

Zanim zaczniemy GNU Octave

Algebra WYKŁAD 3 ALGEBRA 1

RACHUNEK MACIERZOWY. METODY OBLICZENIOWE Budownictwo, studia I stopnia, semestr 6. Instytut L-5, Wydział Inżynierii Lądowej, Politechnika Krakowska

Wymiar musi być wyrażeniem stałym typu całkowitego, tzn. takim, które może obliczyć kompilator. Przykłady:

1. PODSTAWY TEORETYCZNE

Metoda eliminacji Gaussa. Autorzy: Michał Góra

Metody numeryczne. materiały do wykładu dla studentów

Transkrypt:

e Języki Modelowania i Symulacji e Marcin Ciołek Katedra Systemów Automatyki WETI, Politechnika Gdańska 14 grudnia 2011

O czym będziemy mówili? e 1 e 2 3 4 5

e help sparse rzadka zawiera stosunkowo mała liczbę niezerowych elmentów w swoich komórkach. Oszczędność na: czasie obliczeniowym, pamięci do przechowywania. Na przykład macierz jednostkowa n n 1 0... 0 0 1... 0...... 0 0... 1

e help sparse Czy potrzba tyle samo pamięci, aby przechować element zerowy i niezerowy? MATLAB używa trzech, żeby przechować macierz rzadka: wektor z niezerowymi elementami w formacie zmiennoprzecinkowym (nnz - długość wektora), wektor z indeksami wierszy odpowiadajacymi niezerowym elementom(nnz - długość wektora), wektor z ze wskaźnikami do poczatku każdej kolumny (n - długość wektora). Liczba bajtów potrzebna do zapisania j: 8 nnz + 4 (nnz + n)

help sparse e A = 0 0 0 5 0 2 0 0 1 3 0 0 0 0 4 0 % konwersja A na macierz rzadką >> S = sparse(a) S = (3,1) 1 (2,2) 2 (3,2) 3 (4,3) 4 (1,4) 5 % powrót do postaci pełnej >> A == full(s);

help sparse e A = 0 0 0 5 0 2 0 0 1 3 0 0 0 0 4 0 %bezpośrednie tworzenie rzadkich S = sparse([3 2 3 4 1],[1 2 2 3 4], [1 2 3 4 5],4,4) S = (3,1) 1 (2,2) 2 (3,2) 3 (4,3) 4 (1,4) 5

help sparse e n = 5; E = eye(n) E = 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 S = sparse(1:n,1:n,1); S = (1,1) 1 (2,2) 1 (3,3) 1 (4,4) 1 (5,5) 1

help sparse e whos Name Size Bytes Class Attributes E 5x5 200 double S 5x5 128 double sparse n 1x1 8 double Name Size Bytes Class Attributes E 100x100 80000 double S 100x100 2408 double sparse n 1x1 8 double

help sparse e 350 300 250 Oczędność czasu obliczeniowego E-czas/S-czas 200 150 100 50 0 0 10 20 30 40 50 60 70 80 90 100 Numer iteracji %Postać klasyczna tic E^2; toc Elapsed time is 0.000697 seconds. %Postać rzadka tic S^2; toc Elapsed time is 0.000027 seconds.

help sparse e 0 10 20 30 40 50 60 spy(s) 70 80 90 100 0 20 40 60 80 100 nz = 100

e help spy modeluje ósme stadium destylacji chemicznej 0 50 100 150 200 250 300 350 400 450 0 100 200 300 400 nz = 1887 load west0479 spy(west0479) whos Name Size Bytes Class Attribute west0479 479x479 24564 double sparse

e help sparse nnz(s) - zwraca liczbę niezerowych j nonzeros(s) - zwraca kolumnę niezerowych j nzmax(s) - zwraca liczbę miejsc zarezerwowanych na niezerowe elementy [i,j,s] = find(s) - zwraca indeksy wierszy i kolumn niezerwoych n = 5; S = sparse(1:n,1:n,1); nnz(s)-> ans = 5 nzmax(s)-> ans = 5 nonzeros(s)-> ans = 1 1 1 1 1 [i,j,s] = find(s) i = [1 2 3 4 5]' j = [1 2 3 4 5]' s = [1 1 1 1 1];

help sparse e B=speye(4); % macierz jednostkowa diagonalna [i,j,s]=find(b); [i,j,s] = 1 1 1 2 2 1 3 3 1 4 4 1 B(3,1) = 42; ans = 1 1 1 3 1 42 2 2 1 3 3 1 4 4 1

e C = 4 0 0-1 0 4 0-1 0 0 4-1 -1-1 -1 4 help sparse C=4*speye(4); C(1:3,4)=-1; C(4,1:3)=-1; C=4*speye(4); for k=1:3 C(k,4)=-1; C(4,k)=-1; end % to jest dopiero dobre podejście i = [1 4 2 4 3 4 1 2 3 4]'; j = [1 1 2 2 3 3 4 4 4 4]'; s = [4-1 4-1 4-1 -1-1 -1 4]'; CSP = sparse(i,j,s);

e help spdiags Tworzenie j z jej diagonalnych S = spdiags(b, d, m, n) B = d = 41 11 0-3 52 22 0 0 63 33 13 2 74 44 24 >> S = spdiags(b,d,7,4); >> full(s) S= 11 0 13 0 0 22 0 24 0 0 33 0 41 0 0 44 0 52 0 0 0 0 63 0 0 0 0 74

e macierz Zapisywanie siatki powiazań przedstawionej za pomoca grafu 1. Kasia 0 1 0 1 2. Basia 1 0 1 0 3. Zosia 0 1 0 1 4. Gosia 1 0 1 0

e 5 4.5 4 3.5 3 2.5 2 Graf połączeń gplot 1.5 1 1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3 A = 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 %kordynaty węzłów >> xy = [1 3; 2 1; 3 3 ; 2 5] >> gplot(a,xy)

e bucky Model czastki C 60, postać czystego węgla z 60 atomami w prawie sferycznej konfiguiracji Graf połączeń - piłka Bucky'ego 0.8 0.6 0.4 0.2 0-0.2-0.4-0.6-0.8-1 -0.8-0.6-0.4-0.2 0 0.2 0.4 0.6 0.8 1 [B,v]=bucky; gplot(b,v) axis equal

bucky e Graf połączeń - piłka Bucky'ego 1 14 15 13 0.8 18 17 11 12 0.6 0.4 19 16 2 10 0.2 20 3 9 0 1 6-0.2 22 4 8 5 7-0.4 23 21-0.6 26 30 24 25-0.8 27 29-1 28-1 -0.5 0 0.5 1 k = 1:30; [B,v] = bucky; gplot(b(k,k),v(k,:)) axis square for j=1:30, text(v(j,1),v(j,2),int2str(j),... 'FontName','Times New Roman','FontSize',16); end

bucky e 0 10 20 30 40 50 Położenie niezerowych na płaszyźnie XY 60 0 10 20 30 40 50 60 nz = 180 k = 1:30; [B,v] = bucky; spy(b)

bucky e

permutacja e p = [1 3 4 2 5]; I = eye(5,5); %permutacja wierszowa P = I(p,:) P = 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 %permutacja kolumnowa R = I(:,p) R = 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1

permutacja e n=5; I=speye(n); p = [1 3 4 2 5]; P = I(p,:) R = I(:,p) p = (1:n)*R I = P = R = (1,1) 1 (1,1) 1 (1,1) 1 (1,1) 1 (4,2) 1 (3,2) 1 (1,1) 1 (2,3) 1 (4,3) 1 (1,1) 1 (3,4) 1 (2,4) 1 (1,1) 1 (5,5) 1 (5,5) 1 p = 1 3 4 2 5

permutacja e Jak uzyskać wektor permutacji? n=5; S = [ones(1,n); ones(n-1,1) speye(n-1,n-1)]; A = full(s) 1 1 1 1 1 1 1 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 1 j = colperm(s) j = 2 3 4 5 1 p = sort(full(sum(spones(s)) p = 2 3 4 5 1

e permutacja Jaki wpływ może mieć wstępna permutacja j na wynik algorytmów Cholesky ego i LU? L = lu(s); nnz(l) ans = 23 fill(l) ans = 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000-1.0000 0-1.0000-1.0000 1.0000 0-1.0000-1.0000-1.0000 1.0000 1.0000 1.0000 2.0000 1.0000 1.0000 1.0000 1.0000 0.5000 1.5000

e permutacja Jaki wpływ może mieć wstępna permutacja j na wynik algorytmów Cholesky ego i LU? S = j = 1 1 1 1 1 1 1 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 1 2 3 4 5 1 S1 = S(j,j); S1 = 1 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 1 1 1 1 1

e permutacja Jaki wpływ może mieć wstępna permutacja j na wynik algorytmów Cholesky ego i LU? S = j = 1 1 1 1 1 1 1 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 1 2 3 4 5 1 S1 = S(j,:); S1 = 1 1 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 1 1 1 1

e permutacja Jaki wpływ może mieć wstępna permutacja j na wynik algorytmów Cholesky ego i LU? S1 = 1 1 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 1 1 1 1 j = 2 3 4 5 1 S2 = S1(:,j); S2 = 1 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 1 1 1 1 1

e permutacja Jaki wpływ może mieć wstępna permutacja j na wynik algorytmów Cholesky ego i LU? L = lu(s(j,j)); nnz(l) ans = 13 fill(l) ans = 1 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 1 1 1 1-3

symrcm e Zmiana uporzadkowania (metoda Cuthill-McKee) umieszcza niezerowe elementy w pobliżu głównej diagonali, zachowujac symetrię ich ułożenia nie daje gwarancji znalezienia minimalnej szerokości pasma, nadaje się zarówno dla symetrycznych i niesymetrycznych, użyteczna dla problemów long and thin.

symrcm e B 0 10 20 30 40 50 60 4 0 20 40 60 nz = 180 B(p,p) 0 10 20 30 40 50 60 0 20 40 60 nz = 180 B = bucky; p = symrcm(b); R = B(p,p);

symamd i colamd e Zmiana uporzadkowania (metoda Minimum Degree Ordering) bazuje na obserwacji zmiany liczby połaczeń węzłów podczas algorytmu eliminacji Gaussa macierz wynikowa jest rzadsza niż w przypadku zastosowania innych uporzadkowań, dla symetrycznych - symamd, dla niesymetrycznych - colamd.

symamd i colamd e B 0 10 20 30 40 50 60 4 0 20 40 60 nz = 180 B(p,p) 0 10 20 30 40 50 60 0 20 40 60 nz = 180 B = bucky; p = symamd(b); R = B(p,p);

lu e 4 n=length(b); B=B-3*speye(n); r = symrcm(b); p = symamd(b); nnz(lu(b)) ans = 1022 nnz(lu(b(r,r))) ans = 968 nnz(lu(b(p,p))) ans = 636

chol e 0 20 chol(b) 0 20 chol(b(r,r)) 0 20 chol(b(p,p)) 40 4 60 0 20 40 60 nz = 541 40 60 0 20 40 60 nz = 514 40 60 0 20 40 60 nz = 348 n=length(b); B=B+4*speye(n); r = symrcm(b); p = symamd(b); nnz(chol(b)) ans = 541 nnz(chol(b(r,r))) ans = 514 nnz(chol(b(p,p))) ans = 348

eigs e eigs(a, B, k, sigma, opts) Funkcja ta pozwala na iteracyjne znajdowanie (domyślnie jest 6 największych) dla bardzo dużych i rzadkich. musi być kwadratowa. opts: lm - największe własne opts: sm - najmniejsze własne

eigs e 4 %Symetryczna dodatnio określona macierz o rozmiarze %632x632, 18 powtarza się dla 4 A = delsq(numgrid('c',30)); d = eig(full(a)); [dum,ind] = sort(abs(d)); dlm = eigs(a); dsm = eigs(a,6,'sm');

e 4 4 eigs(a,18,sigma) eigs 4 4 0 2 4 6 8 10 12 14 16 18 eigs(a,18,4.0)??? %1/(lambda - 4.0) gdzie lambda jest estymatą % własnej sigma = 4-1e-6; [V,D] = eigs(a,18,sigma);

svds e A - mxn s = svds(a); (nie musi być rzadka!) s wektor sześciu największych A s = svds(a, k); s = svds(a,k, L ); s wektor k największych s = svds(a, k, sigma); s wektor k najbliższych skalarnemu sigma

e svds s = svds(a, k, sigma, options); opcja znaczenie domyślnie tol kryterium zbieżności: 1e-10 norm(av-us,1)<=tol*norm(a,1) (A=USV ) maxit ograniczenie liczby iteracji 300 disp liczba 0 wyświetlana w każdej iteracji Zwracane sa tylko te szczególne, dla których osiagnięto wymagana dokładność

svds e [U, S, V] = svds(a,...); U macierz mxk o ortonormalnych kolumnach S diagonalna kxk V nxk o ortonormalnych kolumnach U*S*V przybliżenie A (w 1-normie) o rzędzie najbliższym A [U, S, V, flag] = svds(a,...); flag = 0 zbieżność: norm(a*v-u*s,1) <= tol*norm(a,1)) 1 brak zbieżności)

svds e load west0479 s = svd(full(west0479)); display(s(1:4)) ans = 1.0e+005 * [3.1895 3.1725 3.1695 3.1685] Elapsed time is 0.083878 seconds. sl = svds(west0479,4) sl = 1.0e+005 * [3.1895 3.1725 3.1695 3.1685] Elapsed time is 0.009256 seconds.