Laboratorium 1. Rozwiązywanie równań różniczkowych z niezerowymi warunkami początkowymi

Podobne dokumenty
Rozwiązywanie równań różniczkowych z niezerowymi warunkami początkowymi

Laboratorium nr 1. dsolve( rownanie1, rownanie2,, warunek 1, warunek 2 );

Ćwiczenie 0 : Wprowadzenie do cyfrowego przetwarzania sygnałów. wyświetla listę tematów pomocy. wyświetla okno pomocy (Help / Product Help)

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

AKADEMIA MORSKA W SZCZECINIE WI-ET / IIT / ZTT. Instrukcja do zajęc laboratoryjnych nr 6 AUTOMATYKA

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

MATLAB ŚRODOWISKO MATLABA OPIS, PODSTAWY

Wprowadzenie do Mathcada 1

Podstawy MATLABA, cd.

Różniczkowanie numeryczne

Wprowadzenie do programu Mathcad 15 cz. 1

Cyfrowe Przetwarzanie Obrazów i Sygnałów

Wprowadzenie do środowiska

INSTRUKCJA LABORATORIUM ELEKTROTECHNIKI

1. Przypisy, indeks i spisy.

O co chodzi z tym MATLAB'em?!

AKADEMIA MORSKA W SZCZECINIE WI-ET / IIT / ZTT. Instrukcja do zajęc laboratoryjnych nr 1 AUTOMATYZACJA I ROBOTYZACJA PROCESÓW PRODUKCYJNYCH

Program na zaliczenie: Odejmowanie widm

1.3. Tworzenie obiektów 3D. Rysunek 1.2. Dostępne opcje podręcznego menu dla zaznaczonego obiektu

Ćwiczenia nr 2. Edycja tekstu (Microsoft Word)

Edytor tekstu OpenOffice Writer Podstawy

Po naciśnięciu przycisku Dalej pojawi się okienko jak poniżej,

1. Opis okna podstawowego programu TPrezenter.

1 Programowanie w matlabie - skrypty i funkcje

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

zajęcia 2 Definiowanie wektorów:

Kadry Optivum, Płace Optivum

Rozdział 4: PIERWSZE KROKI

Identyfikacja i modelowanie struktur i procesów biologicznych

Wprowadzenie do SIMULINKA

AKADEMIA MORSKA W SZCZECINIE WI-ET / IIT / ZTT. Instrukcja do zajęc laboratoryjnych nr 3 AUTOMATYKA

1. Ćwiczenia z programem PowerPoint

Tematy lekcji informatyki klasa 4a luty/marzec 2013

1. Wstawianie macierzy

Rys.1. Model cieplny odcinka toru prądowego reprezentowany elementami biblioteki Power System Blockset

Wstęp 7 Rozdział 1. OpenOffice.ux.pl Writer środowisko pracy 9

Praca w programie Power Draft

Andrzej Frydrych SWSPiZ 1/8

Laboratorium 1b Operacje na macierzach oraz obliczenia symboliczne

Obliczenia iteracyjne

WPROWADZENIE DO ŚRODOWISKA SCICOS

Arkusz kalkulacyjny EXCEL

AKADEMIA MORSKA W SZCZECINIE WI-ET / IIT / ZTT. Instrukcja do zajęc laboratoryjnych nr 3 AUTOMATYZACJA I ROBOTYZACJA PROCESÓW PRODUKCYJNYCH

INSTRUKCJA DO ĆWICZENIA NR 7

Ćwiczenia nr 4. Arkusz kalkulacyjny i programy do obliczeń statystycznych

Ćwiczenie 4. Matlab - funkcje, wielomiany, obliczenia symboliczne

Wprowadzenie do MS Excel

Instytut Politechniczny Państwowa Wyższa Szkoła Zawodowa TECHNIKI REGULACJI AUTOMATYCZNEJ

Multimetr cyfrowy MAS-345. Instrukcja instalacji i obsługi oprogramowania DMM VIEW Ver 2.0

MATLAB tworzenie własnych funkcji

Matlab Składnia + podstawy programowania

Podstawy technologii WWW

Praktyczne wykorzystanie arkusza kalkulacyjnego w pracy nauczyciela część 1

etrader Pekao Podręcznik użytkownika Strumieniowanie Excel

Dodawanie grafiki i obiektów

KATEGORIA OBSZAR WIEDZY

