Карачун В.В., Мельник В.М.

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

Обчислення перехідного процесу збуреного стану струни за неявною схемою

Відомий факт, що явна схема, яка розглянута в процедурі Stept, є стійкою за умови

 .                                    (1)

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

Добру неявну схему можна одержати заміною в диференціальному рівнянні похідних різницевими співвідношеннями -

        (2)

де  - умова стійкості неявної схеми.

Для зручності подальших перетворень, наведемо (2) у вигляді -

 ;    ,,          (3)

де

Залежності (3) утворюють систему з (m-1) рівнянь відносно (m+1) невідомих, ., . Якщо цю систему доповнити двома граничними умовами, то вона може бути розв’язана відносно невідомих  . Подібну систему раціонально розвязувати методом прогонки, який, по суті, реалізує схему Гауса послідовного виключення невідомих. У процесі виконання прямого ходу в методі прогонки зведемо рівняння (3) до вигляду -

,                           (4)

Щоб знайти рекурентні формули для обчислення   і  , досить підставити (4) в (3) замість.  Отримуємо -

,    .

Після зведення подібних і ділення на коефіцієнт при   маємо

.                 (5)

Порівняння (4) і (5) виявляє, що -

                                (6)

де .

Формули (6) спрацьовують за умови, коли визначені  та  граничними умовами на лівому кінці струни (якщо  ).

При граничній умові I роду при  , бачимо, що

                                  (7)

Гранична умова II роду при   дає аналогічно

                 (8)

Це справедливо, якщо маса   в момент, що розглядається, не знаходиться в точці . Інакше -

         (9)

За граничної умови III роду отримуємо (при відсутності маси   в точці  ):

                         (10)

Якщо ж маса  знаходиться на лівому кінці, тоді маємо -

Визначивши  та , можна починати прямий хід, тобто послідовно обчислювати , ,,  і так далі, поки не буде досягнута точка ,  де  , за умови, що  .

Для вузла  повинна виконуватися вимога -

              (11)

У дискретних змінних -

Замінимо в останньому співвідношенні  його значенням, обчисленим через (4) -

Зведемо подібні:

Розділимо на квадратну дужку -

,             (12)

де ; ;

Порівнюючи (12) із (4), робимо висновок, що

                                            (13)

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

Завершуючи прямий хід, визначимо, стикуючи останній крок прямого ходу, тобто -

              (14)

з відповідною граничною умовою на правому кінці (при  ).

При граничній умові I роду

,                     (15)

і додаткове стикування не потрібно.

За граничної умови II роду і відсутності маси  в точці , одержуємо:

Порівнюючи останній вираз з (14), доходимо висновку -

 

звідки

                         (16)

При знаходженні маси   в точці  маємо -

Зіставляємо останній вираз з (14), бачимо -

звідки

               (17)

При граничній умові III роду і відсутності маси  в точці , отримуємо –

Порівнюємо цей вираз з (14) :

 

звідкіля маємо -

.                 (18)

І, нарешті, при знаходженні маси   в точці  , з маємо:

Зіставляємо останній вираз з (14) -

 

звідкіля -

.              (19)

Співвідношення (6)…(19) покладені в основу підпрограми StepN, що реалізує крок за часом для неявної схеми.

Procedure StepN;

 Var s:integer;

        А, В, Y:CoefR; FS, ZS:real;

Begin

 Т:= Т+Tau; n:=round(Xg(Т)/Hx);

case Ngl of

1: begin     А[0]:=0; В[0]:=Yl(Т)  End;

2: if n<>0 then

                           begin

                           А[0]:=1/D0; 

                          В[0]:=D1*Fl(Т)+D2*(2*Yt[0]-Yp[0])

                         end

                  else

                          begin

А[0]:=1/D3;

В[0]:=D4*(Fl(Т)+Fg(Т))+D5*(2* *Yt[0]-Yp[0])

                          end;

3: if n<>0 then

begin

А[0]:=1/D7; В[0]:=D8*Ylk(Т)+

D9*(2*Yt[0]-Yp[0])

end

else

begin

А[0]:=1/D11; В[0]:=D12*Ylk(Т)+

D13*Fg(Т)+D14*(2*Yt[0]-Yp[0])

end

end;

For s:=1 to m-1 do

if s<>n  then

begin

Fs:=Fn*(yt[s-1]+yt[s+1])+Cn*yt[s]+Bn*(yp[s-1]+ yp[s+1])-Dn*yp[s]+Tau2 *Fxt(S*Hx, T1);

Zs:=Dn-Bn*А[s-1]; А[s]:=Bn/Zs;

В[s]:=(Fs+Bn*В[s-1])/Zs

end

else

begin

Fs:=(Mg+Mh)/Tau2+Ts/Hs*(2-A[n-1]);

А[n]:=Ts/(Hx*Fs);

В[n]:=((Mg+Mh)/Tau2*(2*Yt[n]-(Yp[n])+Mh* Fxt*(n*Hx, Т)+Fg(Т)+Ts/Hx*b[n-1])/Fs

end;

case Ngr of

1: Y[m]:=Yr(Т);

2: if n<m then

Y[m]:=((D15-1)*(2*Yt[m]Yp[m])+

   Hx/ Ts*Fr(Т)+В[m-1]/(D15-A[m-1]);

else

Y[m]:=((D18-1)*(2*Yt[m]Yp[m])+Hx/Ts*(Fr(Т)+

  Fg(Т))+В[m-1]/(D18- А[m-1]);

3: if n<m  then

Y[m]:=(D22*(2*Yt[m]-)(Yp[m])+D21*Yrk(Т)+

      В[m-1])/(D23-A[m-1])

else

Y[m]:=(D21*Yrk(Т)+Hx/Ts*Fg(Т)+D26*(2*Yt[m]-Yp[m])+В[m-1])/(D27-A[m-1])

end;

For s:=m-1 downto 0 do

Y[s]:=А[s]*Y[s+1]+В[s];

 Y[- 1]:=m;

Yp:=Yt;

 Yt:=Y

End;