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



Podobne dokumenty
Gauss, zajęcia 2. Dwukropek i kropka. Tomasz Mostowski 03.marca 2008

do MATLABa programowanie WYKŁAD Piotr Ciskowski

Diary przydatne polecenie. Korzystanie z funkcji wbudowanych i systemu pomocy on-line. Najczęstsze typy plików. diary nazwa_pliku

Matlab, zajęcia 3. Jeszcze jeden przykład metoda eliminacji Gaussa dla macierzy 3 na 3

Wprowadzenie do środowiska

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

Matlab Składnia + podstawy programowania

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

GNU Octave (w skrócie Octave) to rozbudowany program do analizy numerycznej.

Wstęp do Programowania Lista 1

Matlab Składnia + podstawy programowania

Ćwiczenie 1. Wprowadzenie do programu Octave

Pętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Elementy metod numerycznych - zajęcia 9

1 Programowanie w matlabie - skrypty i funkcje

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

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Podstawy Programowania C++

Obliczenia w programie MATLAB

Metody i analiza danych

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

MATLAB Podstawowe polecenia

A A A A A A A A A n n

Układy równań liniowych

Ćwiczenie 1. Wprowadzenie do programu Octave

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Laboratorium Komputerowego Wspomagania Analizy i Projektowania

; B = Wykonaj poniższe obliczenia: Mnożenia, transpozycje etc wykonuję programem i przepisuję wyniki. Mam nadzieję, że umiesz mnożyć macierze...

Przykład 1 -->s="hello World!" s = Hello World! -->disp(s) Hello World!

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Treść wykładu. Układy równań i ich macierze. Rząd macierzy. Twierdzenie Kroneckera-Capellego.

III TUTORIAL Z METOD OBLICZENIOWYCH

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

WHILE (wyrażenie) instrukcja;

Przetwarzanie sygnałów

3. Macierze i Układy Równań Liniowych

PRZYKŁADOWE SKRYPTY (PROGRAMY W MATLABIE Z ROZSZERZENIEM.m): 1) OBLICZANIE WYRAŻEŃ 1:

Wprowadzenie do Scilab: macierze

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

Metody numeryczne Laboratorium 2

a 11 a a 1n a 21 a a 2n... a m1 a m2... a mn x 1 x 2... x m ...

= Zapiszemy poniższy układ w postaci macierzy. 8+$+ 2&=4 " 5 3$ 7&=0 5$+7&=4

Cw.12 JAVAScript w dokumentach HTML

Skrypty powłoki Skrypty Najcz ciej u ywane polecenia w skryptach:

Liczby losowe i pętla while w języku Python

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

Ćwiczenie 3. MatLab: Algebra liniowa. Rozwiązywanie układów liniowych

Algebra macierzy

MATLAB wprowadzenie śycie jest zbyt krótkie, aby tracić czas na pisanie pętli!

4. Funkcje. Przykłady

Zakłócenia w układach elektroenergetycznych LABORATORIUM

2. Układy równań liniowych

Układy równań liniowych. Krzysztof Patan

UKŁADY RÓWNAŃ LINIOWYCH

Notatki z Matlaba. Rafał Zduńczyk. January 6, 2018

Ćwiczenie 1. Matlab podstawy (1) Matlab firmy MathWorks to uniwersalny pakiet do obliczeń naukowych i inżynierskich, analiz układów statycznych

Rozwiązywanie równań różniczkowych cząstkowych metodą elementów skończonych - wprowadzenie

WHILE (wyrażenie) instrukcja;

WIMIM/MIBM/N1/-/B04 WIMIM/ME/S1/-/C46 WIMIM/IM/S1/-/B19

Wykład 14. Elementy algebry macierzy

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Układy równań liniowych i metody ich rozwiązywania

UKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH

0 + 0 = 0, = 1, = 1, = 0.

, A T = A + B = [a ij + b ij ].

Kier. MTR Programowanie w MATLABie Laboratorium. 1. Tworzenie m-plików skryptowych i uruchamianie skryptów

MATLAB tworzenie własnych funkcji

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

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

Zaawansowane metody numeryczne

Warto też w tym miejscu powiedzieć, że w C zero jest rozpoznawane jako fałsz, a wszystkie pozostałe wartości jako prawda.

