Карачун В.В., Мельник В.М., Лозовик Т.М.

Національний технічний університет України «КПІ»

ВИЗНАЧЕННЯ ЧАСТОТНИХ ХАРАКТЕРИСТИК ОБ'ЄКТУ

 

Розв’язання багатьох технічних задач вимагає визначення частотних характеристик об'єкта, що досліджується. Припустимо, що, математична модель об'єкта задана у вигляді системи  звичайних диференціальних рівнянь 1-го порядку

                  (1)

де  - виходи, ( ),  - входи ( ) об'єкта, записані в прирістах відносно їх значень в сталому режимі, прийнятому за базовий.

Щоб перейти від моделі (1) до частотних характеристик потрібного каналу об'єкта, звичайно, спочатку визначають відповідну передаточну функцію, в якій виконують заміну параметра  на , внаслідок чого одержують амплітудно-фазову характеристику.

Отримання передаточної функції і подальше обчислення частотних характеристик, як правило, передбачають використання комп'ютера. В той же час, можна запропонувати прямий метод визначення частотних характеристик потрібного каналу безпосередньо з системи (1).

Припустимо, що з усіх можливих входів    ненульовий приріст отримує тільки один, а саме . Виконаємо перетворення Лапласа над (1) за нульових початкових умов і поділимо всі члени рівняння на зображення за Лапласом від .  Матимемо -

,                    (2)

де  - передаточна функція каналу   в об'єкті, що досліджується.

Замінюючи  на , де -уявна одиниця , -кругова частота, переходимо до амплітудно-фазових характеристик.

Позначимо

.

За цих умов, вираз (2) набуває вигляду -

.                    (3)

Кожне з рівнянь системи (3) розпадається на два незалежних (для дійсних і уявних частин). Запишемо їх для  z-го рівняння системи (3):

                                       (4)

Як наслідок, отримаємо систему 2n  рівнянь відносно 2n  невідомих . Розташуємо невідомі в такому порядку: , і спочатку поставимо рівняння для дійсних частин, а вже потім  для уявних. Тоді розширена матриця   системи рівнянь набуде вигляду –

 

1

2

...

n

n+1

n+2

...

2n

2n+1

1

...

0

...

0

2

...

0

...

0

...

...

...

...

...

...

...

...

...

...

n

...

0

0

...

n+1

0

...

0

...

0

n+2

0

...

0

...

0

...

...

...

...

...

...

...

...

...

...

2n

0

0

...

...

0

 

R1

R2

Rn

I1

I2

I3

In

 

Під матрицею Ms показані невідомі, які після розв’язання системи рівнянь будуть розміщуватися в масиві такої структури –

 

-1

0

1

2

...

n

n+1

n+2

n+3

...

2n

X

2n

-

...

...

Формування масиву X  будемо виконувати з використанням процедури SystUr, що реалізує схему Гауса розв’язання системи лінійних алгебраїчних рівнянь.

Procedure SystUr (N:integer; Ms:Matr; var X:Coef);

const Eps=1e-9;

var Zmax, Z, S, i:integer;    Amax, В:real;  R:boolean;

begin

  R:=true;

  if N=1    then if abs(А[1,1])<Eps

       then R:=false

       else X[1]:=А[1,2]/А[1,1]

   else

    begin

      i:=1;

      while (i<=N-1) and R do

       begin

        Amax:=abs(А[i, i]);    

        Zmax:=i;

        for Z:=i+1 to N do

         if abs(А[Z, i])>Amax  then

           begin      Amax:=abs(А[Z, i]);   

                           Zmax:=Z    end;

         if Amax<=1e-9  then R:=false

else

            begin

             if Zmax>i then

               for S:=i to N+1 do

                begin    B:=А[i, S]; 

                  А[i, S]:=А[Zmax, S];

                   А[Zmax, S]:=B

     end;

               for Z:=i+1 to N do

               if abs(А[Z, i])>Eps then

                begin

                  B:=А[Z, i]/А[i, i];

                  for S:=i+1 to N+1 do

                          А[Z, S]:=А[Z, S]-B*А[i, S]

                end

            end;

           inc(i)

       end;

      if R then if abs(А[N, N])<Eps then R:=false;

      if R then

       begin

         X[N]:=А[N, N+1]/А[N, N];

         for i:=N-1 downto 1 do

          begin

           B:=0;

           for S:=i+1 to N do

             B:=B+А[i, S]*X[S];

              X[i]:=(А[i, N+1]-B)/А[i, i]

          end

       end

    end;

  if R then X[- 1]:=N

    else X[-1]:=0

