“Диференційні рівняння як основа математичного опису енергетичної системи.Експертна система контролю працездатності енергетичної системи.”
Зміст:
1.1Вихідні данні для реалізації системи звичайних диференційних рівнянь.
1.2. Математична основа засобу Рунге – Кутта.
1.3. Блок схема програми.
1.4. Реалізація програми за засобом Рунге – Кутта.
1.5. Результати реалізації системи диференційних рівнянь за засобом Рунге – Кутта.
1.6. Графічне представлення результатів за засобом Рунге – Кутта.
1.7.Математична основа способу Мілна
1.8.Блок-схема реалізації головного модуля, програми та графічної частини зазасобом Мілна
1.9. Реалізація програми за способом Мілна
1.10.Результати реалізації програми за способом Мілна
1.11. Графічне представлення результатів за способом Мілна
1.12.Висновок по першій частині
2. Реалізація контролю працездатності енергетичної системи
2.1. Архітектура експертних систем
2.2. Математичне моделювання енергетичної систем
2.3. Логічне моделювання контролю працездатності
2.4. Початкові дані для реалізації контролю працездатності енергетичної системи
2.5. Алгоритм реалізації контролю працездатності
2.6. Реалізація контролю працездатності енергетичної системи
2.7.Графічне представлення результатів реалізації
Висновок.
1.1. Вихідні дані для реалізації системи звичайних диференційних рівнянь
Системадиференційних рівнянь :
Початкові умови : А=0, В=1
t(0)=0, x(0)=0, y(0)=0
Задана точність: Е=
Обираємо с=6
1.2 Математична основа засобу Рунге–Кутта
Засіб Рунге -Кутта можливо получити, якщо разкласти у ряд Тейлора значення у(х)
y(x0+h)=y(x0)+h(x0)h3 +hnyn(x0)
xi=x(0)+Ih
yi+1=yi+∙(K1i+2K2i+2K3i+2K4i)
K1i=h∙f(xi,yi)
K2i=h∙f(xi+∙yi+)
K3i=h∙f(xi+
K4i=h∙f(xi+h∙yi+K3)
Блок - схема головного модуля по Рунге - Кутту:
Реалізація програми за засобом Рунге – Кутта. :
DECLARE SUB KUTT (T!, X!, Y!, A%, B%, C%, E!, H!, N%, T(), X(), Y(), K1X!, K1Y!, K2X!, K2Y!, K3X!, K3Y!, K4X!, K4Y!)
DECLARE SUB GRAF (T!, X!, Y!, A%, B%, C%, E!, H!, N%, T(), X(), Y(), K1X!, K1Y!, K2X!, K2Y!, K3X!, K3Y!, K4X!, K4Y!)
INPUT "C"; C%
E! = C% * 10 ^ (-4)
H! = E! ^ (1 / 4)
CONST A% = 0: CONST B% = 1
DIM SHARED T!(2000), X!(2000), Y!(2000), K1X!(2000), K1Y!(2000), K2X!(2000), K2Y!(2000), K3X!(2000), K3Y!(2000), K4X!(2000), K4Y!(2000)
T(0) = 0: X(0) = 0: Y(0) = 0
M1: CALL KUTT(T!, X!, Y!, A%, B%, C%, E!, H!, N%, T(), X(), Y(), K1X!, K1Y!, K2X!, K2Y!, K3X!, K3Y!, K4X!, K4Y!)
FOR I% = 0 TO N%
X1(I%) = X(I%)
Y1(I%) = Y(I%)
NEXT I%
H! = H! / 2
CALL KUTT(T!, X!, Y!, A%, B%, C%, E!, H!, N%, T(), X(), Y(), K1X!, K1Y!, K2X!, K2Y!, K3X!, K3Y!, K4X!, K4Y!)
FOR I% = 0 TO N%
IF ABS(X1(I%) - X(I%)) * (16 / 15) > E! THEN
GOTO M1
ELSE GOTO M2
END IF
IF ABS(Y1(I%) - Y(I%)) * (16 / 15) > E! THEN
GOTO M1
ELSE GOTO M2:
END IF
NEXT I%
M2: FOR I% = 1 TO N%
PRINT T(I%), X(I%), Y(I%)
NEXT I%
PRINT "H"; H!
INPUT K!
CALL GRAF(T!, X!, Y!, A%, B%, C%, E!, H!, N%, T(), X(), Y(), K1X!, K1Y!, K2X!, K2Y!, K3X!, K3Y!, K4X!, K4Y!)
END
SUB GRAF (T!, X!, Y!, A%, B%, C%, E!, H!, N%, T(), X(), X1(), K1X!, K1Y!, K2X!, K2Y!, K3X!, K3Y!, K4X!, K4Y!)
SCREEN 2
VIEW (170, 50)-(470, 150)
WINDOW (-1, 1.5)-(1, -1.5)
FOR I% = 0 TO N% - 1
PSET (T(I%), X(I%))
PSET (T(I%), Y(I%))
LINE (T(I%), X(I%))-(T(I% + 1), X(I% + 1))
LINE (T(I%), Y(I%))-(T(I% + 1), Y(I% + 1))
NEXT I%
LINE (-1, 0)-(1, 0)
LINE (0, -1.5)-(0, 1.5)
END SUB
SUB KUTT (T!, X!, Y!, A%, B%, C%, E!, H!, N%, T(), X(), Y(), K1X!, K1Y!, K2X!, K2Y!, K3X!, K3Y!, K4X!, K4Y!)
N% = (B% - A%) / H!
FOR I% = 0 TO N%
T(I%) = T(0) + I% * H!
K1X(I%) = H! * (-2 * X(I%) + 5 * Y(I%))
K1Y(I%) = H! * ((EXP(.5 * Y(I%) + T(I%)) - EXP(-.5 * Y(I%) + T(I%))) / 3 + .5 * Y(I%))
K2X(I%) = H! * (-2 * (X(I%) + K1X(I%) / 2) + 5 * (Y(I%) + K1Y(I%) / 2))
K2Y(I%) = H! * ((EXP(.5 * (Y(I%) + K1Y(I%) / 2) + (T(I%) + H! / 2) - EXP(-.5 * Y(I%) + K1Y(I%) / 2) - (T(I%) + H! / 2))) / 3 + .5 * (Y(I%) + K1Y(I%) / 2))
K3X(I%) = H! * (-2 * (X(I%) + K2X(I%) / 2) + 5 * (Y(I%) + K2Y(I%) / 2))
K3Y(I%) = H! * ((EXP(.5 * (Y(I%) + K2Y(I%) / 2) + (T(I%) + H! / 2) - EXP(-.5 * Y(I%) + K2Y(I%) / 2) - (T(I%) + H! / 2))) / 3 + .5 * (Y(I%) + K2Y(I%) / 2))
K4X(I%) = H! * (-2 * (X(I%) + K3X(I%)) + 5 * (Y(I%) + K3Y(I%)))
K4Y(I%) = H! * ((EXP(.5 * (Y(I%) + K3Y(I%)) + (T(I%) + H!) - EXP(-.5 * Y(I%) + K3Y(I%)) - (T(I%) + H!))) / 3 + .5 * (Y(I%) + K3Y(I%) / 2))
X(I% + 1) = X(I%) + 1 / 6 * (K1X(I%) + 2 * K2X(I%) + 2 * K3X(I%) + K4X(I%))
Y(I% + 1) = Y(I%) + 1 / 6 * (K1Y(I%) + 2 * K2Y(I%) + 2 * K3Y(I%) + K4Y(I%))
NEXT I%
END SUB
Результати реалізації системи диференційних рівнянь за засобом Рунге – Кутта.
T | X | Y |
0 | 0 | 0 |
0,08 | 0,0012 | 0,008075541 |
0,16 | 0,00503475 | 0,0157619 |
0,23 | 0,0121 | 0,02953131 |
0,31 | 0,02278947 | 0,04097326 |
0,39 | 0,0349 | 0,05493775 |
0,47 | 0,05233831 | 0,07522751 |
0,55 | 0,0775 | 0,10523 |
0,63 | 0,1089077 | 0,149089 |
0,70 | 0,158 | 0,20752 |
0,78 | 0,2199285 | 0,2783817 |
0,86 | 0,2868 | 0,37033 |
0,94 | 0,3583839 | 0,469151 |
Нопт=0,07825423
1.7.Математична основа способу Мілна
Для реалізації засобу Мілна необхідно матиінформацію о попередніх точках. Тому засіб Мілна реалізуєтся післяпідрахунків по засобу Рунге-Кутта з заданной точностью.
Формула прогнозу:
Визначаємо значення проізводної :
Формула коррекції:
Якщо , то
Якщо , то закінчуємо розрахунок і даємо поманду на друк результата .
8.Блок-схема реалізації головного модуля, програми та графічної частини за засобом Мілна
нет
1.9.Реалізація програми за способом Мілна
DECLARE SUB MILN (T!, X!, Y!, A%, B%, H!, N%, E!, C%, X(), Y(), T(), LX3!, LY3!, LX2!, LY2!, LX1!, LY1!, XP!, YP!, XK!, YK!, MPX!, MPY!, MKX!, MKY!, XK1!, YK1!)
DECLARE SUB KUTT (T!, X!, Y!, A%, B%, H!, N%, E!, C%, X(), Y(), T(), KX1!, KY1!, KX2!, KY2!, KX3!, KY3!, KX4!, KY4!)
DECLARE SUB GRAF (T!, X!, Y!, A%, B%, H!, N%, E!, C%, X(), Y(), T(), LX3!, LY3!, LX2!, LY2!, LX1!, LY1!, XP!, YP!, XK!, YK!, MPX!, MPY!, MKX!, MKY!, XK1!, YK1!)
INPUT "C"; C%
E! = C% * 10 ^ (-4)
H! = E! ^ (1 / 4)
CONST A% = 0: CONST B% = 1
DIM SHARED T!(2000), X!(2000), Y!(2000), KX1!(2000), KY1!(2000), KX2!(2000), KY2!(2000), KX3!(2000), KY3!(2000), KX4!(2000), KY4!(2000)
DIM SHARED LX1!(2000), LY1!(2000), LX2!(2000), LY2!(2000), LX3!(2000), LY3!(2000), XP!(2000), YP!(2000), XK!(2000), YK!(2000), MPX!(2000), MPY!(2000), MKX!(2000), MKY!(2000), XK1!(2000), YK1!(2000)
T(0) = 0: X(0) = 0: Y(0) = 0
CALL KUTT(T!, X!, Y!, A%, B%, H!, N%, E!, C%, X(), Y(), T(), KX1!, KY1!, KX2!, KY2!, KX3!, KY3!, KX4!, KY4!)
FOR I% = 0 TO N%
PRINT T(I%), X(I%), Y(I)
NEXT I%
INPUT L!
CALL GRAF(T!, X!, Y!, A%, B%, H!, N%, E!, C%, X(), Y(), T(), LX3!, LY3!, LX2!, LY2!, LX1!, LY1!, XP!, YP!, XK!, YK!, MPX!, MPY!, MKX!, MKY!, XK1!, YK1!)
INPUT P!
CALL MILN(T!, X!, Y!, A%, B%, H!, N%, E!, C%, X(), Y(), T(), LX3!, LY3!, LX2!, LY2!, LX1!, LY1!, XP!, YP!, XK!, YK!, MPX!, MPY!, MKX!, MKY!, XK1!, YK1!)
FOR I% = 3 TO N%
IF (MPX(I% + 1) - MKX(I% + 1)) > E! THEN
XK1(I% + 1) = X(I% - 1) + (1 / 3) * H! * (MKX(I% + 1) + 4 * LX3(I%) + LX2(I% - 1))
PRINT T(I% + 1), XK1(I% + 1)
ELSE
XP(I% + 1) = XK(I% + 1)
PRINT T(I% + 1), XK(I% + 1)
END IF
FOR I% = 3 TO N%
IF (MPY(I% + 1) - MKY(I% + 1)) > E! THEN
YK1(I% + 1) = Y(I% - 1) + (1 / 3) * H! * (MKY(I% + 1) + 4 * LY3(I%) + LY2(I% - 1))
PRINT T(I% + 1), YK1(I% + 1)
ELSE
YP(I% + 1) = YK(I% + 1)
PRINT T(I% + 1), YK(I% + 1)
END IF
NEXT I%
INPUT M!
CALL GRAF(T!, X!, Y!, A%, B%, H!, N%, E!, C%, X(), Y(), T(), LX3!, LY3!, LX2!, LY2!, LX1!, LY1!, XP!, YP!, XK!, YK!, MPX!, MPY!, MKX!, MKY!, XK1!, YK1!)
END
SUB GRAF (T!, X!, Y!, A%, B%, H!, N%, E!, C%, X(), Y(), T(), LX3!, LY3!, LX2!, LY2!, LX1!, LY1!, XP!, YP!, XK!, YK!, MPX!, MPY!, MKX!, MKY!, XK1!, YK1!)
SCREEN 2
VIEW (170, 50)-(470, 150)
WINDOW (-1, 1)-(1, -1)
FOR I% = 0 TO N% - 1
PSET (T(I%), KX(I%))
PSET (T(I%), YK(I%))
LINE (T(I%), XK(I%))-(T(I% + 1), XK(I% + 1))
LINE (T(I%), YK(I%))-(T(I% + 1), YK(I% + 1))
NEXT I%
FOR I% = 4 TO N% - 1
PSET (T(I%), KX(I%))
PSET (T(I%), YK(I%))
LINE (T(I%), XK(I%))-(T(I% + 1), XK(I% + 1))
LINE (T(I%), YK(I%))-(T(I% + 1), YK(I% + 1))
PSET (T(I%), XK1(I%))
PSET (T(I%), YK1(I%))
LINE (T(I%), XK1(I%))-(T(I% + 1), XK1(I% + 1))
LINE (T(I%), YK1(I%))-(T(I% + 1), YK1(I% + 1))
NEXT I%
LINE (-1, 0)-(1, 0)
LINE (0, -1.5)-(0, 1.5)
END SUB
SUB KUTT (T!, X!, Y!, A%, B%, H!, N%, E!, C%, X(), Y(), T(), KX1!, KY1!, KX2!, KY2!, KX3!, KY3!, KX4!, KY4!)
N% = (B% - A%) / H!
I% = 0
DO
T(I%) = T(0) + I% * H!
KX1(I%) = H! * (-2 + X(I%) + 5 * Y(I%))
KY1(I%) = H! * ((EXP(.5 * Y(I%) + T(I%)) - EXP(-.5 * Y(I%) + T(I%))) / 3 + .5 * Y(I%))
KX2(I%) = H! * (-2 + (X(I%) + KX1(I%) / 2) + 5 * (Y(I%) + KX1(I%) / 2))
KY2(I%) = H! * ((EXP(.5 * (Y(I%) + KY1(I%) / 2) + (T(I%) + H! / 2) - EXP(-.5 * Y(I%) + KY1(I%) / 2 - (T(I%) + H! / 2))) / 3 + .5 * (Y(I%) + KY1(I%) / 2)))
KX3(I%) = H! * (-2 + (X(I%) + KX2(I%) / 2) + 5 * (Y(I%) + KY2(I%) / 2))
KY3(I%) = H! * ((EXP(.5 * (Y(I%) + KY2(I%) / 2) + (T(I%) + H! / 2) - EXP(-.5 * Y(I%) + KY2(I%) / 2 - (T(I%) + H! / 2))) / 3 + .5 * (Y(I%) + KY2(I%) / 2)))
KX4(I%) = H! * (-2 + (X(I%) + KX3(I%) / 2) + 5 * (Y(I%) + KY2(I%) / 2))
KY4(I%) = H! * ((EXP(.5 * (Y(I%) + KY3(I%) / 2) + (T(I%) + H! / 2) - EXP(-.5 * Y(I%) + KY3(I%) / 2 - (T(I%) + H! / 2))) / 3 + .5 * (Y(I%) + KY3(I%) / 2)))
X(I% + 1) = X(I%) + (1 / 6) * (KX1(I%) + 2 * KX2(I%) + 2 * KX3(I%) + KX4(I%))
Y(I% + 1) = Y(I%) + (1 / 6) * (KY1(I%) + 2 * KY2(I%) + 2 * KY3(I%) + KY4(I%))
I% = I% + 1
LOOP UNTIL I% > N%
END SUB
SUB MILN (T!, X!, Y!, A%, B%, H!, N%, E!, C%, X(), Y(), T(), LX3!, LY3!, LX2!, LY2!, LX1!, LY1!, XP!, YP!, XK!, YK!, MPX!, MPY!, MKX!, MKY!, XK1!, YK1!)
N% = (B% - A%) / H!
FOR I% = 3 TO N%
T(I%) = T(0) + I% * H!
LX3(I%) = -2 * X(I%) + 5 * Y(I%)
LY3(I) = (EXP(.5 * (Y(I%) + T(I%)) - EXP(-.5 * Y(I%) - T(I%))) / 3 + .5 * Y(I%))
LX2(I% - 1) = -2 * X(I% - 1) + 5 * Y(I% - 1)
LY2(I% - 1) = (EXP(.5 * (Y(I% - 1) + T(I% - 1)) - EXP(-.5 * Y(I% - 1) - T(I% - 1))) / 3 + .5 * Y(I% - 1))
LX1(I% - 2) = -2 * X(I% - 2) + 5 * Y(I% - 2)
LY1(I% - 2) = (EXP(.5 * (Y(I% - 2) + T(I% - 2)) - EXP(-.5 * Y(I% - 2) - T(I% - 2))) / 3 + .5 * Y(I% - 2))
XP(I% + 1) = X(I% - 3) + (4 / 3) * H! * (2 * LX3(I%) - LX2(I% - 1) + 2 * LX1(I% - 2))
YP(I% + 1) = Y(I% - 3) + (4 / 3) * H! * (2 * LY3(I%) - LY2(I% - 1) + 2 * LY1(I% - 2))
MPX(I% + 1) = 2 + XP(I% + 1) + 5 * YP(I% + 1)
MPY(I% + 1) = EXP(.5 * YP(I% + 1) + T(I% + 1)) - EXP(-.5 * YP(I% + 1) - T(I% + 1)) / 3 + .5 * YP(I% + 1)
XK(I% + 1) = X(I% - 1) + (1 / 3) * H! * (MPX(I% + 1) - 4 * LX3(I%) + LX2(I% - 1))
YK(I% + 1) = Y(I% - 1) + (1 / 3) * H! * (MPY(I% + 1) - LY3(I%) + LY2(I% - 1))
MKX(I% + 1) = -2 + XK(I% + 1) + 5 * YK(I% + 1)
MKY(I% + 1) = (EXP(.5 * YK(I% + 1) + T(I% + 1)) - EPX(-.5 * Y(I + 1) - T(I% + 1)) / 3 + .5 * YK(I% + 1))
NEXT I%
END SUB
1.10.Результати реалізації програми за способом Мілна
Т | Х | У |
0 | 0 | 0 |
0,1565085 | 0,002034751 | 0,008549757 |
0,3130169 | 0,01578947 | 0,03372118 |
0,4695254 | 0,05033831 | 0,07872751 |
0,6560338 | 0,1149077 | 0,1481089 |
0,7825423 | 0,2199285 | 0,2483817 |
0,9390508 | 0,3783839 | 0,389151 |
2. Реалізація контролю працездатності енергетичної системи
Початкові дані
Функціональний рівень зміни температури теплоносія, що гріє, для підігрівача гарячого водопостачання теплової підстанції (за варіантом №6)