Главная страница Программы проектирования [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] Интегрирование этого уравнения удобно выполнять, заменив переменную т = = к-t (в обратном времени). В этом случае задача сводится к решению задачи Коши с начальными условиями К(0)=Фк. Ввиду симметричности матрицы К (О это уравнение равносильно системе п{п-\->-Ь1)/2 обыкновенных нелинейных дифференциальных уравнений первого порядка с переменными во времени коэффициентами. Для станционарных систем с бесконечным временем наблюдения матричное дифференциальное уравнение Риккати вырождается в алгебраическое (5.8), решением которого является симметрическая положительно определенная матрица К(оо). Решение уравнения (5.4) для стационарных систем дел lim К(0 = К(оо). Начала Решение уравнений Риккати K=KA(T;+AWK-KBCi:;ir-BVx-;K+ ф , \1<.(0}=Ф,,, am ТО да Itf , x = t-t Запоминание матрицы г-1аг. Решение уравнений в ви тения x(t]Wt}-B(t}b(t}]*.(t}.x(tol = Xo. от t= О до t- /к Наэффииенты усилений системы. Оптимальная траектория двитения Конец J Рис. 5.2 при Фк = 0 и к-оо имеет пре- (5.13) Поэтому матрицу К можно вычислить как предельное значение решения дифференциального уравнения Риккати при достаточно большом к. Для решения задач синтеза оптимального управления, а также для автоматизации итерационного процесса выбора весовых коэффициентов с помощью ЭВМ разработана типовая программа ACOR, реализующая алгоритм, схема которого приведена на рис. 5.2. Программа ACOR Назначение: нахождение оптимального управления и построение переходных процессов. Используемые стандартные подпрограммы i[53]: RKGS - решение системы обыкновенных дифференциальных уравнений первого порядка методом Руиге - Кутта, MTRA - транспонирование матриц, ARRAY - преобразование одномерного массива в двумерный и обратно. Подпрограмма RKGS содержит обращение к двум внешним подпрограммам: PRA - вычисление правых частей дифференциальных уравнений, OUT - выдача на печать результатов решения системы дифференциальных уравнений. Используемые подпрограммы: INPUT и PLOT. Подпрограмма INPUT Назначение: ввод исходных данных. Обращение: CALL INPUT (N, R, KL KTI. FI, PSI. PI. Pill. HP. NZ, LZ). Параметры: N - число координат состояния, R - число управляющих сигналов, KI - вектор начальных значений матрицы К, KTI - вектор весовых коэффициентов погрешности, FI, PSI - весовые матрицы, PI, РП - векторы параметров интегрирования, HP - шаг печати, NZ - число точек, в которых определяются матрицы D, LZ - число выводимых на печать точек. Примечание. Кроме перечисленных параметров исходными данными дл>> программы ACOR служат заданные в подпрограмме INPUT и переданные через общие блоки памяти следующие параметры; VALVA - массив значений элементов матрицы А, VALVB - массив значений элементов матрицы В, ARG - массив значений времепи, для которых заданы матрицы А и В, X - вектор (Начальных значений координат состояния, DX - вектор весовых коэффициентов погрешности. Подпрограмма PLOT Нааиачеяие: печать на АЦПУ в графическом виде массивов данных (не более 6). Обращение: CALL PLOT (А, ОМ, N, М). Параметры: А - входная матрица значений т фуякций в п точках (пХт), каждый столбец массива выводится на печать в виде кривой на графике, ОМ - массив значений аргумента в п точках, N - число различных значений аргумента (строк в матрице А), М - число кривых на графике ((столбцов матрицы А). Подпрограмма PRAI Назначение: вычисление правых частей уравнений Риккати. Параметры: Т - время интегрирования, KI - вектор-столбец, составленный из элементов матрицы К, KTI - вектор-столбец, составленный из производных элементов матрицы К. Используемые стандартные подпрограммы [53]: ALI - интерполирование функций, ARRAY - преобразование одномерного массива в двумерный и обратно, MINV - обращение матриц, GMPRD - произведение двух матриц общего вида, GMTRA - транспонирование матриц, TPRD - умножение транспонированной матрицы на матрицу, GMADD - сложение двух матриц общего вида, GMSUB - вычитание двух матриц общего вида. Подпрограмма 0UT1 Назначение: вывод результатов решения. Параметры: Т - время интегрирования, KI - вектор-столбец, составленный яз элементов матрицы К, KTI - вектор-столбец, составленный из производных элементов матрицы К, IH - число делений пополам начального шага, N1 - число уравнений системы, PI - вектор параметров интегрирования уравнений Риккати. Используемые ста1нда1ртные подпрограммы [63]: ARRAY - преобразование одномерного массива в двумерный и обратно; GMPRD - произведение двух матриц общего вида. Подпрограмма PRA2 Назначение: вычислевие правых частей уравнений движения. Параметры: Т - время интегрираваиия, X - вектор состояния системы, DX - вектор производных координат состояния. Используемые стандартные подпрограммы [53]: ALI - интерполирование функций, ARRAY - преобразование одномерного массива в двумерный и обратно, GMPRD - произведение двух матриц общего вида, GMADD - сложение двух матриц общего вида. Подпрограмма 0UT2 Назначение: подпрограмма вывода. Параметры; Т - время интегрирования, X - вектор состояния системы, DX - вектор производных координат состояния, IH - число делений пополам начального шага, N - число уравнений системы, РП - вектор параметров интегрирования уравнений движения. Ниже приводятся тексты основной программы ACOR и подпрограмм INPUT, PLOT, PRAl, OUTl, PRA2, 0UT2 на языке Фортран. Все подпрограммы составлены для /г=6 и г=2, в противном случае следует изменить размеры массивов. [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.0112 |