Rozwiązywanie równań różniczkowych zwyczajnych za pomocą komputera

Elementy metod numerycznych - zajęcia 9

KATEGORIA OBSZAR WIEDZY

Wizualizacja funkcji w programie MATLAB

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

Cel ćwiczenia: Nabycie umiejętności poruszania się w przestrzeni programu Kuka.Sim Pro oraz zapoznanie się z biblioteką gotowych modeli programu.

Edytor tekstu MS Office Word

FAQ: /PL Data: 14/06/2007 Konfiguracja współpracy programów PC Access i Microsoft Excel ze sterownikiem S7-200

Sylabus Moduł 2: Przetwarzanie tekstów

Programowanie w języku Python. Grażyna Koba

UMOWY INSTRUKCJA STANOWISKOWA

Ćwiczenie 3. Iteracja, proste metody obliczeniowe

ECDL/ICDL Przetwarzanie tekstów Moduł B3 Sylabus - wersja 5.0

Przewodnik dla każdego po: Dla każdego coś miłego Microsoft Excel 2010

Metody numeryczne Laboratorium 2

Podręczna pomoc Microsoft Power Point 2007

Arkusz kalkulacyjny MS EXCEL ĆWICZENIA 4

Edytor tekstu Word MK(c)

Wykorzystanie programów komputerowych do obliczeń matematycznych, cz. 2/2

Modele układów dynamicznych - laboratorium. SIMULINK - wprowadzenie

Elementy okna MatLab-a

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

Uruchamianie Aby uruchomić środowisko Simulink należy wpisać w command window Matlaba polecenie simulink lub kliknąć na pasku zadań ikonę programu:

Kolory elementów. Kolory elementów

Tytuły Wykonawcze. Opis systemu tworzenia dokumentacji TW-1

Przewodnik... Tworzenie Landing Page

Dokąd on zmierza? Przemieszczenie i prędkość jako wektory

Spis treści Szybki start... 4 Podstawowe informacje opis okien... 6 Tworzenie, zapisywanie oraz otwieranie pliku... 23

Co to jest arkusz kalkulacyjny?

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

Instrukcja obsługi dla studenta

Prezentacja multimedialna MS PowerPoint 2010 (podstawy)

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

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

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

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

SpinWorks. Manual dla studentów III roku Chemii, licencjat - Spektrochemia

Tworzenie prezentacji w MS PowerPoint

Pętle iteracyjne i decyzyjne

1.3. Proste przykłady wykorzystania Scicosa

Numeryczne rozwiązywanie równań różniczkowych ( )

Podstawy tworzenia prezentacji w programie Microsoft PowerPoint 2007

ECDL/ICDL Przetwarzanie tekstów Moduł B3 Sylabus - wersja 6.0

Transkrypt:

