KATEDRA AUTOMATYKI, BIOMECHANIKI I MECHATRONIKI Laboratorium Mechaniki Technicznej Ćwiczenie 6 Modelowanie i symulacje numeryczne układów dynamicznych w programie Scilab
Cel ćwiczenia Celem ćwiczenia jest zapoznanie się z możliwością wykorzystania pakietu Scilab do modelowania i symulacji numerycznych dynamiki prostych układów mechanicznych. 1 Model matematyczny badanego układu dynamicznego Przedmiotem badań symulacyjnych będzie rzeczywisty układ drgający o jednym stopniu swobody z wymuszeniem, który był już badany eksperymentalnie w ramach ćwiczenia Badanie drgań liniowych o jednym stopniu swobody. Tym razem jednak model matematyczny tego układu zostanie rozszerzony o nieliniowy składnik oporu ruchu T o charakterystyce podobnej do siły tarcia Coulomba, czyli zdefiniowanej następująco T = T0 dla xɺ < 0 T T0, T0 dla xɺ = 0 T = T0 dla xɺ > 0 gdzie wartość T0 nie zależy od siły nacisku i od prędkości. Powyższy model często zapisuje się jako T ( xɺ ) = T sign 0 ( x ɺ ), gdzie sign oznacza funkcję signum (funkcję znaku). Jednak zapis ten nie opisuje prawidłowo zachowania modelu dla prędkości xɺ równej zeru, gdzie funkcja signum przyjmuje wartość równą zeru i co nie jest zgodne z zachowaniem modelu (1). Zauważmy, że model (1) dopuszcza różne wartości siły tarcia dla zerowej prędkości xɺ, która wyniknie dopiero ze spełnienia różniczkowego równania ruchu. Jest to właściwość, podobnie jak skokowa zmiana siły wraz ze zmianą znaku prędkości, powodująca, że numeryczne rozwiązanie równania różniczkowego zawierającego model (1) wymaga specjalnego podejścia. Jedną z metod obejścia tego problemu jest wygładzenie modelu (1), np. w następujący sposób ( ɺ) = T0 T x xɺ xɺ + ε 2 2 T (1) gdzie ε T jest parametrem numerycznym przyjmującym odpowiednio małą wartość np. 5 = 10 m/s. Na rysunku 1 przedstawiono przebiegi siły tarcia wg. modelu (2) dla różnych ε T wartości parametru ε T. (2) Rysunek. 1. Przebiegi siły tarcia wg. modelu (2) dla różnych wartości parametru ε T. 2
Model fizyczny układu przedstawia rysunek 2. Składa się on z punktu materialnego o masie m połączonego z nieruchomą ostoją dwoma liniowymi elementami sprężystymi o współczynnikach sprężystości k/2 [N/m] oraz tłumikiem liniowym o współczynniku c [N s/m] i poddanego działaniu harmonicznej siły wymuszającej P( t) = P0 sinωt - o amplitudzie P 0 i częstości ω. Siła wymuszająca jest generowana ruchem obrotowym niewyważonej tarczy, 2 więc P0 = f0ω, gdzie f0 = mne jest parametrem zależnym od masy ( m n) i promienia (e) niewyważenia. Dodatkowo na układ działa siła tarcia T. k 2 k 2 m c T Rysunek. 2. Model fizyczny badanego układu drgającego. Równanie dynamiczne ruchu (model matematyczny) układu przedstawia się następująco ( ) 0 sin mx ɺɺ + cxɺ + T xɺ + kx = P ω t, (3) gdzie jako model siły T przyjmiemy wyrażenie (2). P( t) = P sinωt x 0 2 Wprowadzenie do środowiska Scilab i budowa modelu symulacyjnego Scilab jest darmowym środowiskiem do obliczeń naukowych rozprowadzanym na licencji open source. Na stronie projektu www.scilab.org można znaleźć wersje instalacyjne pakietu, dokumentację oraz wiele opracowań pomocnych podczas nauki jego użytkowania. Scilab jest pewnego rodzaju darmowym zamiennikiem komercyjnego pakietu MATLAB. Przykłady przedstawione w tej instrukcji opracowano przy użyciu Scilab 5.5.2 i zaleca się korzystać z tej wersji oprogramowania podczas wykonywania ćwiczenia. Po uruchomieniu środowiska zobaczymy okno główne (konsolę) widoczne na rysunku 3. W środkowym oknie można wpisywać bezpośrednio instrukcje w języku Scilab (podobnym do języka MATLAB) i uzyskiwać wyniki. W tej części ćwiczenia skorzystamy z programu Scicos zawartego w pakiecie Scilab, który jest odpowiednikiem programu Simulink w pakiecie MATLAB. W celu uruchomienia narzędzia Scicos wpisujemy polecenie xcos w konsoli Scilab. Otwierają się wtedy dwa okna widoczne na rysunku 4: przeglądarka palet oraz okno projektu. Przeglądarka palet zawiera zbiór gotowych bloków, z których tworzy się model symulacyjny w oknie projektu. Przy pomocy narzędzia Scicos zbudujemy model symulacyjny na podstawie modelu matematycznego (3). Można zbudować model symulacyjny dowolnego równania lub układu równań różniczkowych zwyczajnych, pozwalający uzyskać jego rozwiązanie numeryczne. Rozpoczynamy od zapisania projektu pod nazwą wozek w odpowiednim katalogu. Następnie wprowadzimy do kontekstu modelu (menu Symulacja-Ustaw kontekst) parametry modelu, w tym warunki początkowe x0 i v0. (zob. rysunek 5). Przyjmujemy, że wszystkie wielkości są wyrażone w jednostkach układu SI. 3
Rysunek. 3. Okno główne pakietu Scilab. a) b) Rysunek. 4. Środowisko Scicos: a) przeglądarka palet, b) okno projektu. Ponieważ równanie różniczkowe (3) jest równaniem drugiego rzędu, więc użyjemy dwóch bloków całkujących INTEGRAL_m, który znajdziemy na palecie Systemy czasu ciągłego. Przenosimy bloki do projektu i łączymy je szeregowo (zob. rysunek 6a). Sygnał wejściowy do pierwszego członu będzie przyspieszeniem xɺɺ, sygnał płynący pomiędzy oboma blokami będzie prędkością xɺ, a na wyjściu będziemy mieli przemieszczenie x. Podwójne kliknięcie na komponencie otwiera okno parametrów, w którym można modyfikować jego parametry. W przypadku bloku całkującego okno to przedstawia rysunek 6b. Wprowadzamy do nich warunki początkowe x0 i v0. Warunek początkowy bloku całkującego oznacza wartość początkową sygnału wyjściowego tego bloku. Tak więc w pierwszym bloku ustawiamy prędkość początkową v0, natomiast w drugim bloku położenie początkowe x0. Na wejście pierwszego bloku należy wprowadzić przyspieszenie. Wyznaczamy je rozwiązując równanie (3) względem xɺɺ. 4
Rysunek. 5. Kontekst modelu. Następnie pobieramy z palety Funkcje zdefiniowane przez użytkownika blok EXPRESSION i włączamy go w szereg przed pierwszym blokiem całkującym. Ustawiamy jego parametr number of inputs jako 3 oraz wpisujemy scilab expression wyrażenie na sygnał wyjściowy bloku, czyli przyspieszenie, zakładając, że kolejne wejścia do bloku, oznaczone jako u1, u2 i u3, będą kolejno przemieszczeniem x, prędkością xɺ oraz zewnętrzną siłą wymuszającą P( t) = P0 sinωt (zob. rysunek 6c). Następnie podłączamy odpowiednie sygnały wyjściowe z bloków całkującym do dwóch pierwszych wejść bloku EXPRESSION. Trzecie wejście (zewnętrzna siła wymuszająca) musi pochodzić z bloku generującego sygnał. W tym celu pobieramy z palety Źródła pobieramy komponent GENSIN_f generujący sygnał harmoniczny. Umieszczamy go w projekcie, podłączmy jego wyjście do trzeciego wejścia bloku EXPRESSION i ustawiamy jego parametry amplitudę i częstość zgodnie z rysunkiem 6d. Po każdej modyfikacji i przed każdym uruchomieniem modelu należy zapisać dokonane zmiany. Teraz, po zapisaniu, model jest już gotowy do uruchomienia. Przed tym jednak warto zmienić czas symulacji, który domyślnie ma bardzo dużą wartość. Robimy to w ustawieniach symulacji, do których docieramy poprzez menu Symulacja-Ustawienia, gdzie zmieniamy Ostateczny czas integracji na np. 10 s. Model można uruchomić w menu Symulacja- Start. Na razie jednak nie widzimy wyników symulacji. W celu ich obejrzenia musimy dalej rozbudować model. Istnieją różne sposoby oglądania wyników symulacji modelu zbudowanego przy pomocy narzędzia Scicos. W tym przypadku wyślemy wyniki do przestrzeni roboczej Scilaba. Umieszczamy w projekcie blok TOWS_c, który znajdujemy w palecie Sinks, oraz jeden blok CLOCK_c z palety Źródła. Pierwszy element będzie wysyłał przemieszczenie x do przestrzeni roboczej w chwilach czasowych sterowanych przez drugi komponent. Łączymy elementy w sposób pokazany na rysunku 7a. We właściwościach bloku CLOCK_c (zob. rysunek 7b) ustawiamy chwilę początkową (0 s) oraz okres zapisywania wyników (0,01 s). W bloku TOWS_c ustawiamy nazwę zapisywanej zmiennej (xs) oraz zwiększamy domyślną 5
wartość parametru Size of buffer, określającą maksymalny rozmiar zapisanej w przestrzeni roboczej tablicy z wynikami (zob. rysunek 7c). a) b) c) d) Rysunek. 6. Etapy budowy modelu. 6
a) b) c) Rysunek. 7. Uzupełnienie modelu o elementy zapisujące wyniki. Po zapisaniu i uruchomieniu modelu wynik symulacji przemieszczenia znajdzie się w przestrzeni roboczej Scilaba. Aby go obejrzeć, należy wpisać w konsoli nazwę zmiennej xs.time, w której zapisana jest kolumna z chwilami czasowymi kolejnych zapisanych wartości przemieszczeń. Te ostatnie zobaczymy po wpisaniu w wierszu konsoli wyrażenia xs.values. W celu narysowania wykresu należy wpisać konstrukcję plot(x.time,x.values). 3 Badanie drgań swobodnych Zaczniemy od napisania skryptu odczytującego dane pomiarowe przemieszczenia podczas ruchu swobodnego rzeczywistego oscylatora i rysującego ich wykres. Dane pomiarowe są zapisane w pliku tekstowym pomiar.txt, gdzie w pierwszej kolumnie zapisane są chwile czasowe odpowiadające wartościom przemieszczenia zapisanych w kolumnie drugiej i wyrażonych w milimetrach. Skrypt tworzymy w edytorze skryptów, który uruchamiamy poleceniem scinotes. Skrypt, zapisany pod nazwą odczyt_eksp.sce, przedstawiony jest na wydruku 1. Użyto w nim polecenia cd zmieniającego ścieżkę do bieżącego katalogu i funkcji fscanfmat odczytującej macierz z pliku tekstowego. Odczytana macierz (dwukolumnowa) jest zapisana w zmiennej ExpData. Następnie jej poszczególne kolumny zostają zapisane w zmiennych odpowiednio te (czas) i xp (przemieszczenie). Na koniec rysowany jest wykres (użyto tu poleceń clf i figure, czyszczących okno nr 1 wykresu i kontrolujących jego numer). Komentarze, czyli ignorowaną część kodu, wprowadza się przy użyciu sekwencji //. Po uruchomieniu skryptu ukaże się wykres pokazany na rysunku 8. Opis każdej użytej funkcji, operatora czy symbolu, można znaleźć w systemie pomocy, który można uruchomić wpisując w linii komend help nazwa_funkcji. Wydruk 1. Program odczyt_eksp.sce odczytujący dane pomiarowe z pliku i rysujący ich wykres. //sciezka dostępu do katalogu cd('d:\dydaktyka\laboratorium MECHANIKI\Instrukcje i wzory sprawozdan\06_symulacje numeryczne w scilabie\scilab'); // odczyt danych pliku 7
ExpData = fscanfmat('pomiar.txt'); tp = ExpData(1:$,1); xp = ExpData(1:$,2); // wykres clf(1); figure(1); plot(tp,xp); 3.1 Liniowy model tłumienia Rysunek. 8. Wynik działania skryptu z wydruku 1. W kolejnym kroku napiszemy program wykres_eksp_sym.sce kreślący dane eksperymentalne i wyniki symulacji na jednym wykresie (zob. wydruk 2). Dodatkowo wykres został wyposażony w opis osi i legendę. Zauważmy, że w dwóch miejscach skryptu występuje mnożenie sygnału z symulacji przez 1000 w celu dopasowania go do danych eksperymentalnych wyrażonych w milimetrach. Funkcja disp wyświetla wartość funkcji celu w konsoli. W celu poprawnego działania skryptu konieczne jest ustawienie parametrów modelu wozek.xcos, tak aby uzyskać zgodność danych symulacyjnych i eksperymentalnych. Okres próbkowania danych wysyłanych do przestrzeni roboczej Scilaba wynosi już 0,01 s, co jest zgodne danymi eksperymentalnymi odczytami z pliku. Należy jeszcze ustawić odpowiedni czas symulacji, tj. 3,01 s. Dodatkowo ustawiamy w kontekście modelu prędkość początkową v0=0 (jest to zgodne ze specjalnie przygotowanymi danymi pomiarowymi) oraz przemieszczenie początkowe x0 równe początkowemu przemieszczeniu odczytanemu z pliku pomiar.txt. stawiamy również współczynnik tłumienia c=30 N s/m (wartość zbliżona do otrzymywanych eksperymentalnie podczas ćwiczenia Badanie drgań liniowych o jednym stopniu swobody ) oraz siłę tarcia T0=0. Po zapisaniu i uruchomieniu modelu, a następnie 8
skryptu, otrzymuje się wykres przedstawiony na rysunku 9. Należy pamiętać, że skrypt odczyt_eksp.sce również powinien być wcześniej uruchomiony. Wydruk 2. Program wykres_eksp_sym.sce kreślący dane eksperymentalne i wyniki symulacji na jednym wykresie. clf(1); figure(1); plot(tp,[xp,1000*xs.values]); xlabel("t [s]","fontsize", 3); ylabel("xp,xs [m]","fontsize", 3); legend(['przemieszczenie eksperymentalne xp';'przemieszczenie symulacyjne xs']); Rysunek. 9. Wynik działania skryptu z wydruku 2. Na wydruku 3 przedstawiony jest skrypt uruchomienie_modelu.sce ładujący model wozek.zcos, ustawiający jego parametry oraz automatycznie go uruchamiający. Na koniec zostaje uruchomiony skrypt wykres_eksp_sym.sce (polecenie exec). Wynik działania skryptu nie zmienił się i jest przedstawiony na rysunku 9. Wydruk 3. Skrypt uruchomienie_modelu.sce automatycznie uruchamiający model wozek.zcos oraz skrypt wykres_eksp_sym.sce. // zaladowanie i uruchomienie modelu loadxcoslibs importxcosdiagram('wozek.zcos') Context.c =30; Context.T0 = 0; scicos_simulate(scs_m,context); // uruchomienie skryptu "wykres_eksp_sym" exec('wykres_eksp_sym.sce'); 9
Dalej tworzymy skrypt ident_c.sce dokonujący procesu estymacji parametru c, tj. poszukiwania minimum funkcji celu Fc(c), zdefiniowanej jako średni kwadrat różnicy pomiędzy wynikiem symulacji i przemieszczeniem otrzymanym z pomiaru. Wartość tej funkcji można przyjąć jako liczbowe kryterium dopasowania modelu matematycznego do rzeczywistego obiektu. Do poszukiwania minimum wykorzystujemy wbudowaną funkcję fminsearch używającą metody sympleksów. Należy również odpowiednio zaprogramować funkcję celu. Użyta została funkcja mean obliczająca wartość średnią elementów macierzy jednokolumnowej podanej jako argument. Argumentem tym różnica pomiędzy dwoma macierzami jednokolumnowymi reprezentującymi odpowiednio przemieszczenie zmierzone eksperymentalnie i otrzymane z symulacji, o elementach podniesionych dodatkowo do kwadratu. Nowy skrypt został przedstawiony na wydruku 4. W wyniku działania skryptu zobaczymy wykres przedstawiający spadek aktualnej wartości funkcji celu (rysunek 10) oraz końcowy wykres dopasowania wyników symulacji do danych eksperymentalnych, który nie różni się znacząco od wykresu na rysunku 9 i nie został tu przedstawiony. Wartość funkcji celu jest widoczna na rysunku 10, natomiast końcową wartość współczynnika tłumienia c można odczytać wpisując x w oknie konsoli. W tym przypadku wyniosła ona 28,5 N s/m. Wydruk 4. Program ident_c.sce stanowiący rozszerzenie skryptu z wydruku 2 o identyfikację współczynnika tłumienia c. x =[30] // x(1)=c - wartosc poczatkowa poszukiwanego parametru // załadowanie modelu loadxcoslibs importxcosdiagram("wozek.zcos") // funkcja celu function y=fcf(x) Context.c =x(1); Context.T0 = 0; scicos_simulate(scs_m,context); y = mean((xp-1000*xs.values).^2) endfunction //poszukiwanie minimum funkcji celu opt = optimset ("MaxIter",50,"PlotFcns",optimplotfval );//ustawienia dla funkcji fminsearch x = fminsearch(fcf,x,opt) // uruchomienie modelu dla parametrów optymalnych Context.c =x(1); Context.T0 = 0; scicos_simulate(scs_m,context); // uruchomienie skryptu "wykres_eksp_sym" exec('wykres_eksp_sym.sce'); 10
Rysunek. 10. Wynik działania skryptu ident_c.sce i funkcji fminsearch. 3.2 Nieliniowy model oporów ruchu Dokonujemy modyfikacji skryptu ident_c.sce celem dodania parametru T0 (wartości siły tarcia) do zbioru identyfikowanych wielkości. Nowy skrypt ident_ct.sce został przedstawiony na wydruku 5, natomiast rysunki 11 i 12 przedstawiają wyniki jego działania. Należy zwrócić uwagę na zdecydowanie mniejszą wartość funkcji celu oraz lepsze końcowe dopasowanie wyników symulacji do eksperymentu niż w przypadku modelu liniowego. Otrzymane wartości parametrów to c = 17,63 N s/m i T0 = 1,90 N (można je uzyskać wpisując w oknie konsoli x). Wydruk 5. Program ident_ct.sce stanowiący rozszerzenie skryptu ident_c.sce o identyfikację parametru T 0. x =[ 30 // x(1)=c - wartosc poczatkowa poszukiwanego parametru c 0 // x(2)=t0 - wartosc poczatkowa poszukiwanego parametru T0 ] // załadowanie modelu loadxcoslibs importxcosdiagram("wozek.zcos") // funkcja celu function y=fcf(x) Context.c = x(1); Context.T0 = x(2); scicos_simulate(scs_m,context); y = mean((xp-1000*xs.values).^2) endfunction //poszukiwanie minimum funkcji celu 11
opt = optimset ("MaxIter",50,"PlotFcns",optimplotfval );//ustawienia dla funkcji fminsearch x = fminsearch(fcf, x, opt) // uruchomienie modelu dla parametrów optymalnych Context.c =x(1); Context.T0 = x(2); scicos_simulate(scs_m,context); // uruchomienie skryptu "wykres_eksp_sym" exec('wykres_eksp_sym.sce'); Rysunek. 11. Wynik działania skryptu ident_ct.sce i funkcji fminsearch. Rysunek. 12. Wynik działania skryptu ident_ct.sce. 12
4 Badanie drgań wymuszonych W celu przedstawienia przykładowych wyników drgań wymuszonych dokonujemy modyfikacji programu uruchomienie_modelu.sce w taki sposób, aby rysował on jedynie wyniki symulacji (bez danych eksperymentalnych) oraz umożliwiał ustawienie dodatkowo takich parametrów jak warunki początkowe x0 i v0 oraz częstość wymuszenia ω. Po odpowiednich zmianach nowy skrypt o nazwie drgania_wymuszone.sce jest przedstawiony na wydruku 6. Po dokonaniu zmiany czasu symulacji w modelu na 10 s, wynik działania skryptu przedstawia rysunek 13. Wydruk 6. Skrypt drgania_wymuszone.sce do symulacji drgań wymuszonych. // uruchomienie modelu loadxcoslibs importxcosdiagram("wozek.zcos") Context.c =17.63; Context.T0 = 1.90; Context.x0 = 0.01; Context.v0 = 0.05; Context.omega = 25; scicos_simulate(scs_m,context); // wykres clf(1) figure(1) plot(xs.time,1000*xs.values); xlabel("t [s]","fontsize", 3) ylabel("xs [mm]","fontsize", 3) Rysunek. 13. Wynik działania skryptu z wydruku 6 przedstawiający drgania wymuszone wraz z ruchem przejściowym. 13
5 Wymagania wstępne Przed przystąpieniem do ćwiczenia wymagana jest znajomość zagadnień przedstawionych w rozdziałach 1-4 ze szczególnym uwzględnieniem modelu matematycznego badanego układu i modelowania oporów ruchu (rozdział 1). 6 Przebieg ćwiczenia i sprawozdanie Zadaniem studentów jest zbudowanie przy pomocy prowadzącego modelu symulacyjnego układu drgającego przedstawionego w tej instrukcji, napisanie odpowiednich skryptów, przeprowadzenie symulacji numerycznych i estymacji parametrów modelu na podstawie otrzymanych danych eksperymentalnych oraz przedstawienie uzyskanych wyników na konspekcie sprawozdania. W szczególności należy wykonać kolejne zadania zgodnie z instrukcjami znajdującymi się na szablonie sprawozdania. Literatura 1. J. Awrejcewicz: Mechanika. WNT, Warszawa 2007. 2. Z. Towarek: Mechanika ogólna. Zagadnienia wybrane. Wydawnictwo PŁ, Łódź 2004. 3. Dokumentacja na stronie projektu Scilab: www.scilab.org/resources/documentation.. 14
POLITECHNIKA ŁÓDZKA Katedra Automatyki, Biomechaniki i Mechatroniki Łódź, dnia................ Nr Imię i nazwisko Nr albumu 1 2 3 4 5 6 Nr grupy LABORATORIUM MECHANIKI TECHNICZNEJ II Temat: Modelowanie i symulacje numeryczne układów dynamicznych w programie Scilab 6 Podpis prowadzącego...................
Cel ćwiczenia:. 1. Model matematyczny badanego układu dynamicznego P( t) = P sinωt k 2 k 2 m c x 0 T =... Rysunek. 1. Model fizyczny badanego układu drgającego. Równanie ruchu układu przedstawionego na rysunku 1: dx m dt gdzie: m = 8.98 kg masa całkowita ciała drgającego, k/2 = 3637,5 N/m stała jednej z dwóch sprężyn, c stała tłumienia [N s/m], x przemieszczenie masy (x=0 odpowiada położeniu równowagi) [m], P(t) zewnętrzna siła wymuszająca [N], ω częstość siły wymuszającej [rad/s], P0= mn e ω² [ N ] amplituda siły wymuszającej [N], f0=mn e = 0,0187 kg m, mn- masa niewyważenia, e- promień niewyważenia, T0- wartość siły tarcia, εt = 10-5 [m/s]- parametr modelu siły tarcia. 2
2. Model symulacyjny układu drgającego Zbudować w środowisku scilab/xcos zgodnie z rysunkiem 2 model symulacyjny wozek.zcos układu drgającego przedstawionego w p. 1. Wprowadzić do kontekstu modelu odpowiednie wartości parametrów wraz z warunkami początkowymi x0 i v0 oraz ustawić czas symulacji. Rysunek. 2. Model symulacyjny w środowisku xcos badanego układu drgającego. 3. Badanie drgań swobodnych 3.1 Liniowy model drgań swobodnych z tłumieniem wiskotycznym 1. Napisać skrypt odczyt_eksp.sce odczytujący podany przez prowadzącego plik tekstowy pomiar.txt zawierający dane pomiarowe przemieszczenia dla zanikającego ruchu swobodnego rzeczywistego oscylatora. Uzupełnić skrypt o rysowanie wykresu odczytanych danych. Sprawdzić działanie skryptu. 2. Ustawić w kontekście modelu parametry odpowiadające wartościom podanym w części 1 sprawozdania oraz brakowi wymuszenia (ω=0) i tarcia suchego (T0=0). 3. Ustawić w modelu czas symulacji oraz okres próbkowania danych wysyłanych do przestrzeni roboczej tak, aby uzyskać zgodność danych symulacyjnych i eksperymentalnych. Uruchomić model. 4. Napisać skrypt wykres_eksp_sym.sce kreślący dane symulacyjne i eksperymentalne na jednym wykresie uzupełnionym od odpowiednie etykiety osi i legendy. Sprawdzić działanie modelu i skryptu. 5. Wprowadzić do modelu wozek.zcos zerową wartość prędkości początkowej v0=0 (zgodnie z danymi eksperymentalnymi) oraz odczytać z pliku pomiar.txt początkowe położenie x0=. i wprowadzić odpowiednią wartość do kontekstu modelu. 6. Wprowadzić do modelu wozek.zcos wartość współczynnika tłumienia uzyskaną podczas ćwiczenia Badanie drgań liniowych o jednym stopniu swobody c =.. 7. Dokonać symulacji i uruchomić skrypt wykres_eksp_sym.sce. 8. Przedstawić skrypty odczyt_eksp.sce i wykres_eksp_sym.sce na wydrukach 1 i 2. Przedstawić wynik działania skryptu wykres_eksp_sym.sce na rysunku 2. 3
Wydruk 1. Skrypt odczyt_eksp.sce odczytujący dane pomiarowe z pliku i rysujący wykres. Wydruk 2. Skrypt wykres_eksp_sym.sce kreślący dane pomiarowe i wyniki symylacji. Rysunek 2. Wykres otrzymany przy użyciu skryptu wykres_eksp_sym.sce przedstawiający porównanie danych eksperymentalnych i symulacji dla współczynnika tłumienia c =. 4
9. Napisać skrypt uruchomienie_modelu.sce automatycznie uruchamiający model wozek.zcos oraz skrypt wykres_eksp_sym.sce i umożliwiający modyfikację takich parametrów jak współczynnik tłumienia c i wartość siły tarcia T0. Ustawić odpowiednie wartości parametrów w skrypcie i uruchomić go. Sprawdzić, czy otrzymane wyniki są identyczne z tymi przedstawionymi na rysunku 2. Wydruk 3. Skrypt uruchomienie_modelu.sce automatycznie uruchamiający model wozek.zcos oraz skrypt wykres_eksp_sym.sce. 10. Napisać skrypt ident_c.sce dokonujący procesu estymacji parametru c, tj. poszukiwania minimum funkcji celu Fc(c), zdefiniowanej jako średni kwadrat różnicy pomiędzy wynikiem symulacji i przemieszczeniem otrzymanym z pomiaru. 11. Uruchomić skrypt ident_c.sce, znaleźć optymalną wartość współczynnika tłumienia i odpowiadającą mu wartość funkcji celu oraz przedstawić wykres końcowego dopasowania wyników symulacji do danych eksperymentalnych. Fc =.. c =.. 5
Wydruk 4. Skrypt ident_c.sce dokonujący identyfikacji współczynnika tłumienia c. Rysunek 4. Wykres otrzymany przy użyciu skryptu ident_c.sce przedstawiający porównanie danych eksperymentalnych i symulacji dla współczynnika tłumienia c =. 3.2 Nieliniowy model drgań swobodnych z tłumieniem wiskotycznym i tarciem suchym Stworzyć pod nazwą ident_ct.sce modyfikację skryptu ident_c.sce dokonującą poszukiwania minimum funkcji celu Fc(c,T0) (poszukiwania optymalnej wartości współczynnika tłumienia c i siły tarcia T0). Uruchomić skrypt, znaleźć optymalne wartości parametrów i odpowiadającą im wartość funkcji celu oraz przedstawić wykres końcowego dopasowania wyników symulacji do danych eksperymentalnych. Fc =.. T0 =.. c =.. 6
Wydruk 5. Skrypt ident_ct.sce dokonujący identyfikacji współczynnika tłumienia c siły tarcia T 0. Rysunek 5. Wykres otrzymany przy użyciu skryptu ident_ct.sce przedstawiający porównanie danych eksperymentalnych i symulacji dla parametrów c =. i T0 =. 4. Symulacja drgań wymuszonych 1. Zapisać skrypt uruchamianie_modelu.sce jako drgania_wymuszone.sce i zmodyfikować go tak, aby rysował on jedynie wyniki symulacji (bez danych eksperymentalnych) oraz umożliwiał ustawienie dodatkowo takich parametrów jak warunki początkowe x0 i v0 oraz częstość wymuszenia ω. 2. Ustawić w parametrach modelu czas symulacji na ok. 10 s i dokonać przykładowych symulacji dla wcześniej znalezionych wartości optymalnych parametrów c i T0 oraz różnych wartości warunków początkowych i częstości wymuszenia, pokazując ruch przejściowy oraz ustalony drgań. Przedstawić przykładowe wykresy. 7
Wydruk 6. Skrypt drgania_wymuszone.sce do symulacji drgań wymuszonych. Rysunek 6. Przykład drgań wymuszonych dla x0 =., v0 = i ω =.. Rysunek 7. Przykład drgań wymuszonych dla x0 =., v0 = i ω =.. 8
Rysunek 8. Przykład drgań wymuszonych dla x0 =., v0 = i ω =.. 5. Wnioski 9