- •Программная реализация формальных средств анализа и моделирования интегрированных систем ла
- •Примеры реализации пмо на Delphi
- •Реализация на основе записей (record)
- •Использование классов и объектных интерфейсов
- •Реализация с самостоятельным управлениям памятью
- •Реализация с использованием библиотеки шаблонов
- •Литература
Программная реализация формальных средств анализа и моделирования интегрированных систем ла
Для моделирования и анализа процессов функционирования интегрированных систем ЛА с использованием вычислительной техники необходимо программно-математическое обеспечение (ПМО), реализующее описанные в настоящем пособии формальные средства, к которым в первую очередь относятся элементарные процедуры векторной, матричной и кватернионной алгебр, а также различные численные методы (такие как обращение матриц или решение проблемы собственных значений). Такое ПМО удобно представить в виде модуля библиотеки программных средств, предназначенных для решения широкого круга задач компьютерного моделирования процессов функционирования интегрированных систем. Для реализации подобной библиотеки можно использовать различные языки программирования, конкретный выбор может определяться, например, базовой программной платформой, на которой будет функционировать ПМО, специфическими возможностями конкретного языка, предпочтениями разработчика или их коллектива. Некоторые языки программирования и среды моделирования имеют стандартные средства поддержки векторной и матричной алгебры (как, например, Python или MATLAB), но реализация кватернионной алгебры в этих средствах, как правило, отсутствует. Решение же задач моделирования кинематики и динамики ЛА и его систем при современном подходе требует наличие таких возможностей, что вызывает необходимость самостоятельной разработки ПМО, ими обладающего.
В данном пособии рассматриваются различные варианты архитектуры модуля ПМО, реализующего векторные, матричные и кватернионные операции с использованием языков программирования высокого уровня Delphi и С++. Оба эти языка являются объектно-ориентированными, т.е. предоставляют все возможности для гибкой разработки и повторного использования надёжного кода без избыточности. Для них существуют развитые среды разработки (например, Microsoft Visual Studio или QtCreator для С++, Embarcadero RAD Studio для Delphi и С++), и они широко применяются для создания различного ПМО. По сравнению с интерпретируемыми языками, к которым относятся Python и m-язык в среде моделирования MATLAB или Maple, Delphi и С++, являясь компилируемыми, имеют преимущество в быстродействии кода, написанного с их помощью (что становится особенно заметно при организации объёмных вычислений). Нужно отметить, что большинство интерпретируемых языков позволяют автоматически получать на их основе бинарные исполняемые файлы, но создаваемый таким образом машинный код, как правило, оказывается оптимизирован по быстродействию не лучшим образом или не оптимизирован совсем.
По сравнению с упомянутыми средами разработки, обеспечивающими удобное создание графического интерфейса пользователя, который зачастую является неотъемлемой частью сложных моделирующих комплексов, возможности MATLAB весьма ограничены, а в Python для этой цели требуются внешние библиотеки и средства разработки. Кроме того, Delphi продолжает оставаться одним из основных языков для обучения программированию, являясь при этом полноценным инструментом, пригодным для решения вычислительных задач. Что касается С++, то на сегодняшний день это самый распространённый язык программирования, компиляторы которого реализованы на большинстве существующих платформ, в том числе и для бортовых систем.
В целях демонстрации различных возможностей рассматриваемых языков программирования, которые могут использоваться при реализации и других компонентов моделирующих комплексов, для каждого из этих языков приводится по два примера исходного кода с комментариями и пояснениями. Каждый вариант реализации имеет свои преимущества и недостатки, поэтому выбор конкретного варианта для практического применения должен определяться с их учётом.