Laboratorium 1 1. Cel ćwiczenia Rozwiązywanie równań różniczkowych z niezerowymi warunkami początkowymi Zapoznanie się z metodami symbolicznego i numerycznego rozwiązywania równań różniczkowych w Matlabie, Wykorzystanie Simulinka do tworzenia modelu równania różniczkowego w postaci schematu blokowego Archiwizacja otrzymanych rozwiązań Publikacja wyników 2. Wprowadzenie teoretyczne a) Symboliczne rozwiązywanie równań różniczkowych dsolve() Rozwiązanie równania różniczkowego przy użyciu zmiennych symbolicznych polega na obliczeniach wykonywanych na wyrażeniach matematycznych, a nie na liczbach (rozwiązanie numeryczne), w wyniku czego otrzymujemy również wyrażenie matematyczne. Przy pomocy zmiennych symbolicznych oraz przez wykorzystanie funkcji dsolve() możliwe jest rozwiązanie równania różniczkowego dowolnego rzędu. W rozwiązaniu symbolicznym równania różniczkowego najważniejsza jest zmienna D (duże D), która określa różniczkę pierwszego stopnia (, podobnie D2 oznacza różniczkę drugiego stopnia ( itd. Funkcja dsolve() domyślnie różniczkuje po czasie. Składnia funkcji: dsolve( rownanie_rozniczkowe, warunek1, warunek2 ); Za pomocą funkcji dsolve() możliwe jest również rozwiązanie układu równań różniczkowych jak i określenie warunków początkowych. Kolejne równania podajemy po przecinkach, każde napisane pomiędzy parą apostrofów. Bezpośrednio po napisaniu równań, umieszczamy warunki początkowe w apostrofach, również oddzielone przecinkami. Składnia funkcji: dsolve( rownanie1, rownanie2,, warunek1, warunek2 ); Przykład 1: Rozwiązać równanie różniczkowe: przy war. pocz. Wykorzystując funkcję dsolve(). 1

Rozwiązanie: Tworzymy m-plik o nazwie rozw1.m Rozwiązanie równania różniczkowego metodą dsolve() Równanie różniczkowe: x +3x +2x=0, x(0)=0, x (0)=2 clear all; czyszczenie pamięci close all; zamykanie okien clc; czyszczenie okna komend Matlaba tic uruchomienie zegara mierzącego czas wykonywania programu syms x y; definiowanie zmiennych symbolicznych y=dsolve('d2x+3*dx+2*x=0', 'x(0)=0', 'Dx(0)=2'); wprowadzenie parametrów równania i warunków początkowych pretty(y) wypisanie rozwiązania w oknie komend Matlaba t=0:0.01:9.99; zdefiniowanie wektora czasowego t w=subs(y); podstawienie wektora czasowego t do równania y plot(t,w); wykres rozwiązania w funkcji czasu title('wykres rozwiązania rownania rozniczkowego');tytułu wykresu xlabel('czas [s]'); podpisanie osi X ylabel('amplituda sygnału'); podpisanie osi Y grid; naniesienie siatki na wykres a = toc wyświetlenie czasu działania programu i zapisanie go w zmiennej a b) Rozwiązanie numeryczne funkcja odexx() MATLAB zawiera funkcje rozwiązujące zagadnienie początkowe dla równań różniczkowych zwyczajnych za pomocą np. par metod Rungego-Kutty rzędu 2 i 3 (funkcja ode23()) oraz rzędu 4 i 5 (funkcja ode45()). Istnieją jeszcze inne metody typu ode jednak te dwie są najczęściej stosowane i generują bardzo dobre wyniki. Metoda ode23() od ode45() różni się między innymi szybkością oraz dokładnością wyniku (ode45() jest wolniejsze, ale dokładniejsze). Funkcje te rozwiązują zagadnienia początkowe dla układów równań zwyczajnych postaci Oznacza to, że równanie różniczkowe n-tego rzędu należy najpierw zamienić na n równań różniczkowych pierwszego rzędu. Zatem równanie należy zmienić na: Składnia funkcji: [T,X]=ode23('nazwa_funkcji_F_od_t_x',t0:dt:tk,x0); [T,X]=ode45('nazwa_funkcji_F_od_t_x',t0:dt:tk,x0); Gdzie: 'nazwa_funkcji_f_od_t_x' nazwa pliku funkcyjnego zawierającego n równań różniczkowych pierwszego rzędu, t0:dt:tk wektor czasu o początku w chwili t0, kroku dt i końcu symulacji w chwili tk, 2

x0 wektor zawierający wszystkie warunki początkowe równania różniczkowego zaczynając od x(0) a kończąc na x (n-1) (0) T zwracany przez funkcję wektor czasu symulacji X macierz zawierająca n wektorów, z których każdy jest kolejną pochodną rozwiązania różniczkowego, czyli pierwsza kolumna macierzy X reprezentuje równanie x=f(t), druga kolumna to =F(t) itd. Każda kolumna zawiera określone wartości dla kolejnych chwil czasowych wektora T. Przykład 2: Rozwiązać równanie różniczkowe z przykładu 1 wykorzystując funkcję ode45() Rozwiązanie: Aby rozwiązać to zadanie należy utworzyć dwa osobne pliki. Najpierw stworzyć oddzielny plik funkcyjny, który będzie wywoływany z funkcji ode45(). Następnie plik główny, w którym umieszczone są wszystkie podstawowe komendy. Plik funkcyjny: function xdot=rrode(t,x) funkcja o nazwie rrode, do której dostarczane są zmienne t oraz x, natomiast zwracana jest wartość xdot, plik należy zapisać pod nazwą rrode.m xdot=zeros(2,1); zdefiniowanie obszaru pamięci przy użyciu macierzy wypełnionej zerami o rozmiarze 2x1, bez tego program zwróci błąd, gdyż w pierwszym kroku nie będzie wiedział skąd odczytać i gdzie zapisać dane xdot(1)=x(2); definiujemy x1' = x2 xdot(2)=(-3*x(2)-2*x(1)); definiujemy x2' = -3*x2 2*x1 Główny plik programu: Rozwiązanie równia różniczkowego przy pomocy komendy ode45() Równanie różniczkowe takie jak w przykładzie 1 tic; t0 = 0; określamy czas początkowy na 0 sekund dt = 0.01; krok symulacji wynosi 0.01 sekundy tk = 9.99; czas trwania symulacji x01 = 0; pierwszy warunek początkowy x(0) = 0 x02 = 2; drugi warunek początkowy x'(0) = 2 x0 = [x01 x02]; łączymy warunki początkowe w jeden wektor [T,X] = ode45('rrode',t0:dt:tk,x0); wywołanie funkcji ode45() do rozwiązania równania różniczkowego zapisanego w pliku rrode.m plot(t,x(:,1),'b'); wyrysowanie pierwszej kolumny macierzy X w funkcji T opcja 'b' oznacza, że wykres będzie niebieski title('rozwiązanie r. r. metodą ode45()'); nadanie tytułu xlabel('czas [s]'); podpisanie osi X ylabel ('Amplituda sygnału'); podpisanie osi Y grid; b=toc naniesienie siatki na wykres wyświetlenie czasu działania programu i zapisanie go w zmiennej b 3

Uwaga: W odróżnieniu od większości języków programowania, w Matlabie, funkcje definiuje się zawsze w osobnych plikach. Dzięki temu są one dostępne dla innych programów. Nazwa funkcji musi być identyczna z nazwą pliku, w którym jest zapisana. c) Rozwiązanie równań różniczkowych przy użyciu pakietu Simulink Pakiet Simulink uruchamia się poprzez wpisanie komendy simulink w oknie komend Matlaba lub poprzez kliknięcie ikony na pasku narzędzi. Tak jak w przypadku rozwiązania numerycznego należy zamienić równanie różniczkowe n-tego rzędu na n równań różniczkowych pierwszego rzędu. Na podstawie powyższego układu równań tworzymy schemat blokowy: Warunki początkowe wstawia się w blokach reprezentujących całki (1/s), warunek x (0) w bloku Całka 1, warunek x(0) w bloku Całka 2. Aby eksportować wyniki do przestrzeni roboczej Matlaba należy użyć bloku To Workspace (Simulink => Sinks). W celu zapisu danych w postaci macierzy w bloku tym należy zmienić ustawienia opcji Save format ze Structure na Array. Dzięki temu w przestrzeni roboczej Matlaba pojawi się macierz o nazwie takiej samej jak nazwa bloku. Aby uzyskać wyniki takie jak w przykładzie 1 i 2, w parametrach symulacji trzeba ustawić maksymalny krok symulacji 0.01 sek. (Simulation => Configuration parameters => Max step size). Model należy zapisać w pliku model_lab1.mdl. Przykład 3: M-plik uruchamiający symulację: Rozwiązanie równania różniczkowego przy użyciu schematu blokowego z Simulinka Schemat blokowy równania różniczkowego: <<model.png>> - plik z grafiką o nazwie model.png powinien się znajdować w tym samym katalogu co publikowany dokument tic uruchomienie zegara mierzącego czas pracy programu sim('model_lab1.mdl'); uruchomienie modelu o nazwie model_lab1.mdl z poziomu m-pliku 4

