- •ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
- •Оглавление
- •1. ТЕОРЕТИЧЕСКИЙ РАЗДЕЛ
- •РАЗДЕЛ 1 ОБЩИЕ ВОПРОСЫ ТЕОРИИ МОДЕЛИРОВАНИЯ
- •Тема 1.3. Использование при моделировании типовых модулей динамических систем
- •Тема 1.4 Анализ расчетных схем, их приведение и упрощение
- •РАЗДЕЛ 2 ЧИСЛЕННЫЕ МЕТОДЫ РЕАЛИЗАЦИИ МАТЕМАТИЧЕСКИХ МОДЕЛЕЙ
- •Тема 2.3 Численное решение систем линейных и нелинейных уравнений
- •Тема 2.5 Точность и качество численного решения
- •РАЗДЕЛ 3. ФУНКЦИОНАЛЬНОЕ МОДЕЛИРОВАНИЕ ТРАНСПОРТНЫХ СРЕДСТВ
- •Тема 3.2 Моделирование силовых установок транспортных средств
- •Тема 3.3 Моделирование процесса трогания и разгона мобильных машин
- •Тема 3.4 Моделирование процесса торможения мобильных машин
- •Тема 3.5 Моделирование плавности хода транспортных средств
- •2. ПРАКТИЧЕСКИЙ РАЗДЕЛ
- •Лабораторное занятие № 1. Представление результатов моделирования в виде графических зависимостей
- •Лабораторное занятие № 2. Программное обеспечение для реализации математических моделей
- •Лабораторное занятие № 3. Моделирование законов управления исполнительными устройствами мобильных машин
- •Лабораторное занятие № 6. Численное решение систем линейных и нелинейных уравнений средствами MATLAB
- •Лабораторное занятие № 9. Моделирование трогания и разгона транспортного средства с электрическим приводом
- •Лабораторное занятие № 10. Моделирование трогания и разгона транспортного средства с двигателем внутреннего сгорания
- •Лабораторное занятие № 11. Моделирование торможения двухосной машины
- •Лабораторное занятие № 12. Моделирование торможения сочлененного трехосного транспортного средства
- •Лабораторное занятие № 13. Моделирование систем подрессоривания с линейными характеристиками
- •Лабораторное занятие № 15. Моделирование пневматических систем
- •Лабораторное занятие № 16. Моделирование гидравлических систем
- •Список рекомендуемой литературы
67
соответственно. Возмущающие воздействия на систему оказывает микро- и макропрофиль дороги, задаваемый некоторой функцией времени h(t).
Введем вспомогательные переменные x1 = z; x2 = z’; x3 = y; x4 = y’. Тогда система уравнений, приведенная к первому порядку, имеет вид:
x1′ = x2;
x2′ = (−kп (x2 − x4 ) −cп (x1 − x3 ))/ M ; x3′ = x4;
x4′ = (kп (x2 − x4 ) +cп (x1 − x3 ) −kш (x4 −h′(t)) −cш (x3 −h(t)))/ m.
Тема 2.5 Точность и качество численного решения
Понятие точности и качества компьютерного моделирования (численного реше-
ния).
Применительно к решению задач на ЭВМ точность – это степень близости выданного машиной результата к некоторому значению.
Причины возможной потери точности можно условно разделить на ошибки и погреш-
ности.
Ошибки. Это нарушение желаемого, правильного хода решения из-за невнимательности, недостаточной компетентности, иногда недобросовестности кого-либо из участников процесса решения или же сбоев в работе аппаратуры.
Заключать ошибку может уже сама постановка задачи, содержательная или математическая. Ошибка может быть в алгоритме или программе.
Погрешности. Являются неизбежным следствием определенных черт самой задачи, применяемых вычислительных методов и используемых вычислительных средств. различают абсолютнуюиотносительнуюпогрешность,которыеопределяютсяследующимобразом.Обозначим x* – истинное, x~ – его приближенное значение, которое мы можем практически получить.
Оценка сверху для модуля разности точного и приближенного значений называется
предельной абсолютной погрешностью:
∆x≥ x*-x~ .
Относительной погрешностьюназывают отношение δx=∆x/ x~ . Такая оценка может использоваться, если приближенное значение x~ не слишком мало по модулю.
Можно выделить четыре основные источника погрешностей.
1.Неполнота используемой модели. При моделировании всегда приходится отбирать для учета в модели определенный набор факторов, отсеивая незначащие, что носит субъективный характер. Специалист полагается не только на знания, но и на интуицию. В указанном выше понимании достаточно сложно провести грань между ошибкой (из-за недостаточной компетентности) и погрешностью.
2.Неточность входных параметров задачи. Значения параметров, чаще всего являю-
щиеся итогом каких-либо измерений или предшествующих вычислений, сами определены с некоторыми погрешностями. Это приводит к появлению так называемой неустранимой погрешности результата. Как правило, для ответа можно указать лишь область, где он должен находиться, причем размеры этой области тем больше, чем больше погрешности входных параметров и “коэффициент усиления погрешности от входа к выходу”. Иногда коэффициент усиления оказывается настолько велик, что весьма малой погрешности входных параметров
68
соответствует катастрофически большая погрешность ответа. Подобные задачи называют неустойчивыми, плохо обусловленными или некорректно поставленными.
3.Приближенный характер вычислительных методов. Большая часть численных ме-
тодов имеет именно такой характер. Принципиальная возможность вычислить решение какойлибо задачи абсолютно точно является отнюдь не правилом, а довольно редким исключением. Например, численной интегрирование никогда не даст истинного результата и т.д.
4.Округления при арифметических операциях. При выполнении арифметических опе-
раций на ЭВМ пропадают младшие разряды, вследствие чего результаты округляются. Хотя удельная точность каждой операции в большинстве случаев достаточно высокая, малые погрешности имеют тенденцию к накоплению при большом числе операций. Законы обычной арифметики - распределительный, переместительный, сочетательный и различные их следствия сохраняют силу лишь до тех пор, пока количество разрядов в представлении чисел не ограничивается. Например, совершенно очевидные тождества 1/(1/a)=a или a+b+c = c+b+a вполнемогутневыполнятьсявмашиннойарифметике.Например,требуетсявычислитьсумму 10000 членов геометрической прогрессии с начальным членом, равным 1.0 и знаменателем, равным 0,97 при 4-байтовом формате представления числа. Значение суммы, вычисленное по аналитической формуле, равно 0,5076142, при этом последний седьмой знак является верным. При непосредственном суммировании членов в порядке их убывания результат оказался равен 0,5075979, а при суммировании в обратном порядке, от последнего к первому – 0,5076137, т. е. лучше; погрешность оказалась в 33 раза меньше.
Особое внимание необходимо обращать на взаимодействие различных погрешностей.
Так, уточнение модели за счет учета дополнительных факторов уменьшает погрешность из-за неполноты, но может увеличить погрешность округлений (придется выполнить больше вычислительных операций) и погрешность методов (потребуются более сложные методы). Из-за вновь учтенного фактора в задаче может появиться элемент неустойчивости. Некоторые меры по уменьшению погрешности метода могут приводить к снижению общей точности из-за роста погрешностей округления.
Под качеством численного решения понимается степень соответствия между достигнутой точностью и объемом затрат всех или некоторых видов ресурсов. К понятию качества численного решения можно отнести и степень соответствия между заказанной, реально достигнутой и потенциально достижимой в данных условиях точностью. Наличие специальных методик потенциально позволяет ставить задачу оптимизации процесса решения в целом: достигнуть желательной точности при минимальных обобщенных затратах или же достигнуть наибольшей точности при заданном объеме обобщенных затрат. (Эти вопросы решает целевая функция, как структурная составляющая ММ).
Алгоритмы решения задач и связанная с ними точность.
Характеристики алгоритмов.
1.Определенность алгоритма. Алгоритм должен быть составлен так, чтобы при его реализации не возникали непредусмотренные тупики, один из способов ликвидации которых
–выдача на печать специальных сообщений при возникновении особых ситуаций. Необходимо четко обозначить конец счета или задать реализуемый критерий для выбора момента остановки.
2.Массовость и общность. Первое – это возможность использовать алгоритм для достаточно обширной части пространства исходных данных, второе – пригодность алгоритма для решения более или менее широкого круга сходных задач.
3.Правильность алгоритма. Способность алгоритма обеспечивать получение именно того результата, который требуется постановкой задачи.
Неправильность алгоритма может объясняться неполнотой наших представлений о свойствах математической модели или возможностях используемых численных методов, а
69
иногда и тем, что какие-либо обстоятельства просто-напросто упущены из виду или сочтены несущественными.
Доказать правильность более или менее сложного алгоритма аналитическими методами непросто. Для этого необходимо расчленить алгоритм на блоки и доказать правильность каждого из них. На практике чаще всего судят о правильности алгоритма по результатам выполнения программы, хотя такая проверка не является полной по двум основным причинам: во-первых, контрольные расчеты могут миновать некоторые ветви алгоритма и проверить только свободные от дефектов; во-вторых, отрицательный результат может быть следствием ошибок в программе.
4.Выполнимость. Алгоритм потенциально выполним, если при любыхдопустимых исходных данных и модификациях задачи результат может быть получен за конечное (хотя бы
иочень большое) время при использовании конечного (хотя бы и очень большого) объема памяти. На практике принято говорить о реальной выполнимости алгоритма, т. е. о возможности получить результат при допустимых затратах времени и (или) памяти.
5.Эффективность алгоритма. Из всех алгоритмов необходимо выбрать тот, который потребует наименьшего времени для реализации или наименьшей памяти. Чаще всего говорят о длительности счета, поэтому в качестве количественной оценки эффективности используют ориентировочный подсчет ожидаемого числа арифметических операций, особенно наиболее медленных – умножения и деления. Для некоторых численных методов число операций известно (например, метод Гаусса для решения СЛАУ), для других определяется верхняя граница количества вычислений.
Алгоритмическая погрешность.
Различают управляемую и неуправляемую составляющие погрешности.
Управляемая алгоритмическая погрешность – это совокупность погрешности метода и округления.
Неуправляемая составляющая погрешности – это входная погрешность задачи, складывающаяся из погрешности математического описания и неустранимой погрешности (из-за неточности входных данных), не может быть уменьшена никакими алгоритмическими мерами. Именно она определяет потенциально достижимую точность решения данной задачи. Реальная же точность будет хуже потенциально достижимой, чем больше алгоритмическая погрешность.
Обычно имеется ряд мер по уменьшению алгоритмической погрешности. В связи с чем следует сказать о целесообразной точности счета. Если известна, хотя бы ориентировочно, оценка входной погрешности, целесообразно так строить вычисления, чтобы алгоритмическая погрешность оказалась меньше входной, пусть, на один порядок. При этом фактически не вносится дополнительных ухудшений во врожденную неточность результата. Так как, если алгоритмическая погрешность окажется на несколько порядков ниже входной, это может означать бессмысленный перерасход машинного времени, памяти ЭВМ или времени на разработку алгоритма, так как неточность ответа по-прежнему будет определяться входной погрешностью. Таким образом напрашивается вывод: точность вычислений должна быть согласована с точностью постановки задачи.
На точность результата оказывает влияние декомпозиция алгоритма (расчленение алгоритма на совокупность более или менее автономных взаимодействующих блоков). При этом предшествующий результат вместе со всеми погрешностями, которыми сопровождается его получение, поступает на вход последующего блока. Происходит как бы смена ролей различных по своей природе составляющих погрешности: то, что на предшествующем этапе было алгоритмической погрешностью, превращается во входную на следующем этапе. Таким образом, высказанные выше соображения о целесообразной точности счета относятся и ко всей задаче в целом, и к отдельным подзадачам, на которые ее расчленили.
70
С точки зрения снижения общего уровня погрешностей округления имеется много тео-
ретических работ, однако это явление изученонедостаточно. Все-таки можно сформулировать несколько рекомендаций:
–избегать деления больших по модулю чисел на малые числа, если последние определяются с ощутимой погрешностью;
–избегать вычитания больших по модулю и близких чисел;
–при суммировании чисел с большим разбросом порядков начинать с наименьших.
Характер взаимодействия составляющих алгоритмической погрешности достаточно сложный и оценить априори, какие условия счета дадут минимум алгоритмической погрешности, редко удается, так как многие нужные для оценки сведения неизвестны. Однако очень важно сознавать, что подобный минимум реально существует.
Имеет место два подхода к определению оптимальных условий функционирования мо-
дели.
1.Решение специально подобранной опорной задачи, близкой к исходной и имеющей известный точный ответ, позволяет экспериментально выявить наиболее благоприятные для нее условия счета; далее делается предположение, что и для исходной задачи выявленные условия близки к оптимальным.
2.Задача просчитывается дважды, причем первый раз - заведомо грубо, при минимальной затрате вычислительных ресурсов, с целью ориентировочной оценки тех показателей, которые участвуют в определении оптимальных условий; второй же рабочий просчет ведется при выявленных таким путем оптимальных условиях.
Одним из путей решения проблем точности являются вычисления с увеличенной знач-
ностью.
С одной стороны, это колоссальное средство повышения точности, так при переходе от 4-байтного к 8-байтному представлению чисел удельная точность возрастает в 10 млрд. раз. С другой стороны, это связано с дополнительными ресурсами.
Во-первых, работа с увеличенной значностью требует дополнительных затрат памяти для размещения данных.
Во-вторых, способ реализации увеличенной значности определяет и то, насколько возрастает время выполнения операций. При чисто программном способе замедление может быть до 8–10 раз, при аппаратном – от 15–30 % для операций сложения и вычитания, до 3–4 раз для операций умножения и деления.
В связи с изложенным, прежде чем прибегнуть к этой возможности, необходимо взвесить, действительно ли это необходимо. В связи с чем необходимо учитывать, что:
–обращение к удлиненным форматам может отвлечь внимание разработчика алгоритма от других полезных путей;
–необходимо убедиться, что имеются необходимые стандартные подпрограммы для обработки удлиненных чисел с повышенной точностью. Отсутствие необходимой стандартной подпрограммы может сделать бесполезным прецизионное вычисление ее входных параметров;
–следует быть последовательным в выборе тех объектов, которые представляются в длинном формате и избегать контакта их с короткими числами, так ка точность при этом будет определяться точностью более короткого числа, т.е. использование удлиненного формата превращается в небесплатный самообман.
Меры предупреждения ошибок программирования.
1. Программирование «сверху вниз». Программа должна разрабатываться «сверху вниз» – от более общих моментов к частным. При написании программы рекомендуется вначале формировать сегменты более высокого уровня, постепенно переходя к сегментам низших уровней. Можно не только написать, но и отладить внешний сегмент до конкретизации внутренних. Для этого вместо внутренних сегментов используют так называемые заглушки –
71
простейшие программы, которые на данной стадии формально заменяют недостающие сегменты низшего уровня.
2.Составление перечня переменных. Позволяет избежать «диких» переменных, не получившихпредварительнонужныхчисленныхзначений (в ряде языковпрограммирования это осуществляется путем предварительного описания переменных и констант).
3.Визуальноеотображениеструктурыпрограммы.Имеется в виду выделение отдель-
ных сегментов и более малых структурно-логических единиц программы абзацными отступами на различное число позиций, пробелами в операторах, пропуском пустых строк.
В длинных арифметических выражениях рекомендуется для повышения наглядности использовать лишние пары скобок. На полях программы полезно обозначить линии передачи управления: связать начало и конец каждого цикла, указать стрелками маршруты условных и безусловных переходов.
4.Использование стандартных структур. Предполагает использование проверенных цикловых и условных структур. В частности, структурное программирование предполагает использование только стандартных структур. Полностью структурированные программы имеют древовидную структуру; обычно она намного яснее, создает меньше ловушек для программиста, провоцирующих логические ошибки, ее проще проверять и видоизменять.
5.Использованиешаблоновввода и вывода. Необходимо отработать для себя несколько шаблонов, а затем переносить их из программы в программу с минимальными изменениями – скажем, заменить одно поясняющее слово другим, количество колонок и т. д. Это позволит более быстро и без ошибок организовать ввод-вывод данных.
6.Эхо-вывод входных данных. Такая мера необходима для исключения ошибок из-за неправильного набора значений входных параметров (из-за возможных опечаток или нарушения порядка следования или форматов ввода данных).
7.Отладочная печать.Используется наряду с трассировкой программы для получения последовательности результатов, особенно при сложных алгоритмах и многократно повторяющихся циклах.
8.Отказ от изощренных приемов программирования. В частности, на ЭВМ с малыми ресурсами (быстродействием и памятью) нецелесообразно максимально использовать скрытые возможности машины и особенно задачи, чтобы сэкономить время или память за счет различного рода вывертов. Это усложняет алгоритм и в нем сложно разобраться даже автору, а также провоцируется ряд ошибок как синтаксических, так и логических, ограничиваются возможности использования программы на компьютерах с другими характеристиками.