Wprowadzenie do Scilab: macierze

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

Wykład 5. Metoda eliminacji Gaussa

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

01.Wprowadzenie do pakietu MATLAB

Obliczenia iteracyjne

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

Visual Basic for Application (VBA)

Instrukcja warunkowa i złoŝona.

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

LibreOffice Calc VBA

Wykład 6. Metoda eliminacji Gaussa: Eliminacja z wyborem częściowym Eliminacja z wyborem pełnym

Podstawy MATLABA, cd.

Laboratorium nr 1. i 2.

Wprowadzenie do systemu Scilab

Algebra liniowa z geometrią

Instalacja Pakietu R

Podstawy i języki programowania

Podstawy Pythona. Krzysztof Gdawiec. Instytut Informatyki Uniwersytet Śląski

Laboratorium 3. Parametry, okna dialogowe, pętle, pętle warunkowe. Jakub Słowiński. 27 lutego Jakub Słowiński (IMMT PWr) 27 lutego / 9

Wyznaczniki 3.1 Wyznaczniki stopni 2 i 3

Ćwiczenie 3: Wprowadzenie do programu Matlab

Podstawy Programowania Podstawowa składnia języka C++

ŚRODOWISKO MATLAB cz.3 Implementowanie algorytmów w skryptach i funkcjach programu

Zanim zaczniemy GNU Octave

Wprowadzenie do programu Mathcad 15 cz. 1

Metody numeryczne Wykład 4

Metody Numeryczne. Laboratorium 1. Wstęp do programu Matlab

Transkrypt:

Matlab, zajęcia 2. Dwukropek W Matlabie bardzo przydatnym operatorem jest dwukropek ma on kilka znaczeń to - (do) w sensie np. od do, Oznaczenie przedziału Oznaczenie całego zakresu Popatrzmy jak to działa A=1:30; A A' Można podać też krok B=1:3:40 C=10:-1:1 D=2:-0.05:1 Itd. Wybieranie zakresu A(1,1:5) %pierwszy wiersz i kolumny 1 do 5 %macierz o elementach losowych z rozkładu normalnego D=randn(15,15); D %wybranie 2 pierwszych elementow z 4 wiersza D(4,1:2) %wybranie kolumn 1 i 2 D(:,1:2) %wybranie kolumn 1,4 i 7 D(:,1:3:7) %drugi wiersz macierzy D(2,:) Definiowanie różnych macierzy B=zeros(8,8) B(:,1)=1:8 B(3,:)=100:-10:30 B(:,4)=B(:,1) Definiowanie ciągów 1

D=zeros(3,4) D(1:12)=3:3 D(1:12)=3:3:36 %jeśli chcemy mieć wyrazy kolejno w wierszach trzeba macierz transponować np. d=d' Zmienianie macierzy w wektor B(:) Możemy użyć też słowa end B(end,:) B(:,end) Usuwanie wierszy i kolumn K=[1:3;4:6;7:9] %usunięcie pierwszej kolumny K(:,1)=[] %usunięcie pierwszego wiersza K(1,:)=[] %usunięcie likwiduje dany wiersz bądź kolumnę z macierzy! Wyrażenia logiczne Programując bardzo często będziemy musieli posługiwać się wyrażeniami logicznymi. W wyniku operacji logicznych wynikiem jest prawda albo fałsz (TRUE, FALSE), standardowo kodowanych jako 1-prawda, 0-fałsz. relacje = = równość ~= różny od > większy >= większy lub równy < mniejszy <= mniejszy lub równy Operatory & koniunkcja alternatywa ~ negacja xor alternatywa wykluczająca 2=3 %błędne wyrażenie 2

