Materiały do Laboratorium Programowania Obliczeń Komputerowych MATLAB

Podobne dokumenty
MATLAB ŚRODOWISKO MATLABA OPIS, PODSTAWY

Matlab Składnia + podstawy programowania

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

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje

Podstawy Automatyki ćwiczenia Cz.1. Środowisko Matlab

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

Wprowadzenie do środowiska

Laboratorium Algorytmy Obliczeniowe. Lab. 9 Prezentacja wyników w Matlabie

Matlab Składnia + podstawy programowania

Podstawy MATLABA, cd.

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

Matlab MATrix LABoratory Mathworks Inc.

Metody i analiza danych

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

Wprowadzenie do programu Mathcad 15 cz. 1

Ćwiczenie 3. Iteracja, proste metody obliczeniowe

Przetwarzanie sygnałów

PODSTAWY INFORMATYKI 1 MATLAB CZ. 3

Obliczenia w programie MATLAB

Metody numeryczne Laboratorium 2

Laboratorium Cel ćwiczenia Ćwiczenie ma na celu praktyczne przedstawienie grafiki 3D.

Wprowadzenie do Scilab: macierze

1 Powtórzenie wiadomości

Przykładowo, jeśli współrzędna x zmienia się od 0 do 8 co 1, a współrzędna y od 12 co 2 do 25, to punkty powinny wyglądać następująco:

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

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

Wstęp do Programowania Lista 1

Wykorzystanie programów komputerowych do obliczeń matematycznych

Podstawowe operacje na macierzach

MATLAB - podstawy użytkowania

Wprowadzenie do Mathcada 1

Metody i analiza danych

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

Wprowadzenie do Scilab: macierze

MATLAB - laboratorium nr 1 wektory i macierze

do MATLABa programowanie WYKŁAD Piotr Ciskowski

Matematyka liczby zespolone. Wykład 1

Wprowadzenie do pakietów MATLAB/GNU Octave

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

WPROWADZENIE DO ŚRODOWISKA SCILAB

Wprowadzenie do systemu Scilab

KRYTERIA OCENIANIA Z MATEMATYKI W OPARCIU O PODSTAWĘ PROGRAMOWĄ I PROGRAM NAUCZANIA MATEMATYKA 2001 DLA KLASY DRUGIEJ

Technologie informacyjne lab. 3

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

Podstawowe operacje graficzne.

WEKTORY I MACIERZE. Strona 1 z 11. Lekcja 7.

Ćwiczenie 1. Wprowadzenie do programu Octave

Cw.12 JAVAScript w dokumentach HTML

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

1 Podstawy c++ w pigułce.

PętlaforwOctave. Roman Putanowicz 13 kwietnia 2008

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

zajęcia 2 Definiowanie wektorów:

Pracownia Informatyczna Instytut Technologii Mechanicznej Wydział Inżynierii Mechanicznej i Mechatroniki. Podstawy Informatyki i algorytmizacji

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

1. Napisz program, który wyświetli Twoje dane jako napis Witaj, Imię Nazwisko. 2. Napisz program, który wyświetli wizytówkę postaci:

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Elementy metod numerycznych - zajęcia 9

Elementy Projektowania Inżynierskiego MATLAB Wprowadzenie.

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Proste programy w C++ zadania

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Lab 9 Podstawy Programowania

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

1 Zacznijmy od początku... 2 Tryb tekstowy. 2.1 Wyliczenia

Zakłócenia w układach elektroenergetycznych LABORATORIUM

Laboratorium Komputerowego Wspomagania Analizy i Projektowania

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

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

Elementy projektowania inzynierskiego Przypomnienie systemu Mathcad

1 Programowanie w matlabie - skrypty i funkcje

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

Podstawy Informatyki 1. Laboratorium 1

Wartości x-ów : Wartości x ów można w Scilabie zdefiniować na kilka sposobów, wpisując odpowiednie polecenie na konsoli.

JAVAScript w dokumentach HTML (1)

ARKUSZ KALKULACYJNY komórka

MATLAB tworzenie własnych funkcji

