Главная страница  Программы проектирования 

[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.0248