plot(data_out(:,1),data_out(:,2), g ); wyrysowanie poprawnego wyniku w kolorze zielonym xlabel('czas [s]'); podpisanie osi X ylabel('amplituda sygnalu'); podpisanie osi Y title('wykres rozwiazania rownania rozniczkowego');nadanie tytułu grid; naniesienie siatki na wykres c = toc wyświetlenie czasu działania programu i zapisanie go w zmiennej c Uwaga: W Simulinku również można uzyskać wykres wpinając w schemat blok Scope w miejsce To Workspace, jednak takiego wykresu nie można w żaden sposób zapisać poza użyciem klawisza Print Screen i dalszej obróbce w zewnętrznym programie graficznym. 3. Zapisywanie i publikowanie wyników a) Zapisywanie W celu zapisania wszystkich macierzy znajdujących się w przestrzeni roboczej Matlaba należy użyć skrótu klawiszowego Ctrl+s w oknie przestrzeni roboczej, następnie należy wpisać nazwę pliku z danymi o rozszerzeniu *.mat. Można również kliknąć w ikonę Aby wczytać dane z dysku należy użyć w oknie komend (lub m-pliku) polecenia load lub przy użyciu ikony Składnia: load MojeDane.mat b) Publikowanie Publikowanie wyników w Matlabie pozwala w prosty i przejrzysty sposób stworzyć gotowy dokument typu html, doc, pdf lub inne. Służy do tego komenda publish, najłatwiej ją wywołać klikając w m-pliku na File => Publish (opcje publikacji znajdują się w File => Publish Configuration for => Edit Publish Configuration for ). Podstawową zaletą publikowania jest to, że jednym kliknięciem dobrze napisany kod zmienia się w gotowy do prezentacji dokument jak np. raport lub sprawozdanie. W przedstawionych przykładach zastosowano podstawową składnię wykorzystywaną do formatowania gotowych dokumentów. - podwójny znak komentarza oznacza nową komórkę. Pierwsza komórka w m-pliku zawiera tytuł i opis dokumentu. Przykład: Sprawozdanie z Laboratorium nr 1 Imię i Nazwisko, nr indeksu, grupa Celem ćwiczenia jest rozwiązanie równania różniczkowego trzema metodami: # Metodą symboliczną - dsolve() # Metodą numeryczną - ode45() # Przy użyciu schematu blokowego w Simulinku 5

