Page 128 - 363_
P. 128

129




             dy
                1
                    y  ; 2
              dt
             dy
                2
                     mgl   n  sin(   t    ) cos(y  ) 1   R  y   2 mgl  1 n  sin(   t    )  sin y  1  ./ J
              dt               mx              x                                my              y

                   Порівнюючи  одержану  систему  із  загальною  формою  рівнянь  Коші,

            можна зробити висновок, що:
                 z l = y 2;

                z 2 = (– mgln mxsin(t +  x)cos(y l) – Ry 2 – mgl[1 + n mуsin(t +  у)] sin(y l) )/ J

                   Саме обчислення цих двох функцій і повинно відбуватися у процедурі
            правих частин. Назвемо майбутню процедуру fm0. Вихідною змінною в ній

            буде вектор:

                                                     z = [zl z2],
            а вхідними – момент часу t та вектор:

                                                      У = [yl y2].

                   Деякою складністю є те, що сталі коефіцієнти, які є у правих частинах,
            не  можна  передавати  у  процедуру  через  її  заголовок.  Тому  об'єднаємо  їх  у

            вектор коефіцієнтів
                                      k = [J, R, mgl, nmy, nmx, om, ey, ex]

            і віднесемо цей вектор до категорії глобальних – global K.

                   Тоді М-файл матиме такий вигляд:
                   functionz = FM0(t, y);
                   %    Процедура правих частин рівняння Фізичного Маятника.
                   %  Здійснює  розрахунок  вектора  “z”-похідних  від  вектора  “у”  змінних
                        %    стану за формулами:
                   %               z(l)=y(2);
                   %               z(2)=(-mgl*nmx*sin(om*t+ex)*cos(y(l))-R*y(2)-...
                   %              mgl*(l+nmy*sin(om*t+ey))*sin(y(l)))/J,
                   %    Коефіцієнти передаються у процедуру через глобальний  вектор
                   %                K=[J, R, mgl, nmy, nmx, om, ey, ex|
                           global K
                           z(l) = y(2);
                           z(2) = (-K(3)*K(5)*sin(K(6)*t+K(8))*cos(y(l)) - K(2)*y(2) -...
                                      K(3)*(l+K(4)*sin(K(6)*t+K(7)))*sin(y(l)))/K(1);
                   %    Кінець процедури FM0
                   При  використанні  цієї  процедури  слід  пам'ятати,  що  у  тексті

            програми попередньо має бути визначений вектор K із 8 елементів, і потім він

            має бути перетворений на глобальний за допомогою службового слова global.
                   Цю  ж  процедуру  можна  дещо  ускладнити,  групуючи  разом  обчислення

            усіх зовнішніх моментів сил, окрім моменту сил тяжіння, і, оформлюючи їх як
   123   124   125   126   127   128   129   130   131   132   133