Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 700403.doc
Скачиваний:
13
Добавлен:
01.05.2022
Размер:
5.16 Mб
Скачать

Лекция №6 Этапы создания программ. Реализация численных методов в сапр

Теоретические вопросы:

6.1. Разработка общего плана программы

6.2. Решение больших разреженных систем линейных уравнений

6.3. Программирование оптимизационных задач

6.1. Разработка общего плана программы

Процесс проектирования представляется как последовательность проектных операторов k, воздействующих на модель проектируемого объекта Ai и осуществляющих преобразование модели из предшествующего (Ai)k-1 в последующее (Ai)k состояние.

Обычно разработка общего плана программы ведется «сверху-вниз» - от более общих моментов к частным. Продумывается структура данных. Будущая программа расчленяется на модули (самостоятельные программные единицы, которые могут транслироваться на ЭВМ по отдельности) и на сегменты (участки, обладающие определенной автономностью и законченностью, но не являющиеся самостоятельными программными единицами).

Основными компонентами математического обеспечения систем, обеспечивающих автоматизацию процесса проектирования, являются математические модели и алгоритмы проектирования. Все модели разделяются на следующие типы:

- лингвистические;

- структурные;

- количественные.

Для выполнения количественных расчетов при автоматизации процесса проектирования применяются количественные модели. В простейшем случае количественная модель представляется на единственном – количественном – уровне описания и включает в себя набор количественных отношений между числовыми величинами.

Структура сложной количественной модели органически связывается со структурой объекта, поэтому построение такой модели начинается с анализа взаимосвязи контуров проектируемого объекта. Затем выявляются контуры и их параметры, подлежащие расчету, и устанавливается функциональная связь между ними. Далее выявляется способ определения числовых значений этих величин – расчетным путем, из нормативных данных, экспериментальным путем и т.д.

Взаимосвязь компонентов структурных и количественных моделей, обеспечивающая комплексное решения задач определения возможной структуры объекта, моделируется с помощью булевых матриц взаимосвязи структурных и количественных элементов моделей. Различают два вида матриц взаимосвязи: матрицы взаимосвязи количественных элементов с элементами проектируемого объекта и матрицы взаимосвязи количественных элементов с контурами проектируемого объекта.

После подобного расчленения программы подбираются, по возможности, готовые модули, планируются межмодульные связи, такие как передача и возврат параметров, использование областей памяти. Как известно из курса информатики, сегменты основных программ можно с успехом заменять подпрограммами. Свободное использование подпрограмм позволяет не только упростить основную программу, но также более легко ее структурировать и документировать, что особенно важно при последующих модификациях.

Широкое применение модульного подхода, например, при программировании метода конечных элементов, которые для различных задач и различных элементов формируются из заданных сегментов, было бы невозможно без подпрограмм. Другое преимущество состоит в том, что каждая подпрограмма может работать и проверяться как отдельная программа, что существенно облегчает отладку.

В настоящее время связи одной подпрограммы с другой осуществляется в форме специализированных файлов. Существенного упрощения связей можно достичь, используя современные стандарты.

Основанием для разработки общего плана программы может служить техническое задание (ТЗ), которое обычно дается в виде алгоритма, дополненное сведениями о входных параметрах задачи. Если способ вычисления результата более или менее ясен из самой постановки математической задачи (например, требуется запрограммировать явную формулу), специальное описание алгоритма может отсутствовать, но другие упомянутые компоненты ТЗ должны быть указаны. На стадии изучения ТЗ необходимо четко определить некоторые специальные функции, имеющие разновидности и модификации (интеграл вероятностей, функции Бесселя и т.д.).

Наиболее важным вопросом является задача выбора имен для объектов программы. Состав идентификаторов следует соотносить с их общепринятыми обозначениями, или созвучиями. Составление такого перечня одновременно с написанием текста программы преследует следующие цели: уменьшает вероятность ошибочного использования независимого программного модуля и помогает выявить ошибки набора, в результате которых могут появляться ложные имена и в процессе вычислений начинают участвовать «дикие» переменные.

При решении большинства инженерных задач очень трудно обойтись без создания собственных приложений в следствие относительно узкой специализации. В настоящее время программирование осуществляется под операционными системами семейства Microsoft Windows.

Изначально под программированием под Windows подразумевалось программирование на C с использованием Windows Application Programming Interface, на основе чего было создано множество приложений, однако написание работоспособного приложения по этой методике – задача не из легких.

С++ явился огромным шагом вперед в отношении новых возможностей по сравнению с исходным языком. Одной из наиболее распространенных библиотек в C++ является библиотека MFC (Microsoft Foundation Class), который представляет собой дополнительный уровень над Win32 API, который значительно упрощает работу программиста за счет использования готовых классов, макросов и мастеров.

При работе с приложениями Microsoft Office и создании на их основе собственных приложений, используется язык программирования Visual Basic, которым позволяет работать с достаточно сложными элементами интерфейса пользователя, библиотеками кода и средствами доступа к данным при минимальных затратах времени и сил.

6.2. Решение больших разреженных систем линейных уравнений

При проектировании сложных технических объектов зачастую приходится иметь дело с матрицами, в которых большинство элементов равно нулю и которые обычно называются разреженными.

Основным источником разреженности являются модели, в которых существуют локальные связи или локальные воздействия. Многие приложения приводят к матрицам, которые не только разрежены, но и имеют особую структуру расположения ненулевых элементов. Наиболее простые из них - ленточные матрицы, в которых aij=0 для |i-j| > ширины ленты. Если ширина ленты равна 1, то такие матрицы называют трехдиагональными.