Ważne jest, aby kolejne linie zaczynały się od pojedynczego znaku komentarza, w ten sposób w końcowym dokumencie znajdzie się ciągły tekst. Użyty znak # oznacza, że jest to element numerowany. Aby wypunktować obiekt należy użyć znaku *. Każde kolejne użycie tworzy nową komórkę, dodając po spacji za tym znakiem tekst, tworzy się nowy rozdział w dokumencie. Jeżeli nie zostanie dodany żaden tekst, to tworzy się przerwę w kodzie programu. Dzięki czemu umieszczając ten znak np. po komendzie plot(), w gotowym dokumencie zostanie w tym miejscu wstawiony wykres. W przykładzie 3 zastosowano składnię: <<model.png>> Linia ta służy do wstawienia w miejsce tego kodu grafiki o nazwie model.png. Jednak plik ten powinien znajdować się w katalogu, w którym publikowany jest dokument. Więcej informacji o publikowaniu można znaleźć na stronie: http://www.mathworks.com/help/matlab/matlab_prog/marking-up-matlab-commentsfor-publishing.html 4. Przebieg ćwiczenia: Rozwiązać równania różniczkowe: a) dla b) dla c) dla d) dla e) dla f) dla g) dla wykorzystując wszystkie metody poznane na zajęciach. Wyniki należy porównać na jednym wykresie, pamiętając o ustawieniu identycznego kroku symulacji w każdej metodzie. Dodatek 1. Nałożenie kilku przebiegów na jednym wykresie. a) przy użyciu tylko komendy plot() Składnia programu: plot(t1,x1,'r',t2,x2,'g',t3,x3,'b'); b) przy użyciu komendy hold on Składnia programu: plot(t1,x1,'r'); hold on; plot(t2,x2,'b'); plot(t3,x3,'g'); hold off; komenda hold on nie pozwala nadpisać wykresu do momentu użycia komendy hold off. Dzięki temu wywołania kolejnych funkcji plot() może być oddzielone fragmentami dowolnego kodu. 2. Ograniczenie zakresu osi X oraz Y. Ograniczenie takie jest przydatne, jeżeli chce się pokazać tylko istotny wycinek wykresu, służą do tego komendy xlim() oraz ylim(). Składnia programu: plot(t,x,'r'); xlim([x1 x2]); x1 wartość początkowa, x2 końcowa, x1<x2 6

ylim([y1 y2]); y1 wartość początkowa, y2 końcowa, y1<y2 3. Ustawianie pozycji i rozmiaru okna wykresu. Do ustawienia pozycji i rozmiaru okna wykresu (figury) należy użyć następującej składni programu: set(gcf,'position',[x1 y1 x2 y2]); (x1,y1) pozycja lewego dolnego roku okna, (x2,y2) pozycja prawego górnego rogu okna Jeżeli w programie jest używane tylko jedno okno do wyrysowania wszystkich wykresów, to daną linię kodu umieszcza się bezpośrednio pod pierwszym wywołaniem komendy plot(). Jeżeli w programie jest wiele okien, to pod każdym powinna znajdować się ta komenda. 7