Главная страница Программы проектирования [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [ 73 ] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] нопараметрическое семейство, определяемое параметром р. Оптимальное значение р, обеспечивающее минимум главного члена погрешности, 2/3. При совместном использовании явного и неявного методов второго порядка следует задавать р = а=1-12/2, в этом случае промежуточные точки для обоих методов совпадают. Неявный метод второго порядка при выбранных параметрах является не только L-устойчивым, но и S-устойчивым [91], что весьма ценно при интегрировании жестких систем. Отметим, что форма записи неявного и линейно-неявного методов в табл. 9.1 несколько отличается от общепринятой (см. формулы (9.10) -(9.12)), однако она оказалась более удобной при алгоритмической реализации. Для выбора шага интегрирования можно использовать следующую процедуру. Интегрирование от точки ti до точки ti+i = ti + hi выполняется дважды: с шагом hi н с шагом hil2. За текущее значение вектора переменных состояния принимается решение хг+ь полученное с шагом hi/2. Решение Xj+i, полученное с шагом hi, используется для оценки локальной ошибки, которая вычисляется по формуле е=(хг+,-Xi+i)/(2-l), где k - порядок метода. Оценку относительной локальной ошибки получаем в виде е=е1/хг+1-х,-. Если оценка ошибки больше допустимой (8>8доп), то следует уменьшить шаг hi в 2 раза и повторить расчет из точки ti. Если е<;едой/2, то шаг следует увеличить в 2 раза, т. е. принять hi+i = = 2/Zi. И наконец, если 8доп/288доп, то шаг интегрирования остается без изменений. Описанная процедура контроля ошибки является наиболее универсальной, поскольку применима к любому методу интегрирования, однако эта процедура требует дополнительных вычислительных затрат. 9.2. МОДЕЛИРОВАНИЕ СИСТЕМ ПО УРАВНЕНИЯМ СОСТОЯНИЯ Рассмотрим автоматическую систему, уравнения которой представлены в нормальной форме x=f (X, t), X{to) =Хо. Для моделирования такой системы непосредственно применимы численные методы интегрирования ОДУ. В приведенной ниже подпрограмме RKE использован явный метод Рунге - Кутта второго порядка из табл. 9.1 при Р = 2/3, Расчетные формулы этого метода: Xi-i-i = Xi+ hf {Xi, ti) + hf (x,-+2/g, tt + h 4 4 \ 3 Подпрограмма RKE Назначение; решение системы дифференциальных уравнений явным методом Рунге -Кутта с автоматическим выбором шага. Обращение: CALL ,RKE(TO, Tl, DT, HMAX, HMIN, EPS, X, N, IER, FUN, OUT). Параметры: TO - начальное значение независимой переменной, Tl - конечное значение независимой переменной, DT - шаг вывода результатов, при DT=0 вывод через каждые два шага Интегрирования, . НМАХ - максимальный шаг .интегрирования, рекомендуется HMAX=DT,. HMIN - минимальный шаг интегрировании, рекомендуется НМШ= (Т1- -Т0)>1<1.Е-5, EPS - допустимая относительная ошибка, рекомендуется EPS=0.01, не следует задавать EPS больше 0.1 или меньше 1.Е-4, X - начальное значение вектора переменных состояния (на входе), конечное значение вектора переменных состояния (яа выходе), N - размерность вектора переменных состояния, 1ER - код завершения: 0 - интегрирование завершено успешно, 1 - ошибка во входных данных, й - процесс расходится (одна яз переменных по абсолютной величине превысила 1.Е 15), 3 - заданная точность не обеспечивается, вероятно, система является жесткой, и для ее решения следует использовать неявный метод интегрирования, FUN - имя подпрограммы вычисления производных, ее параметры: Т - значение независимой переменной, X - вектор переменных состояния, РХ - вектор производных, OUT - имя подпрограммы вывода или запоминания результатов, ее параметры: Т - значение независимой переменной, X - вектор переменных состояния, РХ - вектор производных, N - размерность вектора переменных состояния, IER - код завершения, при необходимости досрочно закоичить интегрирование параметру 1ER следует присвоить положительное значение. Для удобства использования подпрограммы iRKE была написана программа, обеспечивающая ввод исходных данных, интегрирование уравнений состояния и вывод результатов моделирования в виде графиков на АЦПУ или на экран дисплея. В этой программе кроме подпрограммы RKE используется подпрограмма GRAF1K, приведенная в § 12.4. Для решения конкретной задачи пользователь должен в основной программе задать параметры моделирования, а в подпрограммах FUN н OUT записать выражения для производных переменных состояния и выводимых переменных. В основной программе необходимо задать следующие параметры: ТО - начальное время моделирования; Т1 - конечное время моделирования; DT - Шаг печати; EPS - допустимая относительная ошибка; N - размерность вектора переменных состояния; Х(1), X(N) - начальные значения вектора переменных состояния; М - количество выводимых переменных; TITLE(l), ... TITLE (М) - 8-байтовые текстовые константы, используемые как заголовки для выводимых переменных, первый из восьми символов каждой константы используется для печати графика. В подпрограмме FUN необходимо записать выражения для производных РХ(1), PX(N) в зависимости от переменных состояния Х(1), X(N) и времени Т. Необходимо также присвоить значения выводимым переменным Y(l), .... Y(M). Выводимыми переменными могут быть переменные состояния, их производные, а также функции от переменных состояния и их производных. Пример. Система описывается нелинейным диффереицнальным уравнением Произведем моделирование системы при u{t) = l(t). Для этого предварительно составим уравненпя в нормальной форме; Х\=Х2, X2 = -Xi-0,8X2+U(t]. Результаты моделирования представлены на рис. 9.4. O.Ot-Ol 4 -4.0t-01 -2 ВРЕМЯ O.OOt-01 »......... 2.00t4>l » 4.(ЮЬ-01 . » 6.00t-01 . » 8.00Е-01 . I 1.00t*<X) . 1.20t+«> . 1.40t+00 . 1.60fc+<X) . 1.60t+00 . 2.00fct00 ........ 2.2tt+00 . 2.4ОЫО0 . г.&оеюо . 2.80e+00 . 3.00fc*00 . !« 3.20fc+00 .K 3.40t*00 . к 3.40t*00 . я 3.80E100 . 4.00fc+00........ *.2oetoo . 4.40tt00 . 4.60t+00 . 4.8ОЫО0 . 5.00t400 . 5.30E+0O . 5.40E+00 . ъ.мыоо . 5.80t+00 . A.OOfc+00........ A.20fc+00 . A.40t+00 . 6.А0ЫОО . A.80E+00 . 7.00t+00 . "/.20t+00 . /.40+00 . /.60*00 . /.80fc+00 . e.oot+oo ........ Ot-01 8.0fc-01 1 Ofc-01 O.Ot-01 2 « .4 2t+00 1 AE+OO CE-01 Ofc+OO OE-01 2.4E->00 » 8.0e-01 » » - X(T) ... O.OOE-01 . 1.90e-OE . 7.24E-02 . 1.55E-01 . 2.ffiE-01 . 3.B9E-01 . 5.32E-01 «. 6.85E-01 к . 8.40e-01 . 9.87t-01 ... I.IIE+OO . 1.21E+00 . 1.24t+0O . 1.27E+0O . 1.23ttoo . 1.17t+00 . l.lOt+00 . l.Oi+00 . 9.«>£-01 . 9.0BE-O1 ... 8.72t-01 . 8.&4E-01 . 8.53t-01 . 8.6(S£-01 . 8.90e-Ol . 9.21E-01 . 9.56E-01 . 9.90E-01 . 1.02E+00 . 1.04E+00 ... l.OAEtOO . 1.06E+00 . 1.06E+00 . l.CBE+00 . 1.04E+00 . I.026+00 . l.Olt+OO . 9.91E-01 - 9.79t-01 . 9.72t-01 ... 9.i9E-01 » -IiX/PT O.OOE-01 1.85t-0I 3.42E-01 4.76E-01 5.в8Е-01 6.80£-0l 7.t5E-01 7.77E-01 7.63E-01 6.91E-01 5.55E-01 3.64E-01 l.*3E-01 -6.74t-02 -2.3At-0l -3.*0t-0l -3.77E-01 -3.59E-01 -3.01E-01 -2.21E-01 -1.32t-01 -4.60L-02 3.13E-02 9.46e-02 1,40E-01 1.A7E-01 1.74E-01 1.626-01 1.356-01 9.59E-02 5.13E-02 A.94t-03 -3.16E-02 -A.05t-02 -7.74E-02 -8.29b-02 -7.80t-02 -A.50t-02 -4.A9E-02 -2.A5t-02 -6.3bt-03 [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [ 73 ] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] 0.014 |