Professional Documents
Culture Documents
Matematičko Klatno
Matematičko Klatno
SEMINARSKI RAD
Predmet: Napredno programiranje 1 Tema: Simulacija Matematikog klatna primjenom Matlab-a i EJS-a
SADRAJ
1. UVOD ............................................................................................................................................... - 2 2. OPIS I MATEMATIKI MODEL KLATNA ............................................................................................ - 3 2.1 STVARANJE SIMULINK MODELA .................................................................................................... - 4 3. OPENITO O MATLAB-u i EJS-u ....................................................................................................... - 6 3.1 MATLAB ......................................................................................................................................... - 6 3.2 EJS (Easy Java Simulation) ............................................................................................................. - 7 4. GRAFIKI INTERFEJS MATEMATIKOG KLATNA .............................................................................. - 8 4.1 MATLAB GUI .................................................................................................................................. - 8 4.2 EJS GUI ......................................................................................................................................... - 12 5. ZAKLJUAK ..................................................................................................................................... - 17 6. LITERATURA ................................................................................................................................... - 18 -
-1-
1. UVOD
U ovom seminarskom radu odraena je simulacija matematikog klatna primjenom programskog paketa Matlab-a i EJS-a (Easy java simulations). Simulacija je odraena u oba programska paketa, radi poreenja i efikasnoti samih alata za ureivanje simulacija. Jednostavnost realizacije projekta izgradnje simulacije matematikog klatna bie prikazana detaljno u narednom dijelu rada, kao poreenje ova dva programska alata prikazat e mo prednosti i nedeostatke i jednog i drugog alata.
-2-
Slika 1.1 Prikaz matematikog klatna otklonjenog iz ravnotenog poloaja. Na prvi pogled ova jednaina ne opisuje linearno harmonijsko oscilovanje jer na desnoj strani ne stoji veliina od koje se trai izvod na lijevoj strani jednaine. Meutim, kako smo pretpostavili da je ugao otklona mali, sin se moe aproksimirati sa , tako da jednaina kretanja matematikog klatna postaje :
-3-
Kako ova jednaina ima formu jednaine koja opisuje kretanje linearnog harmonijskog oscilatora, zakljuujemo da se, za male uglove otklona (amplitude), kretanje matematikog klatna, svodi na linearno harmonijsko oscilovanje. U skladu sa tim, rijeenje posljednje diferencijalne jednaine je :
Drugim rijeima, period i frekvencija matematikog klatna zavise jedino od duine klatna i od ubrzanja zemljine tee. Kako je period nezavisan od mase klatna, moe da se zakljui da sva klatna jednake duine, koja osciluju na istom mjestu (isto g), osciluju sa istim periodom.
Slika 2.1 Simulink model matematikog klatna. Objanjenje blokova iz simulinka koji su iskoriteni za simulacija sistema: Step blok - generira korak izmeu dva definisana nivoa za neko odreeno vrijeme.
Gain blok vri mnoenje neke ulazne vrijednosti sa nekom konstantnom vrijednou
To Workspace blok ispisuje izlazne vrijednosti u workspace Matlaba u obliku niza ili strukture
-5-
Pri projektovanju bilo kojeg softwera, morate razumjeti svrhe koje novi GUI treba zadovoljiti.Vi ili potencijalni korisnici GUI-a trebaju dokumentirati zahtijeve korisnika, to prije, nego to se GUI pone izraivati. Postoji mnogo naina za pokretanje GUI-a.Moete pokrenuti GUI iz: iz komandne linije tako da upiete GUIDE iz Start izbornika odabriom MATLAB>GUIDE (GUI Builder) iz MATLAB File (izbornika) odabirom New > GUI iz MATLAB alatne trake klikom na gump GUIDE
-6-
-7-
Slika 4.1 Poetni prozor aplikacije matematiko klatno. Kao to vidimo na slici se nalaze tri panela, od kojih su dva panela za predstavljanje podataka, a jedan panel je u svhru odreivanja ulaznih varijabli sistema. Na prvom panelu koji se nalazi u gornjem lijevom uglu se nalazi slika za simulaciju rada samog klatna. U pocetnim uslovima ona miruje, ali ukoliko ugao otklona klatna bude veci simlacija e poceti sa radom. Na panelu ispod se nalazi skup slider-a koji slue za postavljanje ulaznih varijabli. Osnovne promjenjive kod klatna su masa, gravitacija, duzina ueta i ugao otklona. Poto je rije o lineranom matematikom klatnu nismo uzeli u obzir trenje ueta pa tako ovakva simulacija je harmonijska. Kada postavimo parametre i obiljeimo prikaz dijagrama potrebno je da kliknemo da gumb START. Nakon ovoga simlulacija klatna e poeti da se izvrava, a na desnom panelu e se pokazati dijagrami kretanja klatna i energije. Zbog problema procesnog programiranja kao to je i sam Matlab nije bilo u mogunosti izvriti dvije simulacije istovremeno pa je iz toga razloga simulacija kretanja dijagrama izostavljena.Ovo je bilo mogue uiniti samo zato to je klatno linerano pa je dijagram kretanja klatna i energije periodian.
-8-
Na sljedeoj slici e mo prikazati kako izgleda naa aplikacija kada joj se zadaju parametri :
Slika 4.2 Prikaz aplikacije sa zadanim parametrima. Takoer je vano napomenuti da sama aplikacija je uzrono posljedina tj. Kada pmjerimo samo jedan parametar na prozoru se pokazuju automatske promjene simulacije. Ovo je bitno iz toga razloga da za svake podeene parametre nemoramo stisnuti gumb Start. Pritiskom na Gumb Stop simulacija se zaustavlja a dijagrami kretanja i energije se ponitavaju. A sada da pogledamo ta se krije u pozadini ove simulacije.Sama aplikacija je sainjena od glavnog m file-a i tri pomona funkcijska fajla. Prvi funkcijski i najbitniji file-j je onaj za simulaciju kretanja klatna. Sada pogledajmo sami kod tog file-a :
function [ ] = simKlatno(g,endTime,mass,radius,theta,rodLength,slika) deltaTime = 1/50; %Vrijeme promjene slike na dijagramu %Postavke promjenjivih rodPivotPoint = [2 2]; %koordinate klatna velocity = [0 0]; %% Simulacija assert(radius < rodLength); position = rodPivotPoint - (rodLength*[-sind(theta) cosd(theta)]); %pozicija klatna %Postavljanje grafa axes(slika); xlim(slika, [(rodPivotPoint(1) - rodLength - radius) (rodPivotPoint(1) + rodLength + radius)] ); ylim(slika, [(rodPivotPoint(2) - rodLength - radius) (rodPivotPoint(2) + rodLength + radius)] );
-9-
rectHandle = rectangle('Position',[(position - radius/2) radius radius],... 'Curvature',[1,1],'FaceColor','g'); %kugla klatna hold on plot(rodPivotPoint(1),rodPivotPoint(2),'^'); %pivot lineHandle = line([rodPivotPoint(1) position(1)],... [rodPivotPoint(2) position(2)]); % hold off grid on %Kreiranje same simulacije for time = (deltaTime:deltaTime:endTime) drawnow; %Ukupna gravitaciona sila gravitationalForceCylindrical = [mass*g*cosd(theta) mass*g*sind(theta)]; %u sluaju da postoji trenje ueeta totalForce = gravitationalForceCylindrical; rodForce = [-totalForce(1) 0]; %cylindrical coordinates totalForce = totalForce + rodForce; acceleration = totalForce / mass; %F = ma velocity = velocity + acceleration * deltaTime; rodLength = rodLength + velocity(1) * deltaTime; theta = theta + velocity(2) * deltaTime; position = rodPivotPoint - (rodLength*[-sind(theta) cosd(theta)]); %Update grafa sa novom pozicijom set(rectHandle,'Position',[(position - radius/2) radius radius]); set(lineHandle,'XData',[rodPivotPoint(1) position(1)],'YData',... [rodPivotPoint(2) position(2)]); End %Kraj for petlje za simulaciju end %kraj funkcijskog fajla.
Pored ovog funkcijkog fajla takoer se nalaze jo dva, ato su funkcija za dijagram kretanja i dijagram energije. Oni su po dosta slini zato e mo prikazati samo dijagram simulacije energije i objasniti logiku samog koda :
function [ ] = energija(teta,m,G,d,obj_graf) axes(obj_graf); ugao=0:0.025:teta; y=m*G*d*sin(ugao); plot(ugao,y,'r.'); xlabel('X-osa'); ylabel('Y-osa'); hold on grid on y1=m*G*d*sin(ugao+(pi/2)); plot(ugao,y1,'g.'); legend('Potencijalna','Kineticka'); hold on grid on end
Sama funkcija ima svoje ulazne varijable koje su joj potrebne za rad.Prvo i najvanije je postavljanje objekta upravljanja grafa na sami plot. Zatim smo odredili kretanje ugla i prikazali izlaznu formulu za uparvljanje energije. Vidimo da je ovaj dijagram sastavljen od dvije slike koje su postavljene na zajedniki plot. Takoer smo malo ukrasili sami dijagram postavljajui oznake promjenjivih i mree.
- 10 -
Jedna od najvanijih metoda kod objektnog upravljanja u Matlabu je metoda Callback preko koje se stvara akcija na samoj aplikaciji. Ova metoda je slina kod gotvo sve jednog parametra a sastoji se od toga da se uzmu vrijednosti parametara, ispitaju uslovi a zatim se proslijede samim funkcijama za cratanje grfova i klatna. Najjednostavnije za prikazati je callback metoda za gumb start.Ona e biti prikaza u narednom dijelu koda :
function start_Callback(hObject, eventdata, handles) % hObject handle to start (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) teta=get(handles.ugao,'Value'); uslov=get(handles.c1,'Value'); uslov1=get(handles.c2,'Value'); if (teta > 0) cla(handles.kretanje_klatna,'reset'); cla(handles.axes8,'reset'); cla(handles.axes5,'reset'); G=get(handles.gravitacija,'Value'); m=get(handles.masa,'Value'); d=get(handles.duzina,'Value'); T =1000; r = m * 0.1; if (uslov) brzina(teta,d,G,handles.axes5); else cla(handles.axes5,'reset'); end if (uslov1) energija(teta,m,G,d,handles.axes8); else cla(handles.axes8,'reset'); end simKlatno(-G,T,m,r,teta,d,(handles.kretanje_klatna)); guidata(hObject, handles); else msgbox('Postavite ugao veci od nule','Obavjestenje','warn'); end
Ovdje je vano napomenuti da nije mogue zapoeti simulaciju ukoliko ugao otklona nije vei od nule. Takoer potrebno je resetovati prethodne dijagrame da bi na njih postavili nove. Potrebno je uzeti vrijednosti parametara pomou metode : get (handles.objekat_upravljanja,'Value').Takoer je vano napomenuti da u ovoj funkciji za start simulacije se nalaze dva uslova u kojima se ispituje da li su chekirani boxovi za simulaciju dijagrama kretanje i energije. U koliko je odovor taan oni e biti prikaza pomou svojih funkcija koje smo pojasnili u prethodnom koraku.Svaki od parametara imaju svoje poetne uvijete bez kojih simulacija ne bih bila mogua a ni samo pokretanje aplikacije nebih bilo izvodljivo.
- 11 -
- 12 -
EJS je sastavljen od tri dijela, i svaki je poseban na svoj nain. Taskbar omoguuje niz ikona koje slue za brisanje, otvaranje, pretraivanje, spremanje podataka, konfiguriranje EJS-a, informacije i pomo oko EJS-a, to je vrlo korisno. Desnim klikom na neku od ikonica otvara se prozor s moguim alternativnim, ali povezanim akcijama. Donji dio suelja sadri prostor za izlazne poruke koje program tijekom modeliranja izbacuje. Centralni dio suelja sadri radne panele gdje se vri modeliranje. EJS omoguuje tri radna panela za modeliranje. Prvi panel naziva Description, omoguava korisniku stvaranje i editiranje opisa modela baziranog na HTML skripti (npr. neki zadatak za uenike, opis problema, jednadbe gibanja, itd.). Drugi panel naziva Model, posveen je procesu modeliranja. Ovaj model se koristi za stvaranje varijabli koje opisuju model, poetnih uvjeta tih varijabli i upis algoritama koji opisuju kako se model mijenja u vremenu. Trei panel, naziva View, posveen je zadatku graenja grafikog suelja te omoguuje korisniku da kontrolira simulaciju i grafiki je prikazuje. Izabirom elemenata s palete i dodavanjem na Tree of elements, koji se nalazi unutar panela View, gradi se grafiko suelje. Paleta sadri gumbe, klizae, itd... Na sljedeoj slici prikazati e mo koje su to sve ulazne varijable koje je potrebno definisati kod ove simulacije :
- 13 -
Vano je tano postaviti poetne uvjete kada implementiramo model poto model mora poeti u fiziki moguem stanju. Ovaj model je relativno jednostavan pa incijalizaciju modela radimo uvrtavajui vrijednosti (ili u nekim ostalim primjerima jednostavne Java izraze poput izraza za kinetiku energiju 0.5*m*vx*vx) u Initial value kolonu. U modelu klatna potrebno je definirati pocetni ugao kugle. EJS suelje uglove rauna u radijanima pa ukoliko elimo mijenjati uglove u stupnjevima potrebno je napisati algoritam za pretvorbu radijana u stupnjeve .Takoer je potrebno definirati brzine vx i vy u ovisnosti o uglu. EJS koristi ove vrijednosti kada pokree simulaciju. Neki napredniji modeli mogu zahtijevati kompliciranije algoritme za incijalizaciju. Panel naziva Evolution omoguuje zapis Java koda koji defnira kako kuglica u gravitacijskom polju evoluira u vremenu i ova opcija se esto koristi na modelima koji nisu bazirani na obinim diferencijalnim jednadbama (ODE-ordinary differential equation). Tu je i druga opcija koja nam omoguuje upis ODE bez programiranja. EJS prua mogunost da preko editora definiramo diferencijalne jednadbe u obliku koji odgovara matematikoj notaciji. EJS tada automatski generira tani Java kod. Sada emo vidjeti kako taj editor funkcionira na ovom modelu. Zbog toga to ODE algoritmi rijeavaju sisteme diferencijalnih jednadba prvog reda, jednadbe viih redova moraju biti napisane u obliku jednadbi prvog reda. To se moe uiniti tako da brzinu definiramo kao neovisnu varijablu koja odgovara svojoj jednadbi.
- 14 -
Iako bismo Evolution panel mogli nazvati srcem programa, ne raunaju se sve varijable modela ovdje. Varijable se mogu raunati i poslije evolucije. Koristei varijable koje su izraunate evolution algoritmom, mogue je odrediti tzv. vanjske varijable. Trei radni panel u EJS-u je panel naziva View (izgled). Ovaj panel omoguava stvaranje grafikog suelja koje sadri vizualizaciju same simulacije, interakciju korisnika i kontrolu programa s minimalnim programiranjem. Slika 4.6. prikazuje izgled modela klatna. Desni okvir panela prikazan na slici 4.6. sadri kolekciju elemenata koji nam slue za stvaranje grafikog suelja. Svaki od tih elemenata je specijalizirani objekt s on-screen prezentacijom. Da bi dobili informacije o pojedinom elementu, potrebno je kliknuti na ikonu i stisnuti F1 ili desnim klikom odabrati Help meni. Pri izradi korisnikog suelja, radi se okvir i dodaju se elementi (npr. gumbi i grafovi) na drag and drop nain. Lijevi okvir Tree of elements (stablo elemenata), takoer prikazan na slici 4.6., prikazuje strukturu suelja ovog modela. U ovom primjeru stablo elemenata sadri prozor, glavni okvir, koji sadri sve elemente od kojih je napravljeno suelje. Stablo prikazuje njihova imena koja opisuju njihovu namjenu. Desnim klikom na pojedini element otvara se Meni u kojem postoji mogunost mijenjanja strukture pojedinog elementa. Svaki element ima set vlastitih parametara naziva properties koji nam omoguuju ureivanje prikazivanja i ponaanja elementa. Dvostrukim klikom na element u stablu, otvara se tzv. properties inspector. Tu su karakteristike, kao npr. boja, obino namjetene na konstantnu vrijednost (npr. RED (crvena)). Varijable iz modela se takoer mogu koristiti za postavljanje osobina elemenata. Mogunost spajanja varijable i osobina, bez potrebe za programiranjem, klju je za pretvaranje
- 15 -
Potrebno je sada povezati varijable i incijalizacije sa varijablama koje se nalaze na panelu, a to e mo uiniti tako to e za svaki element pronai odgovarajuu varijablu iz incijalizacije i uvrstiti ti je u njegov property. Iz ovog primjera vidi se kako je Easy Java Simulation doista moan alat koji nam doputa da iskoristimo znanje o nekom modelu. Postoji ve mnogo napravljenih modela koji su kompleksniji - kako fizikalno tako i vizualno. Da bismo mogli pokrenuti simulaciju moramo kliknuti zelenu ikonu Run. Kada kliknemo ikonu, varijable se iniciraju i u mogunosti smo pokrenuti simulaciju. Kada kliknemo na ikonu, ikona mijenja boju u crvenu i to oznaava da je simulacija spremna za pokretanje. Sve dok ikona svijetli nismo u mogunosti mijenjati varijable i ostale opcije u EJS-u. Za zaustavljanje simulaciju kliknite desnim gumbom mia na ikonu i stisnite Kill current simulation.
- 16 -
5. ZAKLJUAK
Kroz ovaj seminarski rad smo vidjeli da je Matlab jako moan programski paket, koji sadri mnogo funkcija i dodataka koji omoguuju simulaciju bilo kojeg sistema koji se moe matematiki opisati, kao i kreiranje korisnikog interfejsa, tj. GUI-a za korisnike koji ne moraju ni da poznaju ovaj programski paket. Takoer smo se upoznali sa novim okruenjem za kreiranje simulacije koje nam dosta povoljnije i bre slui za izradu naih aplikacija, a bazirano je na Javi. Rad u EJS-u ne zahtjeva programerske vjetine te omoguava studentima da veinu vremena posvete znanosti i problemima vezanim uz modele. Problem kod ovog programa je to to je za neke kompliciranije simulacije nuno poznavati skriptu, tj. napisati dobre naredbe, jer u protivnom nije mogue napraviti dobre modele.
- 17 -
6. LITERATURA
[1] Introduction to Simulink with Engineering Applications, Steven T. Karris [2] Graphics and GUIs with MATLAB - Patrick Marchand and O. Thomas Holland [3] www.mathworks.com [4] http://www.modelbenders.com/encyclopedia/encyclopedia.html [5] http://www.um.es/fem/EjsWiki/ [6] http://en.wikipedia.org/wiki/Simulation [7] Rudolf Krsnik, Fizika 1
- 18 -