Drugi sposób definiowania funkcji polega na wykorzystaniu polecenia:

Część 4 życie programu

Obliczenia inżynierskie arkusz kalkulacyjny. Technologie informacyjne

Ć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ć

1 Podstawy c++ w pigułce.

Programowanie w języku Python. Grażyna Koba

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

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

PODSTAWY INŻYNIERII SYSTEMÓW TECHNICZNYCH

Pętle iteracyjne i decyzyjne

Tablice. Jones Stygar na tropie zmiennych

Typy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Podstawy Programowania C++

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Rys.2.1. Drzewo modelu DOM [1]

Zad. 3: Układ równań liniowych

Wizualizacja funkcji w programie MATLAB

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Graficzna prezentacja wyników

1 Przygotował: mgr inż. Maciej Lasota

, h(x) = sin(2x) w przedziale [ 2π, 2π].

Transkrypt:

MATLAB Matlab jest językiem programowania, w którym zasadniczo występuje jeden typ danej liczbowej, a jest to macierz liczb zespolonych (szczególnym przypadkiem takiej macierzy jest liczba rzeczywista lub naturalna) w związku z tym nie deklarujemy rodzaju zmiennych. Dodatkowo możemy posługiwać się tablicami znaków string, którym jednak poświęcimy tutaj mało uwagi. Matlab ukierunkowany jest na wykonywanie obliczeń i ich wygodną prezentację graficzną. Istnieje wiele bibliotek pozwalających na bardzo złożone obliczenia, które nie będą tutaj również omawiane. Wybrane operacje na macierzach W związku z tym, że Matlab jest ukierunkowany na operacje macierzowe posiada bardzo wiele funkcji operujących na macierzach. Wszystkie operacje podstawowe operują na macierzach Definiowanie macierzy (zawsze w nawiasach prostokątnych) A=[1 2 4.5 6; 2 5 3 7] średnik oznacza koniec wiersza, spacja rozdziela liczby w wierszu B=[1 3; 4 5; 10 5; 3 6] C=[1 2 3 5 6 7] trzy kropki oznaczają kontynuację w następnym wierszu D=[ 1 3 5 2 4 7] brak kropek jest traktowane jako koniec wiersza macierzy E=[1:5;1:2:10] generuje macierz, w której pierwszy wiersz zawiera kolejne liczby od 1 do 5 (domyślny krok wynosi 1) a drugi wiersz zawiera liczby od 1 do 10 z krokiem 2 (krok może być ułamkiem) F=eye(3) definiowanie macierzy jednostkowej (oczywiście wymiar 3x3) G=ones(4) definiowanie macierzy jedynkowej (oczywiście wymiar 4x4) H= linspace(0, 2,11) generuje 11 równomiernie rozmieszczonych liczb w zakresie od 0 do 2 Odwoływanie się do podmacierzy B=A(i,j) elementy w i-tym wierszu i j-tej kolumnie C=A(:,j) oznacza odwołanie się do j-tej kolumny D=A(i,:) oznacza odwołanie się do i-tego wiersza E=A(a:b,c:d) oznacza odwołanie do podmacierzy zawartej w wierszach od a do b i kolumnach od c do d Funkcją przydatną jest funkcja w=size(a) która zwraca ilość wierszy i kolumn macierzy A (w wektor dwu elementowy lub [w1,w2]=size(a), w1 i w2 odpowiednio ilość wierszy i kolumn) Wybrane operatory macierzowe (wymiary macierzy dla poszczególnych operacji muszą być zgodne z ogólnie znanymi zasadami z matematyki) C=A+B dodawanie macierzy D=A-B odejmowanie macierzy E=A+2 dodanie do każdego elementu macierzy liczby F=A*B mnożenie macierzy G=A*2 pomnożenie każdego elementu macierzy przez liczbę H=A transpozycja macierzy 1

