Utworzymy funkcję MATLAB ’a w której zdefiniujemy kolejni |hh hodne (np. pod nazwąxdot); powstanie M-plik, który zapiszemy pod nazwą własną, np. linfun.m
function xdot=linfun(t,x,u,flag)
A=1; B=l; E=l; pp=2; mk=0; mk=0.5; pp=2;n=14;
% xxx dla segmentów środkowych xxxxx for i=2:n-1
mg(i)=x(n+i)-x(n+i+l) ; xdot(n+i)=A*(x(i-l)-x(i)-B*x(n+i) ) ; xdot(i)=E*mg(i); end
% xxx dla segmentu 1-go xxxxx mg(1)=x(n+1)-x(n+2); xdot(n+1)= A*(pp-x(1)-B*x(n+1)); xdot(1)= E*mg(1);
% xxx dla segmentu n-tego xxxx mg(n)= x(n+n)-mk;
xdot(n+n)=A*(x(n-l)-x(n)-B*x(n+n)); xdot(n)=E*mg(n);
Powyższy plik jest uproszczoną S-funkcją w tym sensie, że nie wprowadziliśmy zmiennej flag.
Krok 2: polecimy wykonanie całkowania zmiennych xdot (zdefiniowanych w funkcji linfun za pomocą jednej z kilku funkcji MATLAB’a, np. ode23. Syntaktyka tej funkcji jest następująca: [t,x]=ode23(’naz_pliku\ tO, tk, x0, tol)
gdzie t jest wektorem czasu i x macierzą wyników, naz_pliku jest nazwą pliku w którym zapisane sa równania różniczkowe, tO i tk jest przedziałem czasu całkowania, x0 jest wektorem stanów początkowych, tol jest dopuszczalnym błędem całkowania (standardowo jest ustawiony le-3). Uprzednio należy jednak wprowadzić wartości parametrów, które nie zostały zadeklarowane w pliku uruchomieniowym, w naszym przypadku są to wartości zmiennych pp i mk.
Krok 3: Oglądanie wyników, np. graficznie za pomocą polecenia plot(t,x) lub mesh(x). Można też utworzyć odpowiedni plik
uruchomlui|IOWy w postaci scripfu, na przykład następującego:
script uruchomieniowy symulacji linii dług. pneumat.
% wcześniej wprowadzić wartość n 10=0; tk=30; „ n . . . „ . .
h=input (1 Jaka liczba segmentów linii • )#
for i=l:n x 0 (i) = 1; x0(i+n)=0; end
[t, x]=ode23(’linfun',tO,tk,x0) ;
2=x(:,1:n);
ta=[60,30], mesh(z,m), grid
ylabel ( ' czas [s]'), xlabel ( nr segmentu ) , zlabel('ciśnienie [bar]')
Powyższemu plikowi nadajemy nazwę własną, np. linscr.m („scenami dla linii”), staje się M-plikiem MATLAB’a i jest zapisem scenariuszu eksperymentu symulacyjnego. Można go uruchomić poleceniem:
» linscr R * ' •
9S5S S3ŁS5*.—— ’ •
funkcji czasu, pp -2, mk 0.5