Podstawowe struktury danych Tablice, macierze LABORKA Piotr Ciskowski
przykład 1. zabawy z macierzami wygeneruj macierze Pascala różnych rozmiarów, wydedukuj z nich zasadę tworzenia» pascal ( 5 )
przykład 1. zabawy z macierzami utwórz macierz z obrazu Dürera
przykład 1. zabawy z macierzami utwórz macierz z obrazu Dürera» A = [ 16 3 2 13 ; 5 10 11 8 ; 9 6 7 12 ; 4 15 14 1 ] A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1 zsumuj jej elementy w kolumnach» sum ( A )
przykład 1. zabawy z macierzami utwórz macierz z obrazu Dürera» A = [ 16 3 2 13 ; 5 10 11 8 ; 9 6 7 12 ; 4 15 14 1 ] A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1 stransponuj ją» A
przykład 1. zabawy z macierzami utwórz macierz z obrazu Dürera» A = [ 16 3 2 13 ; 5 10 11 8 ; 9 6 7 12 ; 4 15 14 1 ] A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1 oblicz sumę elementów w kolumnach tej macierzy stransponowanej» sum ( ans )» sum ( A )
przykład 1. zabawy z macierzami utwórz macierz z obrazu Dürera» A = [ 16 3 2 13 ; 5 10 11 8 ; 9 6 7 12 ; 4 15 14 1 ] A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1 oblicz sumę elementów w kolumnach tej macierzy stransponowanej i umieść ja w kolumnie» sum(a )
przykład 1. zabawy z macierzami utwórz macierz z obrazu Dürera» A = [ 16 3 2 13 ; 5 10 11 8 ; 9 6 7 12 ; 4 15 14 1 ] A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1 wyciągnij z macierzy A główną przekątną i umieść ją w kolumnie» diag ( A )
przykład 1. zabawy z macierzami utwórz macierz z obrazu Dürera» A = [ 16 3 2 13 ; 5 10 11 8 ; 9 6 7 12 ; 4 15 14 1 ] A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1 oblicz sumę elementów na głównej przekątnej» sum ( diag ( A ) )» trace ( A )
przykład 1. zabawy z macierzami utwórz macierz z obrazu Dürera» A = [ 16 3 2 13 ; 5 10 11 8 ; 9 6 7 12 ; 4 15 14 1 ] A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1 oblicz sumę elementów w czwartej kolumnie macierzy A» A(1,4) + A(2,4) + A(3,4) + A(4,4)» sum ( A(:,4) )
przykład 1. zabawy z macierzami utwórz macierz z obrazu Dürera» A = [ 16 3 2 13 ; 5 10 11 8 ; 9 6 7 12 ; 4 15 14 1 ] A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1 wygeneruj ciąg liczb od 1 do 16» 1 : 16 zsumuj wszystkie elementy macierzy A i podziel przez 4» sum ( A ( 1:16 ) ) / 4» sum ( A ( : ) ) / 4» sum ( sum ( A ) ) / 4
przykład 1. zabawy z macierzami utwórz macierz magiczną o wymiarze 4 x 4» B = magic ( 4 ) B = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 przypomnij sobie macierz A» A A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1
przykład 1. zabawy z macierzami w macierzy B zamień miejscami kolumny 2 i 3» B = B ( :, [ 1 3 2 4 ] )
przykład 1. zabawy z macierzami w macierzy B zamień miejscami kolumny 2 i 3» B = B ( :, [ 1 3 2 4 ] ) B = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1 jeszcze raz zamień miejscami kolumny 2 i 3» B = B ( :, [ 1 3 2 4 ] ) B = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1
przykład 1. zabawy z macierzami sprawdź, które elementy macierzy A i B są sobie równe» A = = B sprawdź, czy macierze A i B są sobie równe» all ( A = = B )» all ( all ( A = = B ) )
przykład 1. zabawy z macierzami sprawdź, które elementy macierzy A i B są sobie równe» A = = B ans = 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 sprawdź, czy którekolwiek elementy macierzy A i B są sobie równe» any ( A = = B )» any ( any ( A = = B ) )
przykład 1. zabawy z macierzami sprawdź, które elementy macierzy A i B są sobie równe» A = = B ans = 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 sprawdź, czy którekolwiek elementy macierzy A i B są różne» any ( A ~ = B )» any ( any ( A ~ = B ) )
przykład 1. zabawy z macierzami sprawdź, które elementy macierzy A i B są sobie równe» A = = B ans = 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 sprawdź, czy wszystkie elementy macierzy A i B są od siebie różne» all ( all ( A ~ = B ) )
przykład 1. zabawy z macierzami oblicz wyznaczniki obu macierzy» det(a)» det(b) oblicz odwrotności obu macierzy» inv(a)» inv(b)» A^(-1)» B^(-1)
przykład 2. macierze rzadkie macierze o dużej liczbie zer MATLAB pamięta tylko elementy niezerowe i ich pozycje szybkie obliczenia ryzyko błędów np. cos(0) = 1 gęstość / wypełnienie macierzy rzadkiej stosunek elementów niezerowych do wszystkich
przykład 2. macierze rzadkie wygeneruj zwykłą macierz jednostkową o wymiarach 10 10» A = eye ( 10 ) sprawdź, ile ma elementów niezerowych» nnz ( A ) spytaj, czy jest rzadka» issparse ( A )
przykład 2. macierze rzadkie wygeneruj rzadką macierz jednostkową o wymiarach 10 10» Asp = speye ( 10 )» Asp = sparse ( A ) spytaj, czy jest rzadka» issparse ( Asp )
przykład 2. macierze rzadkie wygeneruj rzadką macierz liczb losowych z rozkładu normalnego o wymiarach 5 5 i wypełnieniu 0.5» Bsp = sprandn ( 5, 5, 0.5 ) oblicz jej gęstość» nnz ( Bsp ) / 25 zamień ją na macierz normalną (pełną)» B = full ( Bsp )
przykład 2. macierze rzadkie wygeneruj rzadką macierz liczb losowych z rozkładu normalnego o wymiarach 5 5 i wypełnieniu 0.8» Bsp = sprandn ( 5, 5, 0.8 ) odwróć ją» Bodwr = Bsp ^ ( -1 ) i zobacz, ile ma elementów
przykład 2. macierze rzadkie wygeneruj rzadką macierz liczb losowych z rozkładu normalnego o wymiarach 50 50 i wypełnieniu 0.3» Bsp = sprandn ( 50, 50, 0.3 ) ; i obejrzyj ją» spy ( Bsp )
przykład 2. macierze rzadkie wygeneruj rzadką macierz liczb losowych z rozkładu normalnego o wymiarach 50 50 i wypełnieniu 0.5» Bsp = sprandn ( 50, 50, 0.5 ) ; i obejrzyj ją» spy ( Bsp )
przykład 2. macierze rzadkie wygeneruj rzadką macierz liczb losowych z rozkładu normalnego o wymiarach 50 50 i wypełnieniu 0.8» Bsp = sprandn ( 50, 50, 0.8 ) ; i obejrzyj ją» spy ( Bsp )
przykład 2. macierze rzadkie wygeneruj rzadką macierz liczb losowych z rozkładu normalnego o wymiarach 50 50 i wypełnieniu 0.95» Bsp = sprandn ( 50, 50, 0.95 ) ; i obejrzyj ją» spy ( Bsp )
przykład 2. macierze rzadkie wygeneruj rzadką macierz liczb losowych z rozkładu normalnego o wymiarach 500 500 i wypełnieniu 0.3» Bsp = sprandn ( 500, 500, 0.3 ) ; i obejrzyj ją» spy ( Bsp )
przykład 2. macierze rzadkie wygeneruj rzadką macierz liczb losowych z rozkładu normalnego o wymiarach 500 500 i wypełnieniu 0.1» Bsp = sprandn ( 500, 500, 0.1 ) ; i obejrzyj ją» spy ( Bsp )
przykład 2. macierze rzadkie wygeneruj rzadką macierz liczb losowych z rozkładu normalnego o wymiarach 500 500 i wypełnieniu 0.05» Bsp = sprandn ( 500, 500, 0.05 ) ; i obejrzyj ją» spy ( Bsp )
przykład 2. macierze rzadkie wygeneruj rzadką macierz liczb losowych z rozkładu normalnego o wymiarach 500 500 i wypełnieniu 0.01» Bsp = sprandn ( 500, 500, 0.01 ) ; i obejrzyj ją» spy ( Bsp )
przykład 2. macierze rzadkie wygeneruj rzadką macierz liczb losowych z rozkładu normalnego o wymiarach 5 5 i wypełnieniu 0.5» Bsp = sprandn ( 5, 5, 0.5 ) i sprawdź, czy rzeczywiście MATLAB pomyli się przy cos(0)» Csp = cos ( Bsp ) obejrzyj sobie macierz w normalnym widoku» C = full ( Csp )
przykład 3. odwracanie macierzy wygeneruj zwykłą macierz liczb losowych o wymiarach 100 100» D = rand ( 100 ) ; obejrzyj ją na obrazku» imagesc ( D )» colormap ( hot ) % w semestrze zimowym» colormap ( cool ) % w semestrze letnim» axis square
przykład 3. odwracanie macierzy odwróć ją» E = inv ( D ) i wynik obejrzyj na obrazku (w nowym okienku)» figure» imagesc ( E )» colormap ( hot ) % w semestrze zimowym» colormap ( cool ) % w semestrze letnim» axis square
przykład 3. odwracanie macierzy pomnóż obie macierze» F = D * E ; i wynik obejrzyj na obrazku (w nowym okienku)» figure» imagesc ( F )» colormap ( hot ) % w semestrze zimowym» colormap ( cool ) % w semestrze letnim» axis square
przykład 3. odwracanie macierzy pomnóż obie macierze» F = D * E ; i znów obejrzyj na obrazku (w nowym okienku)» figure» imagesc ( F )» colormap ( hot ) % w semestrze zimowym» colormap ( cool ) % w semestrze letnim» axis square
zadanie 1. obliczanie wartości liczby e Funkcję e x można przedstawić w postaci szeregu: Napisz funkcję, która oblicza sumę tego szeregu dla podanej wartości x: metodą nieefektywną obliczając każdy wyraz osobno i korzystając z zewnętrznej funkcji do obliczania silni lepszą metodą - obliczając każdy wyraz na podstawie poprzedniego Niech funkcja kończy obliczenia dla wyrazu, dla którego gdzie ε jest z góry zadaną dokładnością Oblicz e -5.5 z dokładnością 10-10 Porównaj wyniki z wynikami wbudowanej funkcji exp(x) Oblicz 1000 razy e -5.5 z dokładnością 10-10 i porównaj czas obliczeń nieefektywnych, efektywnych oraz wbudowanej funkcji exp Narysuj wykres błędu oszacowania różnicy między obu funkcjami function [ y ] = expszer ( x, eps ) 1 2 3 i x x x x x e = 1+ + + + L+ + L 1! 2! 3! i! i x < ε i!
zadanie 1. obliczanie wartości liczby 1 2 3 i x x x x x e = 1+ + + + L+ + L 1! 2! 3! i! function [ y ] = expszer1 ( x, eps ) y =... i =... yi =... y =... while... i =... yi = x^i / silnia(i) ; y =... end
zadanie 1. obliczanie wartości liczby 1 2 3 i x x x x x e = 1+ + + + L+ + L 1! 2! 3! i! function [ y ] = silnia ( x ) y = 1 ; for i = 1 : x, y = y * i ; end
zadanie 1. obliczanie wartości liczby 1 2 3 i x x x x x e = 1+ + + + L+ + L 1! 2! 3! i! skrypt exptest1: clc disp ( 'Obliczanie funkcji exp z szeregu ' ) ; disp ( '-------------------------------- ' ) ; x = input ( 'Podaj x: ' ) ; eps = input ( 'Podaj dokładność obliczeń: ' ) ; format short, shortwynik = [ expszer1(x,eps) ; exp(x) ] format long, longwynik = [ expszer1(x,eps) ; exp(x) ] format long e, longewynik = [ expszer1(x,eps) ; exp(x) ] format long g, longgwynik = [ expszer1(x,eps) ; exp(x) ]
zadanie 1. obliczanie wartości liczby 1 2 3 i x x x x x e = 1+ + + + L+ + L 1! 2! 3! i!» exptest1 Obliczanie funkcji exp z szeregu -------------------------------- Podaj x: 1 Podaj dokładność obliczeń: 0.001 shortwynik = 2.7183 2.7183 longwynik = 2.718253968253968 2.718281828459046 longewynik = 2.718253968253968e+000 2.718281828459046e+000 longgwynik = 2.71825396825397 2.71828182845905
zadanie 1. obliczanie wartości liczby 1 2 3 i x x x x x e = 1+ + + + L+ + L 1! 2! 3! i! function [ y ] = expszer2 ( x, eps ) y =... i =... yi =... y =... while... i =... yi = yi * x / i ; y =... end
zadanie 1. obliczanie wartości liczby 1 2 3 i x x x x x e = 1+ + + + L+ + L 1! 2! 3! i! skrypt exptest2: clc disp ( 'Obliczanie funkcji exp z szeregu ' ) ; disp ( '-------------------------------- ' ) ; x = input ( 'Podaj x: ' ) ; eps = input ( 'Podaj dokładność obliczeń: ' ) ; format short, shortwynik = [ expszer2(x,eps) ; exp(x) ] format long, longwynik = [ expszer2(x,eps) ; exp(x) ] format long e, longewynik = [ expszer2(x,eps) ; exp(x) ] format long g, longgwynik = [ expszer2(x,eps) ; exp(x) ]
zadanie 1. obliczanie wartości liczby 1 2 3 i x x x x x e = 1+ + + + L+ + L 1! 2! 3! i!» exptest2 Obliczanie funkcji exp z szeregu -------------------------------- Podaj x: 1 Podaj dokładność obliczeń: 0.001 shortwynik = 2.7183 2.7183 longwynik = 2.718253968253968 2.718281828459046 longewynik = 2.718253968253968e+000 2.718281828459046e+000 longgwynik = 2.71825396825397 2.71828182845905
zadanie 1. obliczanie wartości liczby 1 2 3 i x x x x x e = 1+ + + + L+ + L 1! 2! 3! i!» exptest2 Obliczanie funkcji exp z szeregu -------------------------------- Podaj x: -5.5 Podaj dokładność obliczeń: 0.0000000001 shortwynik = 0.0041 0.0041 longwynik = 0.004086771447736 0.004086771438464 longewynik = 4.086771447736385e-003 4.086771438464067e-003 longgwynik = 0.00408677144773638 0.00408677143846407
zadanie 1. obliczanie wartości liczby 1 2 3 i x x x x x e = 1+ + + + L+ + L 1! 2! 3! i! function [ y, i ] = expszer3 ( x, eps ) % ta funkcja robi dokładnie to samo, co expser2, % tylko w wyniku podaje również liczbę kroków, % po których funkcja zakończyła szereg...
zadanie 1. obliczanie wartości liczby 1 2 3 i x x x x x e = 1+ + + + L+ + L 1! 2! 3! i! skrypt exptest3: clc disp ( 'Obliczanie funkcji exp z szeregu - wykresy ' ) ; disp ( '------------------------------------------ ' ) ; x = input ( 'Podaj x: ' ) ; liczbakrokow = zeros(21,1) ; y = zeros(21,1) ; i = 1 ; for eps = logspace(0,-20,21), [ y(i,1), liczbakrokow(i,1) ] = expszer3(x,eps) ; i = i + 1 ; end eps = logspace(0,-20,21)' ; porownanie = [ 0, 0, exp(x), 0 ; % wart. funkcji exp eps, liczbakrokow, y, y - exp(x)*ones(21,1) ]
zadanie 1. obliczanie wartości liczby 1 2 3 i x x x x x e = 1+ + + + L+ + L 1! 2! 3! i!» exptest3
zadanie 1. obliczanie wartości liczby 1 2 3 i x x x x x e = 1+ + + + L+ + L 1! 2! 3! i! skrypt exptest4: clc disp ( 'Obliczanie funkcji exp z szeregu - czas ' ) ; disp ( '--------------------------------------- ' ) ; x = input ( 'Podaj x : ' ) ; eps = input ( 'Podaj eps: ' ) ; n = input ( 'Podaj n : ' ) ; expszer1pocz = clock ; % metoda nieefektywna for i = 1 : n, y = expszer1(x,eps); end expszer1kon = clock ; expszer1czas = etime ( expszer1kon, expszer1pocz ) ; expszer2pocz =... % metoda efektywna exppocz =... % funkcja wbudowana czasy = [ expszer1czas ; expszer2czas ; expczas ]
zadanie 1. obliczanie wartości liczby 1 2 3 i x x x x x e = 1+ + + + L+ + L 1! 2! 3! i!» exptest4
zadanie 2. obliczanie wartości wielomianu - schemat Hornera Należy obliczyć wartość wielomianu dla pewnej wartości argumentu x = W n (z) można obliczyć wprost ze wzoru wtedy liczba działań wynosi: mnożeń i dodawań Jeśli wielomian przedstawimy w takiej postaci: to będziemy mogli wykorzystać schemat Hornera: n n 1 ( ) do wykonania którego potrzeba mnożeń i dodawań W x = a x + a x + L+ a x + a z n 0 1 n 1 n ((( 0 1 ) 3 ) L 1 ) ( ) ( ) ( ) W x = a x + a x + a x + a + a x + a n x n n b 0 0 1 0 1 2 1 2 i i 1 i n = a b = b z + a b = b z + a K b = b z + a K ( ) W z = b n
zadanie 2. obliczanie wartości wielomianu - schemat Hornera n n 1 ( ) W x = a x + a x + L+ a x + a n 0 1 n 1 n ((( ) ) L ) ( ) ( ) ( ) W x = a x + a x + a x + a + a x + a n 0 1 x 3 n 1 n b 0 0 1 0 1 2 1 2 i i 1 i n = a b = b z + a b = b z + a K b = b z + a K ( ) W z = b n a 0 a 1 a 2 a n-1 a n + + + + b 0 z b 1 z b n-2 z b n-1 z z b 0 =a 0 b 1 b 2 b n-1 b n b n =W n (z)
zadanie 2. obliczanie wartości wielomianu - schemat Hornera ((( 0 1 ) 3 ) L 1 ) ( ) ( ) ( ) W x = a x + a x + a x + a + a x + a n x n n P b 0 0 1 0 1 2 1 2 i i 1 i n = a b = b z + a b = b z + a K b = b z + a K ( ) W z = b n NIE WE n, a 1,, a n,z b 0 :=a 0 i:=1 b i :=b i-1 z+a i i = n TAK i:=i+1 Napisz funkcję, która dla wielomianu stopnia n o podanych współczynnikach [ a 1, a 2, a 3,, a n ] oraz danej wartości x=z oblicza wartość wielomianu W n (z) W:=b n WY W function [ W ] = horner ( a, z ) K
zadanie 3. liczby pierwsze Liczba pierwsza to taka liczba naturalna, która nie dzieli się przez żadną inna liczbę oprócz siebie i jedności. Liczby złożone (nie będące pierwszymi) dają się przedstawić jako iloczyn liczb pierwszych. Liczby pierwsze wykorzystuje się w kryptografii Jednym z prostszych i chyba najpopularniejszym algorytmem generowania liczb pierwszych jest sito Erastotenesa eliminuje liczby podzielne przez jakąkolwiek liczbę oprócz badanej Algorytm zapisany kiedyś w pseudojęzyku (dla języka Pascal) zapisz jako funkcję w MATLABie Znajdź inne algorytmy generowania liczb pierwszych, ew. sprawdzania, czy dana liczba jest liczbą pierwszą
zadanie 3. liczby pierwsze Początek Czytaj(M); Pisz(2); i:=3; dzielnik:=2; Dopóki i<m wykonuj Początek Powtarzaj Dopóki (i mod dzielnik=0) wykonuj Początek i:=i+1; dzielnik:=2 Koniec; dzielnik:=dzielnik+1 aż do dzielnik i div 2; Jeśli i<=m to Pisz(i); i:=i+1; dzielnik:=2 Koniec Koniec NIE TAK i M K NIE NIE WE P M WY 2 i:=3 dzielnik:=2 dzielnik:=dzielnik+1 WY TAK i i < M dzielnik div 2 = 0 i:=i+1 dzielnik:=2 TAK i mod dzielnik = 0 NIE TAK i:=i+1 dzielnik:=2
zadanie 4. ułamki proste Ułamek właściwy można przedstawić jako sumę ułamków prostych, np. Licznik ułamka prostego jest równy 1. 5 1 1 1 = + + 11 3 9 99 Poniższy algorytm polega na tworzeniu kolejnych mianowników ułamków prostych T i przez poszukiwanie takich liczb i, dla których Licznik 1 > 0 Mianownik i Pierwsza liczba i spełniająca tę nierówność zapamiętywana jest w tablicy T, po czym następuje modyfikacja wielkości Licznik i Mianownik. Proces jest kontynuowany dopóty, dopóki wartość Licznik jest różna od 0 Schemat działań zaprogramuj w postaci funkcji MATLABa, przyjmującej dwa parametry num i den licznik i mianownik pierwotnego ułamka właściwego, a zwracającej tablicę dens mianowników kolejnych ułamków prostych
zadanie 4. ułamki proste P WE Licznik, Mianownik j:=0 j:=j+1 i:=2 NIE 1/i > Licznik/Mianownik TAK i:=i+1 Licznik:=Licznik i-mianownik Mianownik:=Mianownik i T j :=i NIE Licznik = 0 TAK n:=1 WY T n TAK n = j NIE n:=n+1 K
przykład 4. przekształcenia macierzy operacje elementarne na macierzy: pomnożenie wiersza/kolumny macierzy przez liczbę różną od zera zamiana wiersza/kolumny dodanie do wiersza/kolumny innego wiersza/kolumny pomnożonego przez liczbę nie zmieniają rzędu mogą zmienić wyznacznik
przykład 4. przekształcenia macierzy pomnożenie i-tego wiersza macierzy A przez liczbę k różną od zera odpowiada lewostronnemu pomnożeniu tej macierzy przez macierz jednostkową z i-tym elementem diagonalnym równym k zdefiniuj macierz A» A = [ 1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ] pomnóż jej drugi wiersz przez 2» P = [ 1 0 0; 0 2 0 ; 0 0 1 ] P A = B 3 3 3 4 3 4» B = P * A
przykład 4. przekształcenia macierzy pomnożenie j-tej kolumny macierzy A przez liczbę k różną od zera odpowiada prawostronnemu pomnożeniu tej macierzy przez macierz jednostkową z j-tym elementem diagonalnym równym k zdefiniuj macierz A» A = [ 1 2 3 4 ; 5 6 7 8 ; 9 10 11 12 ] pomnóż jej trzecią kolumnę przez 3» P = [ 1 0 0 0 ; 0 1 0 0 ; 0 0 3 0 ; 0 0 0 1 ] ;» A» B = A * P A P = B 3 4 4 4 3 4
przykład 4. przekształcenia macierzy zamiana i-tego wiersza z j-tym odpowiada lewostronnemu pomnożeniu macierzy A przez następującą macierz przekształcenia wygeneruj macierz A 8x3 wypełnioną liczbami losowymi od 1 do 9» A = ceil ( rand ( 8, 3 ) * 9 ) zamień miejscami wiersz drugi z czwartym» P = [ 1 0 0 0 0 0 0 0 ; % P = eye (8); 0 0 0 1 0 0 0 0 ; % P(2,2) = 0 ; 0 0 1 0 0 0 0 0 ; % P(4,4) = 0 ; 0 1 0 0 0 0 0 0 ; % P(2,4) = 1 ; 0 0 0 0 1 0 0 0 ; % P(4,2) = 1 ; 0 0 0 0 0 1 0 0 ; 0 0 0 0 0 0 1 0 ; 0 0 0 0 0 0 0 1 ], B = P * A P A = B 8 8 8 3 8 3
przykład 4. przekształcenia macierzy zamiana i-tej kolumny z j-tą odpowiada prawostronnemu pomnożeniu macierzy A przez następującą macierz przekształcenia w macierzy A zamień miejscami kolumny drugą i trzecią» P = [ 1 0 0 ; 0 0 1 ; 0 1 0 ]» A» C = A * P A P = B 8 3 3 3 8 3
przykład 4. przekształcenia macierzy dodanie do i-tego wiersza macierzy A jej j-tego wiersza pomnożonego przez liczbę m można zrealizować poprzez lewostronne pomnożenie macierzy A przez macierz przekształcenia P P A
przykład 4. przekształcenia macierzy dodanie do i-tej kolumny macierzy A jej j-tej kolumny pomnożonej przez liczbę m można zrealizować poprzez prawostronne pomnożenie macierzy A przez stransponowaną macierz przekształcenia P T A P
przykład 4. przekształcenia macierzy wylosuj macierz liczb 5x5 od 1 do 9, oblicz jej rząd i wyznacznik pomnóż któryś wiersz przez coś, oblicz jej rząd i wyznacznik zamień miejscami wiersze 2 i 4, oblicz rząd i wyznacznik macierzy porównaj rzędy i wyznaczniki» A = ceil ( rand ( 5 ) * 9 )» Pmnoz = eye(5); Pmnoz(2,2) = 4 ; B = Pmnoz*A» Pzam = eye(5); Pzam(2,2) = 0 ; Pzam(4,4) = 0 ; Pzam(2,4) = 1 ; Pzam(4,2) = 1 ; C = Pzam *A» rzedy = [ rank(a) rank(b) rank(c) ]» wyznaczniki = [ det(a) det(b) det(c) ] rzedy = 5 5 5 wyznaczniki = -3528-14112 3528
przykład 5. rząd macierzy metodą eliminacji Gaussa rząd macierzy to maksymalna liczba liniowo niezależnych wektorów tworzących wiersze/kolumny danej macierzy wprowadź macierz A» A = [ 1-1 2 2 ; 2-2 1 0 ; -1 2 1-2 ; 2-1 4 0 ] skopiuj ją do macierzy B» B = A oblicz rząd macierzy B korzystając z metody eliminacji Gaussa
przykład 5. rząd macierzy metodą eliminacji Gaussa B = 1-1 2 2 2-2 1 0-1 2 1-2 2-1 4 0 od wiersza drugiego odejmij wielokrotność wiersza pierwszego tak, aby wyzerować pierwszy element w drugim wierszu» B(2,:) = B(2,:) 2 * B(1,:) B = 1-1 2 2 0 0-3 -4-1 2 1-2 2-1 4 0
przykład 5. rząd macierzy metodą eliminacji Gaussa B = 1-1 2 2 0 0-3 -4-1 2 1-2 2-1 4 0 od wiersza trzeciego odejmij wielokrotność wiersza pierwszego tak, aby wyzerować pierwszy element w trzecim wierszu» B(3,:) = B(3,:) + 1 * B(1,:) B = 1-1 2 2 0 0-3 -4 0 1 3 0 2-1 4 0
przykład 5. rząd macierzy metodą eliminacji Gaussa B = 1-1 2 2 0 0-3 -4 0 1 3 0 2-1 4 0 od wiersza czwartego odejmij wielokrotność wiersza pierwszego tak, aby wyzerować pierwszy element w czwartym wierszu» B(4,:) = B(4,:) - 2 * B(1,:) B = 1-1 2 2 0 0-3 -4 0 1 3 0 0 1 0-4
przykład 5. rząd macierzy metodą eliminacji Gaussa B = 1-1 2 2 0 0-3 -4 0 1 3 0 0 1 0-4 w drugim wierszu na przekątnej jest zero to niedobrze zamień miejscami wiersze 2 z 3» B = B ( [ 1 3 2 4 ], : ) B = 1-1 2 2 0 1 3 0 0 0-3 -4 0 1 0-4
przykład 5. rząd macierzy metodą eliminacji Gaussa B = 1-1 2 2 0 1 3 0 0 0-3 -4 0 1 0-4 w wierszu drugim jest na początku jedno zero to dobrze w wierszu trzecim są na początku dwa zera to dobrze odejmij wiersz drugi od wiersza czwartego tak, aby w wierszu czwartym też na początku były dwa zera» B(4,:) = B(4,:) B(2,:) B = 1-1 2 2 0 1 3 0 0 0-3 -4 0 0-3 -4
przykład 5. rząd macierzy metodą eliminacji Gaussa B = 1-1 2 2 0 1 3 0 0 0-3 -4 0 0-3 -4 wiersze 3 i 4 są jednakowe zależne - rząd macierzy na pewno nie będzie równy 4 odejmij wiersz trzeci od wiersza czwartego tak, aby na początku wiersza czwartego były trzy zera» B(4,:) = B(4,:) B(3,:) B = 1-1 2 2 0 1 3 0 0 0-3 -4 0 0 0 0
przykład 5. rząd macierzy metodą eliminacji Gaussa B = 1-1 2 2 0 1 3 0 0 0-3 -4 0 0 0 0 macierz B = macierzy schodkowa rząd = liczba schodków = liczba niezerowych wierszy
przykład 5. rząd macierzy metodą eliminacji Gaussa B = 1-1 2 2 0 1 3 0 0 0-3 -4 0 0 0 0 oblicz rząd macierzy A korzystając z funkcji rank» rank(a)