I=A/B dzielenie macierzy J=A^3 potęgowanie macierzy (możliwe również wykładniki ułamkowe) Uwaga występują również operatory tablicowe C=A.*B mnożenie tablicowe, kropka oznacza, że macierz wynikowa będzie zawierała na odpowiednich pozycjach iloczyny odpowiadających elementów w macierzy A i B D=A./B dzielenie tablicowe (elementy z A dzielone przez elementy z B) E=A.\B dzielenie tablicowe (elementy z B dzielone przez elementy z A) F=A.^3 potęgowanie tablicowe (każdego elementu tablicy osobno) Tablice mogą być argumentami większości funkcji: A= [linspace(0, 2,50); linspace(0, 5,50)] B=sqrt(A) zwraca tablicę pierwiastków C=sin(A) zwraca tablicę sinusów Operacje logiczne (<,<=,>,>=,= =,~= and, or, not) C=A & B (równoważne and(a, B) ) zwraca macierz, w której na odpowiednich pozycjach wartość 1 oznacza, że na odpowiedniej pozycji elementy w macierzy A i B są niezerowe. D=A B (równoważne or(a, B) ) zwraca macierz, w której na odpowiednich pozycjach wartość 1 oznacza, że na odpowiedniej pozycji elementy w macierzy A lub B są niezerowe. E~A (równoważne not(a) F=A<B zwraca macierz, w której na odpowiednich pozycjach wartość 1 oznacza, że na odpowiedniej pozycji elementy w macierzy A lub B spełniają podany warunek. Przykłady stosowania Usunięcie z macierzy elementów mniejszych niż 100 x=x(x>100) zwraca wynik w postaci wektora elementów spełniających ten warunek Usunięcie liczb nieskończonych z macierzy D=D(isfinite(D)) zwraca wynik w postaci wektora elementów skończonych Wybór z macierzy tych kolumn, których trzeci wiersz ma element większy niż 2 L=x(3,:)>2 x=x(:,l) lub skrótowo x=x(:, x(3,:)>2) Funkcje zaokrąglania ceil zaokrąglenie w górę floor zaokrąglenie w dół fix zaokrąglenie ujemnych w górę a dodatnich w dół round zaokrąglenie do najbliższej całkowitej find(x)- zwraca indeksy niezerowych elementów macierzy find(x warunek)- (np i=find(x<2)) zwraca indeksy elementów macierzy spełniających zadany warunek. 2

Skrypty i funkcje Skrypt zbiór tekstowy zawierający instrukcje, nie posiada nagłówka, zmienne mają charakter globalny. Funkcje fragment programu identyfikowany nazwą, zmienne wewnątrz mają charakter lokalny chyba, że zostaną w specjalny sposób zadeklarowane jako globalne Sposób definiowania function wartości-funkcji=nazwa-funkcji(par1,...parn) komentarz ciąg instrukcji funkcja może być wywoływana bezparametrowo function []=fun() (nie pobiera i nie zwraca wartości) function [A, B]=oblicz(V,t0,tk); -deklaracja nagłówka funkcji, wszystkie zmienne mogą być macierzami) Wywołanie funkcji [A, B]=oblicz(V,t0,tk) (jako parametry wejściowe można wprowadzić także wartości liczbowe) Operacje na plikach dir -zawartość aktualnego katalogu cd przejście do innego katalogu save zapisanie wszystkich zmiennych do pliku (save nazwa_pliku (w katalogu domyślnym), save ścieżka i nazwa_pliku save ścieżka i nazwa_pliku i nazwy zmiennych load odczyt danych (analogicznie do save) path pozwala na dodanie ścieżki dostępu (np path(path,'c:\matlab5') tworzy nowa lokalizację gdzie automatycznie będą znajdowane skrypty matlaba) Inne funkcje % znak procent rozpoczyna komentarz w danej linii ; - średnik nie jest obowiązkowy na końcu linii, informuje on interpreter czy wynik danej linii ma być wyświetlony na ekranie (brak średnika powoduje wyświetlanie). disp('podaj wymiary macierzy') wyświetla komentarz na ekranie disp(a) wyświetla zmienną A na ekranie n=input('podaj ilość wierszy macierzy A: '); czyta macierz z klawiatury równocześnie wypisując informacje Matlab ze względu na operacje macierzowe w większości nie wymaga zastosowania pętli (nie są polecane) jednak są one dostępne while warunek instrukcje for i=1:n, instrukcje 3

Funkcje graficzne Rysowanie na jednym wykresie wielu funkcji subplot(m,n,p) m liczba wykresów w pionie n liczba wykresów w poziomie p numer wykresu subplot(2,1,1) plot(x) subplot(2,1,2) plot(y) Istnieją również inne sposoby wywołania tej funkcji. Opisywanie wykresów xlable, ylable, title, text(x,y,napis)- x,y współrzędne napisu figure- tworzy lub aktywuje rysunek id=figure- tworzy rysunek id=figure(id)- aktywuje rysunek o identyfikatorze id close- usuwa obiekt aktywny close(id)- usuwa obiekt o podanym identyfikatorze set- pozwala na ustalenie odpowiednich cech obiektu na rodzaj lub grubość linii axis- pozwala na ustalenie zakresu skali na osiach figure; hh2 = plot(t1,phe,t,y,'w'); set (hh2(1), 'LineStyle','-.'); set (hh2(2), 'LineStyle','-'); axis([0 20 6.6 8.6]); set (hh2, 'LineStyle','-','LineWidth',2.0); grid; Trójwymiarowa grafika [X,Y]=meshgrid(1:0.2:2, 1:0.2:2) % tworzenie siatki Z=X+Y mesh(x,y,z)-wykreślenie wykresu view zmienia kierunek oglądania aktywnego układu współrzędnych view(az,el) azymut i elewacja (standartowo az=-37.6 el=30) 4

Przykłady z komentarzem % program wprowadzający dane (skrypt) s=''; % deklaracja pustego znaku while ~strcmp(s,'t') % sprawdzenie warunku z zastosowaniem funkcji strcmp porównującej ciągi % znaków disp('podaj przedział generacji funkcji') % wyświetlenie tekstu a=input('podaj początek przedziału: '); % czytanie z klawiatury wartości do zmiennej b=input('podaj koniec przedziału: '); t=a:0.01:b; %generacja wektora liczb w przedziale od a do b z krokiem 0.01 s=input('podaj wzór funkcji jednej zmiennej f(t): ','s'); % czytanie nazwy funkcji lub wyrażenia, które %ma zostać wykonane x=eval(s,''); % interpretacja odczytanego ciągu i wykonanie operacji matematycznych h=figure; % stworzenie nowego okna graficznego o uchwycie zapisanym w zmiennej h plot(t,x); % stworzenie wykresu w aktywnym oknie graficznym disp('naciśnij coś'); pause; % zatrzymanie programu close(h); % zamknięcie okna o uchwycie h disp('dziekuję za współpracę'); s=input('czy chcesz zakończyć t/n?: ', 's'); % sprawdzenie warunku zakończenia pętli % słowo kluczowe kończące zakres pętli. % program macierz % program napisany w stylu języka C, ponieważ w Matlabie całą macierz można wprowadzić jedną % instrukcją s=''; A=[]; % deklaracja pustej macierzy B=[]; while ~strcmp(s,'t') disp('podaj wymiary macierzy') n=input('podaj ilość wierszy macierzy A: '); p=input('podaj ilość kolumn macierzy A: '); m=input('podaj ilość wierszy macierzy B: '); l=input('podaj ilość kolumn macierzy B: '); for i=1:n, for j=1:p, %stosowanie pętli for st=['podaj element macierzy A(',num2str(i),num2str(j),'): ']; disp(st) A(i,j)=input(''); for i=1:m, for j=1:l, st=['podaj element macierzy B(',num2str(i),num2str(j),'): ']; % konwersja liczby na znaki aby % można wyświetlić cały tekst w jednej linii disp(st) B(i,j)=input(''); A=A % instrukcja nie zakończona średnikiem powoduje wyświetlenie jej wyniku na ekranie B=B s=input('podaj wzór wykonywanej operacji macierzowej A opreator B: ','s'); C=eval(s,'') disp('naciśnij coś'); pause; disp('dziekuję za współpracę'); s=input('czy chcesz zakończyć t/n?: ', 's'); 5

% Program obliczający dynamiczny przebieg C(t) napisany w stylu Matlaba - brak pętli % przykład funkcji, która nie zwraca parametrów % przykład wywołania oblicz(1,2,0.1,0.2,0,10) (nazwa pliku powinna być taka sama jak funkcji) % V- objetość zbiornika [m3] % Vg - przepływ objętościowy % C0 - stężenie początkowe w reaktorze % C - stężenie na wejściu reaktora function []=oblicz(v,vg,c,c0,t0,tk); global Vg V C % deklaracja zmiennej globalnej w funkcji [T,X]=ode45('rown1',t0,tk,C0,0.000001); %funkcja standartowa do obliczania równań różniczkowych clear global Vg V C % usunięcie zmiennej globalnej w funkcji h=figure; plot(t,x); disp('naciśnij coś'); pause; close(h); %%%% Konice programu function [Dx]=rown1(t,x) global Vg V C Dx=(Vg/V)*(C-x); % Funkcja rown1 % Program obliczający dynamiczny przebieg C(t) napisany w stylu C zastosowanie pętli for function [C1,T]=obliczaj(V,Vg,C,C0,dt,t0,tk); %Funkcja obliczająca przebieg czasowy stężenia soli w zbiorniku % Sposób wywołania: obliczaj(v,vg,c,c0,dt,t0,tk) lub [a,b]=obliczaj(v,vg,c,c0,dt,t0,tk) %Gdzie: % V- objetość zbiornika [m3] % Vg - przepływ objętościowy % C0 - stężenie początkowe w reaktorze % C - stężenie na wejściu reaktora W=get(0,'ScreenSize'); % odczytanie rozdzielczości monitora C1=[C0]; tb=t0+dt; T=[t0,tb]; c2=(vg/v)*(c-c0)*dt+c0; C1=[C1,c2]; n=round((tk-t0)/dt); for i=2:n c2=(vg/v)*(c-c2)*dt+c2; C1=[C1,c2]; tb=tb+dt; T=[T,tb]; ; temp2=figure('menubar','none','numbertitle','off','name',... ' Wykres ','position',w,'color',[0 0 0]); % ustalenie niektórych parametrów okna graficznego h=plot(t,c1); axis('on'); xlabel('t'); ylabel('c'); title('wykres czasowy'); set(h,'linestyle','-','linewidth',2.0); % odwołanie się do obiektu o uchwycie h i ustalenie stylu i % grubości linii grid on % włączenie siatki na wykresie 6

Zadania do wykonania 1. Program obliczający wartości x, x 2, x 3 dla liczby rzeczywistej x w przedziale [x p, x k ] i zmieniającej się z krokiem dx>0. Program należy napisać korzystając z operacji macierzowych ( bez użycia pętli programowych). Wyniki należy przedstawić na wykresie. 2. Program pozwalający na łączenie podanych trzech macierzy w następujący sposób: A B C = D a) [ ] [ ] A C A B Jeżeli macierze mają niezgodne wymiary to należy je dostosować uzupełniając wierszami lub kolumnami zerowymi. Macierze wejściowe i macierz wynikową wyświetlić na ekranie. b) B = [ D] c) C = [ D] 3. Program wczytujący macierz i obliczający sumy poszczególnych wierszy oraz kolumn. a) Obliczyć sumę wszystkich liczb dodatnich i ujemnych w macierzy. b) Obliczyć średnią liczb dodatnich i ujemnych. c) Transponować podaną macierz 4. Program obliczający wartości 3 2 a) funkcji y = x 1 ax + 9 + c i wypisujący rozwiązania na ekranie c=0 x=1 a =-1 y=-1.41 c=0 x=0 a=1 brak rozw. c=0 x=5 a=-1 brak rozw. c=3 x=1 a=0 y=0 b) dla funkcji z punktu a narysować wykres w podanym przedziale [xp, xk] jeżeli w tym przedziale są punkty, dla których brak rozwiązania to należy przyjąć wartość 0 w tych punktach. 7