8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 102 103 104 105 106 107 108 ... 365

Очень часто солвер ode45 дает вполне хорошие результаты, им стоит воспользоваться в первую очередь. Он основан на формулах Рунге—Кутты четвертого и пятого порядка точности. Солвер ode23 также основан на формулах Рунге—Кутты, но уже более низкого порядка точности. Имеет смысл применять ode23 в задачах, содержащих небольшую жесткость, когда требуется получить решение с невысокой степенью точности. Если же требуется получить решение нежесткой задачи с высокой точностью, то наилучший результат даст odell3, основанный на методе переменного порядка Адамса—Бэшфорта—Милтона. Солвер odeil3 оказывается особенно эффективным для нежестких систем дифференциальных уравнений, правые части которых вычисляются по сложным формулам. Все солверы пытаются найти решение с относительной точностью 1(Н и абсолютной— 1(Н. Хорошим тестом качества приближенного решения является увеличение точности вычислений (задание точности вычислений и ряда других параметров описано в следующем разделе).

Если все попытки применения ode45, ode23s, odell3 не приводят к успеху, то возможно, что решаемая система является жесткой. Для решения жестких систем подходит солвер odeiSs, основанный на многошаговом методе Гира, который допускает изменение порядка. Если требуется решить жесткую задачу с невысокой точностью, то хороший результат может дать солвер ode23s, реализующий одношаговый метод Розенброка второго порядка.

Простейшее использование вышеперечисленных солверов производится так же, как и odell3 (см. разд. "Схема решения задач с начальными условиями" данной главы).

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

Управление процессом решения

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

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


ode23, odell3, odel5s, ode23s, ode23t И ode23tb аналогичен тому, который вы применяли при нахождении корней функции или локальных минимумов. Значения параметров записываются в управляющую структуру, которая создается функцией odeset. В общем случае обращение к odeset имеет вид:

options = odeset(..., вид контроля, значение, ...)

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

Таблица 6.6. Параметры odeset

Группа

Имя параметра (вид контроля)

Контроль точности вычислений

RelTol, AbsTol, NormControl

Шаг интегрирования

InitialStep, MaxStep

Выходные данные

OutputFcn, OutputSel, Refine, Stats

Якобиан

Jacobian, JPattern. Vectorized

Матрица масс и матрица системы ОДУ

Mass, MStateDependence, MvPattern, MassSingular, InitialSlope

События

Events

Только для odel5s

MaxOrder, BDF

Структура с опциями солверов модифицируется так же, как и в случае с optimset при решении уравнений и минимизации функций:

options = odeset(options, ви д контроля, значение,...)

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

Функция odeget предназначена для извлечения значения свойства из структуры

значение = odeget(options, вид контроля)

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

Предназначение всех параметров солверов раскрыто в интерактивной справочной системе. Для получения этой информации обратитесь к описанию


функции odeset (воспользовавшись, например, индексным поиском на вкладке Index) и к разд. Mathematics: Differential Equations: Initial Value Problems for ODEs and DAEs: Changing ODE Integration Properties. Ряд опций солверов, к изменению которых приходится прибегать наиболее часто, мы рассмотрим в следующих нескольких разделах.

Задание точности вычислений и шага интегрирования

Точность вычислений оказывает существенное влияние на качество приближенного решения. Управляющие параметры солверов и их значения для данного вида контроля перечислены в табл. 6.7. Допускается два способа контроля точности в зависимости от значения параметра NormControi:

1.По локальной погрешности ei /-ой (у,) компоненты вектора решений, если параметр NormControi имеет значение off1 (по умолчанию).

2.По евклидовой норме погрешности, для NormControi, установленного в on.

В первом случае точность считается достигнутой при выполнении условий е; {tk )] < max{RelToiyf (tk ), AbsTol(i)} для всех компонент вектора решений на каждом шаге по времени tk . Во втором случае принимается во внимание суммарная характеристика для всех компонент решения — евклидова норма вектора ) (вычисляемая встроенной функцией norm)— и точность считается достигнутой, если на каждом шаге по времени tk выполняется неравенство <max{RelToly, AbsTol}. В случае покомпонентной оценки параметр AbsTol (абсолютная точность) может быть числом, если требуется задать фиксированную абсолютную точность для всех компонент решения. Для контроля абсолютной точности каждой компоненты следует указать вектор значений. Можно считать, что относительная точность RelTol определяет число верных значащих цифр во всех компонентах решения. Однако если среди компонент решения есть близкие к нулю, то для более точного их вычисления следует уменьшать соответствующий элемент вектора значений AbsTol.

Шаг интегрирования солвера определяется двумя свойствами:

□Maxstep — задает максимальный шаг (по умолчанию десятая часть промежутка интегрирования);

□mitialstep — задает начальный шаг, и если он не определен, то выбирается солвером с учетом начальных значений для вектора решений. При нулевых значениях шаг может оказаться слишком большим.



0 ... 102 103 104 105 106 107 108 ... 365