2==3 %test logiczny w wyniku 0 a=2==3 %przypisanie wartości Zobacz, że w workspace nowa zmienna traktowana jest jako zmienna logiczna. Można jednak wykonać operacje a*3 W wyniku dostaniemy już liczbę. Operacje logiczne dla macierzy A=[1,2,3;4,5,6] B=[1,3,3;5,5,5] %porównanie element po elemencie A==B A>B A>=B A~=B %znalezienie elementów różnych w macierzach ~ans %ten sam wynik co przy == Przy operatorach 3>4 & 2<3 3>4 2<3 xor(3>4,2<3) xor(3<4,2<3) %fałsz, bo oba są prawdziwe Operatory dla macierzy A=[1 0 3 pi] B=[0 0 2 0] A&B A B xor(a,b) Analogiczne operacje możemy wykonywać dla słów 'ola'=='ala' Najważniejsze funkcje logiczne A=[1,2,3; 0, 2 NaN] % any czy jest niezerowy element w wektorze? any(a) % all- czy wszystkie elementy są niezerowe all(a) %isnan czy jest nieliczbą? isnan(a) %czy jest wartością skończoną? 3

isfinite(a) %czy jest literą? isletter(a) %find indeksy niezerowych elementów macierzy find(a) Inne operacje macierzowe Wyznacznik macierzy (det) A=magic(4) det(a) Wiemy, że można sprawdzić, czy macierz jest dodatnio określona badając jej minory główne (jeśli wszystkie są dodatnie to macierz jest dodatnio określona). Zbadajmy dla naszej macierzy A det(a(1:1)) %pierwszy minor det(a(1:2,1:2)) %drugi minor det(a(1:3,1:3)) %trzeci minor Znajdowanie wartości własnych macierzy Jak wiemy wartości własne macierzy to Av = λv A=[0-6 1; 6 2-16; -5 20-10] lambda=eig(a) [V,D] = eig(a) Kolumny macierzy V to kolejne wektory własne macierzy V(:,1) 4

