MOiPP Wykład 2 Matlab tablice.

Slides:



Advertisements
Podobne prezentacje
OBLICZENIA NUMERYCZNE
Advertisements

Modelowanie i symulacja
Teoria układów logicznych
Metody numeryczne część 1. Rozwiązywanie układów równań liniowych.
Język ANSI C Funkcje Wykład: Programowanie komputerów
Metody rozwiązywania układów równań liniowych
Metody numeryczne wykład no 2.
Metody Numeryczne Wykład no 3.
ZŁOŻONOŚĆ OBLICZENIOWA
Zastosowania geodezyjne
Tablice Informatyka Cele lekcji: Wiadomości: Uczeń potrafi:
Laboratoria z „wstęp do programowania”
Procedury systemowe w systemie DOS
AUTOMATYZACJA OBLICZEŃ INŻYNIERSKICH
Podstawy programowania PP – WYK5 Wojciech Pieprzyca.
ETO w Inżynierii Chemicznej
Excel Wstęp do laboratorium 3..
Metody numeryczne Wykład no 2.
dr inż. Piotr Muryjas Wyższa Szkoła Przedsiębiorczości i Administracji
Matematyka.
Dane do obliczeń.
Programowanie w języku Matlab
Wykład 2 Dr Aneta Polewko-Klim
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
Excel Wykład 3.. Importowanie plików tekstowych Kopiuj – wklej Małe pliki Kolumny oddzielone znakiem tabulacji Otwieranie/importowanie plików tekstowych.
Microsoft Office Excel
TABLICE C++.
Wyrażenia w Turbo Pascalu.
Podstawy analizy matematycznej II
Pliki Pojęcie i rodzaje plików Definicja typu plikowego Operacje wykonywane na plikach elementowych.
Pliki tekstowe – A. Jędryczkowski © 2007 Turbo Pascal umożliwia wykorzystanie w programach plików tekstowych. Pliki takie zawierają informację niezakodowaną
C# Platforma .NET CZ.3 Kuba Ostrowski.
Użytkowanie i programowanie Matlaba
Metody obliczeniowe i podstawy programowania
Programowanie Matlaba
MOiPP Wykład 2 Matlab Tablice i ich zastosowania Wykresy Iteracja.
Algebra Przestrzenie liniowe.
MOiPP Matlab Sortowanie Obliczenia symboliczne - Symbolic ToolBox
MOiPP Wykład 3 Matlab Przykłady prostych metod obliczeniowych.
Ogólna struktura programu w TP
MOiPP Wykład 7 Matlab cd..
Materiały pochodzą z Platformy Edukacyjnej Portalu Wszelkie treści i zasoby edukacyjne publikowane na łamach Portalu
Algorytmika Iteracje autor: Tadeusz Lachawiec.
MOiPP Matlab Przykłady metod obliczeniowych Obliczenia symboliczne
MOiPP Matlab Aproksymacja Interpolacja Inne metody obliczeniowe
MOiPP Wykład 5 Matlab Przykłady praktyczne Równania różniczkowe.
Wyznaczniki, równania liniowe, przestrzenie liniowe Algebra 1
Metody Numeryczne Ćwiczenia 3
PWSW Mechatronika Wykład 7 Matlab cd.
WYKŁAD 06 Programowanie dynamiczne Grażyna Mirkowska.
Matematyka Ekonomia, sem I i II.
Metody rozwiązywania układów równań liniowych
Informatyka PWSW Wykład 6.
Wykład 4 Dr Aneta Polewko-Klim Dr Aneta Polewko-Klim
Podsumowanie wiedzy MPDI2 sem.3 INFORMATYKA. tworzenie nowego pliku i katalogu, nawigacja po katalogach, listowanie zawartości katalogu, zmiana nazw,
SciLab.
SciLab.
Informatyka Transport Matlab c.d. Macierze cd. Wykresy graficzne
Excel 2007 dla średniozaawansowanych Zajęcia z Prowadzący: Artur Kołos.
Osoby prowadzące zajęcia z Informatyki (II część): Prof. Mirosław Czarnecki (W+L) Konsultacje:piątek (p. 302a)
Wykład 4 Dr Aneta Polewko-Klim Dr Aneta Polewko-Klim
Osoby prowadzące zajęcia z Informatyki (II część): Prof. Mirosław Czarnecki (W+L) Konsultacje:piątek (p. 302a)
Wykład 2 MATLAB cd INFORMATYKA 2 MPZI2 sem.4. 2x + 3y – 4z = 5 x + y – z = 3,5 –2,5y – z = 2 Rozwiązanie w Matlabie (m-plik): A = [ ; ; 0.
Informacje ogólne.
Podstawy Informatyki.
Tomasz Adamowicz Anna Kostun
ETO w Inżynierii Chemicznej
Obliczenia w Matlabie Tablice
Zapis prezentacji:

MOiPP Wykład 2 Matlab tablice

TABLICE – gotowe operacje rachunku macierzowego wektory: M1= [1 2 3 4 5] %przypisanie tablicy wierszowej M2 = [1; 2; 1; 1; 0] %tworzenie tablicy kolumnowej tablica dwuwymiarowa: M3= [1 2 3; 4.5 5 6; 9 7 -1] albo M3= [1, 2, 3; 4.5, 5, 6; 9, 7, -1]

Szybkie generowanie tablicy x=0:2:10 %generowanie wektora od 0 do 10 co 2 % wart_pocz:krok:wart_koncowa 2 4 6 8 10 x=0:10 %generowanie wektora od 0 do 10 co 1 % wart_pocz:wart_koncowa 1 2 3 4 5 6 7 8 9 10

M = [0:5 ; 10:15] %wartość początkowa: wartość końcowa (krok 1) ale M = [0:5; 10:17] błąd arguments dimensions are not consistent 1 2 3 4 5 10 11 12 13 14 15 x= [0 :10] M=[x; log(x)] 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 8.0000 9.0000 10.0000 0.6931 1.0986 1.3863 1.6094 1.7918 1.9459 2.0794 2.1972 2.3026

x= [0 : 0.1: 10] %wartość początkowa: krok: wartość końcowa M=[x; sind(x)] 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000 0.0017 0.0035 0.0052 0.0070 0.0087 0.0105 0.0122 0.0140 0.0157 0.0175

Operacje na tablicach m = m1*m2 %mnożenie macierzy m = m1.*m2 %mnożenie elementowe macierzy Uwaga na wymiary!!!!!!!!!! m = m' % – transponowana det (m) %wyznacznik macierzy (kwadratowej!) mo = m^(-1) %obliczenie macierzy odwrotnej! mo= inv(m) % także obliczenie macierzy odwrotnej! m*mo %sprawdzenie - macierz jednostkowa

Operatory "kropkowe" dla tablic jeśli A i B są tablicami C=A*B to iloczyn macierzowy – kiedy dozwolony? - gdy macierz A ma tyle kolumn ile macierz B wierszy D=A.*B to iloczyn elementowy – każdy element macierzy D powstaje z iloczynu odpowiednich elementów macierzy A i B – dozwolony gdy A i B mają te same rozmiary podobnie ./ .^ (dzielenie i potęgowanie elementowe) A^2 % tożsame z A*A (uwaga macierz A musi być kwadratowa) A.^2 % każdy element do kwadratu – A dowolnego rozmiaru

* = .* = ./ = .^ = Proste przykłady operacji macierzowych 1 2 3 4 2 3 8 18 * = sumy iloczynów 1 3 4 2 3 1 2 6 12 1 .* = 1 3 4 2 16 1 0.5 1.5 0.25 1 ./ = 2 3 4 6 2 3 1 4 9 64 6 .^ =

Indeksowanie tablicy – numeracja od 1 Dostęp do elementu tablicy: trzeci element tablicy M2=[ 1 3 5 -11 7; 54 -2.3 4 -1 0] M2(2,3)

Wybrane funkcje dla tablic rand() det(tablica) rand(5) – generuje tablicę kwadratową 5x5 rand(5,4) – generuje tablicę 5x4 det(tablica) oblicza wyznacznik macierzy kwadratowej max(tablica) min(tablica) wyznaczają wierszową tablicę ekstremów każdej kolumny max(max(tablica)) wyznacza maksymalny element w tablicy sum(tablica) wyznacza sumę elementów w kolumnach tablicy sum(sum(tablica)) i inne np. size(tablica) sort(tablica)

ndims(A) – ile wymiarów macierzy numel(A) – liczba elementów macierzy reshape(A,n,m) – rekonfiguracja macierzy size(A) – rozmiar macierzy length(A) – największy rozmiar

sort (A, i, typ) - sortowanie i: 1 - kolumny lub 2 - wiersze typ: 'ascend' 'descend' domyślne wartości: 1 i 'ascend' m = 3 5 8 10 8 7 10 3 5 3 7 3 5 1 8 2 6 7 1 2 1 2 9 3 9 sortowanie kolumnami m1 = 1 2 3 1 2 2 3 5 1 3 3 5 7 3 8 7 6 8 5 8 7 10 9 10 9 sortowanie wierszami m2 = 3 5 8 8 10 3 3 5 7 10 1 3 5 7 8 1 2 2 6 7 1 2 3 9 9 sortowanie wierszami malejąco 10 8 8 5 3 10 7 5 3 3 8 7 5 3 1 7 6 2 2 1 9 9 3 2 1 clc m=round(10*rand(5)) disp('sortowanie kolumnami') m1=sort(m,1) disp('sortowanie wierszami') m2=sort(m,2) disp('sortowanie wierszami malejąco') m2=sort(m,2,'descend')

Przykład >> M=rand(3) M = 0.3404 0.7513 0.6991 0.5853 0.2551 0.8909 0.2238 0.5060 0.9593 >> size(M) ans = 3 3 >>

Możliwe jest także tworzenie tzw. tablic komórkowych (struktur) >>A = {[1 8 5], 'Jakiś tekst'; 2+4i, 1:2:7} A = [1x3 double] 'Jakiś tekst' [2.0000 + 4.0000i] [1x4 double] >> T= A{1} % pierwsza składowa tablicy A T = 1 8 5 Po co? Umożliwiają umieszczenie różnych typów danych w komórkach (tablice heterogeniczne) – teksty, dane liczbowe, tablice

Rozwiązywanie układu równań liniowych 2x + 3y – 4z = 5 x + y – z = 3,5 –2,5y – z = 2 Rozwiązanie: A = [2 3 -4 ; 1 1 -1 ; 0 -2.5 -1] B = [ 5 ; 3.5 ; 2] X= A^(-1)*B wektor rozwiązań sprawdzenie – wynikiem powinien być wektor wyrazów wolnych B A*X

Funkcja roots(M) wyznaczanie pierwiastków równania n-tego stopnia - gdzie M jest wektorem współczynników przy kolejnych potęgach np. roots ([1 3 0 -4]) wyznacza pierwiastki równania: x3 + 3x2 –4=0

WYKRESY 2-wymiarowe 1 sposób: funkcja plot(x,y) x=0:10 Wymaga utworzenia dwóch wektorów o tej samej liczbie elementów x=0:10 y=[5.1 1.1 -2 -3 4.2 5.5 4.3 3.1 4.5 5.9 4.9] z=[0 2 3 3 5 4 3 4 5 4 9] %trzeci wektor title('wykres') %dodanie tytułu plot(x,y) %rysowanie wykresu plot(x,y,'r') %'r' –red y=x plot(x,y. 'k'), grid %'k' –black

Przykłady wykresów funkcji x=0:90 %generowanie wektora co 1 y=sin(pi*x/180) %wektor y plot(x,y) %rysowanie x=0:pi/50:6*pi y=cos(2*x)./sqrt(x+1) plot(x,y) Uwaga: zapis kropkowy elementowe dzielenie(mnożenie wektorów) x = - 9:1:9 z = x.^2 plot(x, z)

Wykres funkcji podanej jako parametr tekstowy 2 sposób: Funkcja fplot Wykres funkcji podanej jako parametr tekstowy jedna krzywa: fplot('sin(x*x)/x',[0 4*pi]) punkt dzielenia przez 0 nie jest rysowany - ostrzeżenie dwie krzywe: fplot('[sin(x*x)/x cos(x)]',[0.01 4*pi]) Uwaga: nie musi być użyte x jako argument funkcji w jej opisie

Wykresy 3D Krzywe 3D Wykorzystujemy tu funkcję plot3(y,z,x). Przykładowo dla helisy danej równaniami: y=sin(x) z=cos(x) Tworzymy m-plik: t = 0:pi/50:10*pi; plot3(sin(t),cos(t),t);

z=cosx siny Przykładowo: dla powierzchni podanej równaniem: Powierzchnie 3D Korzystamy z funkcji mesh(x,y,z). Przykładowo: dla powierzchni podanej równaniem: z=cosx siny clear x = (0:0.1:pi)' %wektor kolumnowy! y = x' %wektor wierszowy! z=cos(x) * sin(y) %przeanalizować tablicę z mesh(x, y, z)

Przykładowe wykresy powierzchniowe 3D peaks cylider (srednica) sphere (precyzja)

Instrukcje sterujące w MATLABIE

Funkcja dla interaktywnego wprowadzania danych przez użytkownika x = input('Podaj x:')

prompt = {'Rozmiar tablicy:'}; tytul = ''; linii = 1; def = {'1'}; Trudniejsze – do samodzielnej analizy prompt = {'Rozmiar tablicy:'}; tytul = ''; linii = 1; def = {'1'}; wymiar = inputdlg(prompt,tytul,linii,def); M=rand(str2double(wymiar{1}))

Sposoby wyprowadzania danych Funkcja dla wypisania tekstu disp(' Wyniki obliczeń ') Funkcja wypisania wartości zmiennej disp(x) Formatowane wypisanie tekstu i wartości zmiennych x=pi; y=2*pi; fprintf (1, ' x= %6.2f y = %12.8f \n', x, y) 6 miejsc miejsca dziesiętne zmień wiersz x= 3.14 y = 6.28318531

Można też zapisać tablicę w pliku nazwa pliku typ:zapis (write) x = 0: 0.1:1; y = [x; exp(x)]; fid = fopen('tab.txt','wt'); fprintf(fid,'%6.2f %10.8f \n',x, y); fclose(fid); zamknięcie pliku 0.00 1.00000000 0.10 1.10517092 0.20 1.22140276 0.30 1.34985881 0.40 1.49182470 0.50 1.64872127 0.60 1.82211880 0.70 2.01375271 0.80 2.22554093 0.90 2.45960311 1.00 2.71828183 zawartość pliku tab.txt

Zapis elementów tablicy do pliku ASCII i odczyt z pliku clear c = [8 6 4 2;4 -1 4 5] save ('mydata.dat', 'c','-ASCII') load ('mydata.dat') disp('Dane z pliku:'); mydata Zapis danych do pliku typu mat i odczyt z pliku a=rand(3) b=6 save ('plik.mat', 'a', 'b') clear a clear b load ('plik.mat') disp(a) disp(b)

Poznaliśmy instrukcję warunkową if if warunek1 instrukcje (gdy spełniony warunek1) elseif warunek2 instrukcje (gdy spełniony warunek2) else instrukcje (gdy niespełnione warunki) end

Instrukcja iteracyjna („pętla liczona”) for for zmienna = wartość_pocz:krok: wartość_końcowa, instrukcja, itd. …. następne instrukcje end UWAGA: Kończymy instrukcję słowem kluczowym end

Przykład 3 for i= 1:1:10, a(i) = i end;

Przykład 4 ("zagnieżdżanie" iteracji): for i= 1:1:10, for j = 1:1:10, a(i , j) = i*j end

pause, %zatrzymuje do naciśnięcia klawisza suma=suma+a(i , j); end Przykład 5 (sumowanie elementów w tablicy dwuwymiarowej): a=0; suma = 0; for i= 1:1:5, for j = 1:1:5, a(i , j) = 2*i - 4* j, pause, %zatrzymuje do naciśnięcia klawisza suma=suma+a(i , j); end disp(suma)

a=rand(5) licznik = 0; for i= 1:1:5, for j = 1:1:5, if a(i,j)>0 Przykład 6 (zliczanie dodatnich elementów w tablicy dwuwymiarowej): a=rand(5) licznik = 0; for i= 1:1:5, for j = 1:1:5, if a(i,j)>0 licznik=licznik+1 end disp(licznik)

Przykład 7 a=rand(5) disp('Oto 3 wiersz') for k= 1:1:5, disp(a(3, k)) end disp('Oto przekątna') disp(a(k, k))