Любая модель, в которой существует локальное воздействие ее составных частей, будет приводить к ленточной матрице, если уравнения и неизвестные соответствующим образом пронумерованы.

Однако, если лежащий в основе модели физический объект не столь регулярен, то матрица будет хотя и ленточной, но не имеющей систематизированной структуры ненулевых элементов.

Численные методы для решения рассматриваемых систем линейных уравнений распадаются на два больших класса: итерационные и прямые. Типичный итерационный метод состоит из выбора начального приближения к x и построения последовательности , такой, что . При использовании итерационного метода мы должны выполнить бесконечное число арифметических операций, чтобы получить x, но на практике мы прекращаем итерацию, когда, с нашей точки зрения, очередное приближение достаточно близко к x. С другой стороны, при отсутствии ошибок округления, прямые методы позволяют вычислить решение за конечное число арифметических операций.

Сравнение прямых и итерационных методов с различных точек зрения и обоснование выбора того или иного метода представляется наиболее затруднительной задачей. Так, например, при проектировании кузнечно-прессового оборудования или моделирования различных разворачивающихся во времени явлений приходится решать множество систем уравнений с одной и той же матрицей коэффициентов.

В огромной степени на количество арифметической работы при использовании рассматриваемого метода влияет выбор метода упорядочивания. В этом случае стоимость прямой схемы может по существу совпадать со стоимостью решения треугольной системы при известном разложении, поскольку стоимостью единственного разложения, отнесенного ко всем системам, можно пренебречь.

Характеристики алгоритмов для разреженных матриц, во-первых, очень сильно зависят от качества машинной реализации; сложность же реализации весьма различна для разных алгоритмов. Реализация этих алгоритмов связана с использованием довольно сложных схем хранения.

Все методы, используемые при решении больших разреженных систем линейных уравнений, основаны на единственном численном алгоритме, известном как метод Холесского, - симметричном варианте гауссова исключения, скроенном для симметричных положительно определенных матриц. Метод Холесского применяется для решения систем уравнений, которые задаются следующим соотношением

, (6.2)

где - симметричная положительно определенная матрица коэффициентов, b – вектор длины N, называемый правой частью, а x – вектор-решение длины N, компоненты которого необходимо вычислить. Применение к А метода Холесского приводит к треугольному разложению

, (6.3)

где L – нижняя треугольная матрица с положительными диагональными элементами. Матрица М называется нижней (верхней) треугольной, если mij=0 для i < j (i > j). Верхний индекс T указывает на операцию транспонирования. Разложение ( ) всегда существует, если матрица А положительно определена.

Подставляя ( ) в ( ), имеем

. (6.4)

Замена показывает, что x можно получить, решая треугольные системы

(6.5)

и

. (6.6)

При применении метода Холесского, матрица А обычно претерпевает заполнение. Это означает, что вектор L имеет ненулевые элементы в позициях, где в нижней треугольной части A стояли нули.

Таким образом, можно выделить четыре этапа всего вычислительного процесса: упорядочение, распределение памяти, разложение и решение.

Память, используемая для хранения разреженных матриц, обычно состоит из двух частей: основной памяти, содержащей числовые значения, и накладной памяти, где хранятся указатели, индексы и другая информация, нужная для запоминания структуры матрицы и облегчения доступа к числовым значениям.

Способ хранения матрицы L можно выбрать до реального численного разложения, также как и зарезервировать место для элементов заполнения. Дальнейшие вычисления затем производят при структуре хранения, остающейся статичной (неизменной). Таким образом, три задачи:

        1. выбор надлежащего упорядочения;

        2. формирование подходящей схемы хранения;

        3. реальные вычисления могут быть разделены как самостоятельные объекты исследования и как разные модули программного обеспечения.

Итак, рассмотрев вышеописанные вопросы, можно сделать следующие выводы. Весь процесс решения системы состоит из четырех основных этапов. Доля общего машинного времени, приходящаяся на каждый из них, в общем случае существенно меняется в зависимости от упорядочения и схемы хранения. В соответствии с обстоятельствами конкретной задачи время исполнения некоторых из упомянутых этапов может быть практически несущественным при сравнении различных методов.

6.3. Программирование оптимизационных задач

Для непосредственного поиска минимума функции f(x) в некотором интервале a < x < b, в котором, как предполагается, лежит минимум, используются различные численные методы.

Однако, как уже упоминалось выше, большинство оптимизационных задач относятся к классу задач нелинейного программирования, с целью успешного решения которых применяются модифицированные методы прямого поиска. При этом было выдвинуто предположение, что для этого будет вполне достаточно при решении задачи минимизации присвоить целевой функции очень большое значение там, где нарушаются ограничения. К тому же такую идею просто реализовать с точки зрения программирования. Необходимо проверить, каждая ли точка, полученная в процессе поиска, принадлежит области ограничений. Если каждая, то целевая функция вычисляется обычным путем. Если нет, то целевой функции присваивается очень большое значение. Таким образом, поиск будет осуществляться снова в допустимой области в направлении к минимальной точке внутри этой области. В цехе имеется токарный станок и станок-автомат. Цех выпускает детали 1,2 и 3 в комплекте: на каждую деталь 1 – по 2 детали 2 и 3. Часовая производительность станков по каждой из деталей приведена в таблице:

Таблица 2

Часовая производительность станков

Станки

Детали

1

2

3

1.Токарный

5

5

10

2.Автомат

15

15

10

Составить программу работы станков, при которой в течение смены (8 часов) будет выпускаться максимальное количество комплектов деталей.