end;

Описаний вище алгоритм обчислення частотних характеристик наведемо у вигляді підпрограми UrGod, яка буде користуватися глобальними масивами А, В, що містять коефіцієнти системи (1).

Procedure UrGod;

var Z, S:integer;

  Ms:Matr;

  R;Coef;

begin

  for Z:=1 to n do

   begin

    for S:=1 to n do

     begin

       Ms[Z, S]:=А[Z, S];  

       Ms[Z+n, S+n]:=А[Z, S];

       if S=Z

        then

         begin

           Ms[Z, S+n]:=W;  

           Ms[Z+n, S]:=- W

         end

        else

         begin

           Ms[Z, S+n]:=0; 

           Ms[Z+n, S]:=0

         end

     end;

    Ms[Z, 2n+1]:=- В[Z, Nx];

    Ms[Z+n, 2n+1]:=0

   end;

  Systur(2*n, Ms, R);  X:=R[Ny];  Y:=R[Ny+n]

end;

За необхідності відтворення на екрані комп'ютера зображення годографа амплітудно-фазової характеристики каналу, що розглядається, можна запропонувати процедури SZ, PointGod, Godo.

Приведемо їх лістинги.

Procedure SZ;{перетворює значення дійсно-частотної Х і уявно-частотної Y характеристик для частоти w , що розглядається, в екранні координати S і Z відповідного пікселя годографа амплітудно-фазової характеристики}

begin

  UrGod;

  S:=X0+round(X/Dx);

  Z:=Y0-round(Y/Dy)

end;

Тут  X0, Y0 - екранні координати пікселя, куди проектується початок координат комплексної площини, Dx, Dy  коефіцієнти масштабу вздовж дійсної (горизонтальної) і уявної (вертикальної) осей, тобто ціна 1 пікселя по горизонталі і вертикалі.

Procedure PoinGod;  { малює черговий піксель годографа амплітудно-фазової характеристики}

const Kw=1.2;

var  Md, Mdx, Mdy, Sp, Zp:integer;

   Wp:real;

begin

  Sp:=S;  Zp:=Z;

   repeat

   Wp:=W;  W:=W+Dw;  W1:=W;

   SZ;   Mdx:=abs(S-Sp); 

   Mdy:=abs(Z-Zp);

   if Mdx>Mdy then Md:=Mdx

        else Md:=Mdy;

   if Md<>1 then

    begin

     W:=Wp;

     if Md>1 then Dw:=Dw/Md

         else Dw:=Dw*Kw

    end

  until (Md=1) or (W1>Wk);

  if Md=1 then PutPixel(S, Z, С)

end;

Тут Kw  настроювальний параметр. Він коригує (у бік збільшення) крок Dw по частоті W, якщо попереднє значення кроку не забезпечує перехід до чергового пікселя зображення годографа. Wk - верхня межа діапазону частот, що задається користувачем при формуванні годографа (теоретично частотні характеристики можна розглядати в діапазоні частот від 0 до , але  пропонувати комп'ютеру не можна).

Procedure Godo;{формує зображення годографа на екрані комп'ютера в заданій системі координат}

const Nw=50;

begin

  W:=Wn; 

Dw:=(Wk-Wn)/ Nw;

  SZ; 

PutPixel(S, Z, С);

  repeat

   PointGod

  until W1>Wk

end;

 

Тут Wn - початкове значення частоти (нижня межа діапазону частот), Nw  настроювальний параметр, він визначає початкове значення кроку Dw (надалі крок коригується процедурою PointGod).

Характерною рисою розглянутого алгоритму слід вважати той факт, що зображення годографа на екрані формується попіксельно, тобто піксель за пікселем, чим гарантується, з одного боку, гранична акуратність, точність і неперервність зображення, з іншого боку, кожний піксель годографа зафарбовується тільки один раз. Остання обставина дозволяє реалізувати за необхідності інвертування кольору пікселів фону під годографом. Ця процедурадуже зручна, за умови, коли доводиться «приміряти» годограф до зображення, що вже є на екрані.