A*V(:,1) ans/d(1:1) Faktoryzacja Choleskiego W wielu operacjach macierze faktoryzuje się. W ekonometrii często wykorzystuje się faktoryzacje Choleskiego A = RR ' gdzie R jest macierzą górno-trójkątną A=pascal(6) R=chol(A) %sprawdzenie R'*R Dzięki temu możemy rozwiązać układy równań Ax=b R Rx=b x = R\(R'\b) Jest to dużo szybsze numerycznie. Dekompozycja LU A = LU gdzie L jest macierzą dolno-, a U górno-trójkątną M2=magic(3) b=[3;4;5] [L,U]=lu(M2) U\(L\b) %sprawdzenie M2*ans Zapisywanie danych Dane znajdujące się w workspace można zapisywać. Robi się to poprzez wybranie z menu File, opcji save workspace as. Proszę spróbować. Następnie usuwamy wszystkie dane poprzez clear 5

i wczytujemy dane poprzez open (ctrl+o). Wszystkie macierze powinny znowu znaleźć się w Matlabie. Możemy też korzystać z opcji save save A1 A clear A load A1 Przy takiej konwencji pliki zapisywane są w bieżącym katalogu (jeśli nic nie zmienialiśmy to w katalogu typu C:\Program Files\MATLAB71\work) M-pliki M-pliki służą do zautomatyzowania naszej pracy w Matlabie. Z jednej strony pozwalają łatwo poprawiać długie sekwencje, z drugiej możemy pisać własne funkcje. Na początek otwórzmy nowy m-plik, poprzez opcję nowy i wprowadźmy następujący kod function c=pitagoras(a,b); c2=a^2+b^2; c=sqrt(c2); Jest to prosta funkcja obliczającą długość przeciwprostokątnej przy zadanych długościach przyprostokątnych. M-plik należy zapisać i w matlabie możemy podać np. komendę pitagoras(3,4) albo c=pitagoras(3,4) Oczywiście jest to bardzo prosta funkcja. Aby funkcje były dobrze napisane należy zabezpieczyć się przed niepoprawnym użyciem. Podajmy komendę c=pitagoras(3,[4,5;1,2]) albo c=pitagoras(3,[4,5]) c=pitagoras(3,4,5) W wyniku mamy błąd, albo jakiś niekonkretny wynik Dodajmy funkcję if function c=pitagoras(a,b); if all(size(a)==[1,1]) c2=a^2+b^2; 6

c=sqrt(c2); else error('argumenty muszą być liczbami') end Funkcja if musi kończyć się słowem end! c=pitagoras([4,5;1,2],3) Oczywiście nasza funkcja nie jest jeszcze doskonała. Nie sprawdza wymiaru macierzy b, ale już jest lepsza. Dodajmy jeszcze mały help do naszej funkcji Przed słowem function wstawmy tekst % pitagoras(a,b) - funkcja oblicza długość przeciwprostokątnej przy % zadanych przyprostokątych. Argumenty muszą być liczbami % autor T.Mostowski (04.03.2007) Zapiszmy zmiany i w matlabie podajmy komendę help pitagoras If-elseif-else W wyrażeniach warunkowych możemy też podawać opcję elseif Funkcja wystawiająca ocenę function x=ocena(a) if a<50 x='niedostateczny'; elseif a<=70 x='dostateczny'; elseif a<=85 x='dobry'; else x='bardzo dobry'; end for Jednymi z bardziej pożytecznych pętli są pętle for. Prosta funkcja badającą, czy macierz jest dodatnio określona. W wyniku dostaniemy 1 jeśli macierz jest dodatnio określona, a 0 w p.p. 7

% odotanio(a) - funkcja bada, czy macierz jest dodatnio określona. Zwraca % jeden jeśli tak i 0 w p.p. Na wejściu musi być macierz kwadratowa % autor T.Mostowski (04.03.2007) function c=ododatnio(a); [n m]=size(a); %pobranie wymiaru macierzy l=zeros(1,n); %stworzenie wektora zer for i=1:n l(i)=det(a(1:i,1:i))>0; %sprawdzamy, czy każdy kolejny minor jest większy od zera end c=all(l); %sprawdzamy, czy wszystkie liczby są różne od zera Sprawdźmy A=magic(4) %już wiemy, że nie jest ododatnio(a) B=pascal(5) ododatnio(b) 8

Zadania Zadanie 1. wprowadź do Matlaba następującą macierz A 1 2 3 4 5 6 7 8 9 9 8 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9 8 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 123 100 77 54 31 8-15 -38-61 0 0 0 0 0 0 0 0 0 Oraz taką B 0 0 0 0 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 Oraz wektor C o elementach od 32 do 3 o kroku równym 0,5. Macierze należy podać w sprytny sposób, a nie definiując liczbę po liczbie! Zadanie 2. Stworzyć macierz A2 o wymiarach 3na3 stworzoną z macierzy A jako 3,4,5 kolumna i 1,2,3 wiersz Stworzyć macierz B2 o wymiarach 3 na3 stworzoną z macierzy B jako 2,3,4 kolumna i 2,3,4 wierz Zadanie 3. Stworzyć macierz logiczną L mającą 1 w miejscach, gdzie A2 jest większe niż B2. Zadanie 4. Dla macierzy B2 znaleźć rozkład LU. Zadanie 5. Dla macierzy B znaleźć wektory własne. 9

Zadanie 6. Popraw funkcję pitagoras, tak aby sprawdzała też, czy argument b jest liczbą Zadanie 7. Napisz następujące proste funkcje. iscolumnvector sprawdza, czy argument jest wektorem kolumnowym (analogicznie jak poprzednia funkcja) isrowvector analogicznie, tylko sprawdza czy jest to wektor wierszowy whichvector(a,b) funkcja zwracająca 0 dla niewektora, 1 dla kolumnowego i 2 dla wierszowego lub słowa niewektor, kolumnowy, wierszowy w zależności od parametru b. Jeśli b jest 0 to słowami, jeśli b jest =1, to liczbami. Napisz też do tej funkcji help i sprawdzaj, czy argumenty są poprawne. Zadanie 8. Znaleźć dekompozycje Choleskiego dla macierzy 1 1 1 1 1 1 2 3 4 5 1 3 6 10 15 1 4 10 20 35 1 5 15 35 70 (Macierz Pascala) Zadanie 9. Zadanie 10. Zadanie 11. Znajdź dla tej macierzy dekompozycję LU Popraw funkcję ododatnio, żeby sprawdzała, czy macierz jest kwadratowa. Napisz funkcję badającą, czy macierz jest ujemnie określona (Macierz jest ujemnie określona, jeśli jej minory główne są na przemian ujemne i dodatnie, przy czym pierwszy jest ujemny) Praca domowa nr 1 Rozwiązanie przynajmniej 6 z powyższych zadań. 10