exponenta event banner

ddeset

Создание или изменение структуры опций дифференциальных уравнений задержки

Синтаксис

options = ddeset('name1',value1,'name2',value2,...)
options = ddeset(oldopts,'name1',value1,...)
options = ddeset(oldopts,newopts)
ddeset

Описание

options = ddeset('name1',value1,'name2',value2,...) создает структуру опций интегратора options в котором именованные свойства имеют указанные значения. Все неопределенные свойства имеют значения по умолчанию. Достаточно ввести только первые символы, однозначно идентифицирующие свойство. ddeset игнорирует регистр для имен свойств.

options = ddeset(oldopts,'name1',value1,...) изменяет существующую структуру опций oldopts. Это перезаписывает любые значения в oldopts которые указаны с использованием пар имя/значение и возвращают измененную структуру в качестве выходного аргумента.

options = ddeset(oldopts,newopts) объединяет существующую структуру опций oldopts с новой структурой опций newopts. Любые значения, установленные в newopts перезаписать соответствующие значения в oldopts.

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

Можно использовать функцию ddeget для запроса options структура для значения определенного свойства.

Свойства DDE

В следующих разделах описаны свойства, которые можно задать с помощью ddeset. Существует несколько категорий свойств:

Свойства управления ошибками

На каждом шаге решатели DDE оценивают ошибку e. dde23 функция оценивает локальную ошибку усечения, а другие решатели оценивают остаток. В любом случае эта ошибка должна быть меньше или равна допустимой ошибке, которая является функцией указанного относительного допуска. RelTolи указанный абсолютный допуск, AbsTol.

|e(i)|*max(RelTol*abs(y(i)),AbsTol(i))

Для рутинных проблем решатели обеспечивают точность, примерно эквивалентную точности, которую вы запрашиваете. Они обеспечивают меньшую точность для проблем, интегрированных в «длинные» интервалы, и проблем, которые умеренно нестабильны. Сложные проблемы могут потребовать более жестких допусков, чем значения по умолчанию. Для относительной точности отрегулируйте RelTol. Для абсолютного допуска ошибки важно масштабирование компонентов решения: если |y| несколько меньше, чем AbsTol, решатель не имеет ограничений на получение правильных цифр в y. Для определения масштаба компонентов решения может потребоваться решить проблему несколько раз.

Грубо говоря, это означает, что вы хотите RelTol правильные цифры во всех компонентах решения, кроме тех, которые меньше пороговых значений AbsTol(i). Даже если компонент не интересует y(i) когда он небольшой, вам, возможно, придется указать AbsTol(i) достаточно маленький, чтобы получить некоторые правильные цифры в y(i) чтобы можно было точно вычислить более интересные компоненты.

В следующей таблице описаны свойства управления ошибками.

Свойства управления ошибками DDE

Собственность

Стоимость

Описание

RelTol

Положительный скаляр {1e-3}

Относительный допуск ошибки, применяемый ко всем компонентам вектора решения y. Это мера ошибки относительно размера каждого компонента решения. Грубо говоря, он управляет количеством правильных цифр во всех компонентах решения, кроме тех, которые меньше пороговых значений. AbsTol(i). Значение по умолчанию, 1e-3, соответствует точности 0,1%.

Оценочная ошибка в каждом шаге интегрирования удовлетворяет |e(i)|max(RelTol*abs(y(i)),AbsTol(i)).

AbsTol

Положительный скаляр или вектор {1e-6}

Абсолютные допуски ошибок, применяемые к отдельным компонентам вектора решения. AbsTol(i) - порог, ниже которого значение i-й компонент раствора неважен. Абсолютные допуски ошибок определяют точность, когда решение приближается к нулю. Даже если компонент не интересует y(i) когда он небольшой, вам, возможно, придется указать AbsTol(i) достаточно маленький, чтобы получить некоторые правильные цифры в y(i) чтобы можно было точно вычислить более интересные компоненты.

Если AbsTol - вектор, длина AbsTol должна совпадать с длиной вектора раствора y. Если AbsTol является скаляром, значение применяется ко всем компонентам y.

NormControl

on | {off}

Ошибка управления относительно нормы решения. Задать это свойство on запросить, чтобы решатели управляли ошибкой на каждом шаге интеграции с norm(e)<= max(RelTol*norm(y),AbsTol). По умолчанию решатели используют более строгий компонентный контроль ошибок.

Выходные свойства решателя

Свойства вывода решателя можно использовать для управления выводом, который генерируют решатели.

Выходные свойства решателя DDE

Собственность

Стоимость

Описание

OutputFcn

Дескриптор функции {@odeplot}

Функция вывода - это функция, которую решатель вызывает после каждого успешного шага интеграции. Чтобы задать функцию вывода, установите 'OutputFcn' к дескриптору функции. Например,

options = ddeset('OutputFcn',...
@myfun)

наборы "OutputFcn'to @ myfun, дескриптор функции myfun. Дополнительные сведения см. в разделе Создание дескриптора функции.

Функция вывода должна иметь вид

status = myfun(t,y,flag)

Параметризация функций объясняет, как предоставить дополнительные параметры myfun, при необходимости.

Решатель вызывает указанную функцию вывода со следующими флагами. Обратите внимание, что синтаксис вызова отличается от флага. Функция должна отвечать соответствующим образом:

  • init - Вызовы решателя myfun([tspan(1) tspan(end)],y0,'init') перед началом интеграции для инициализации функции вывода. tspan является входным аргументом для решателей. y0 - начальное значение решения, либо от history(t0) или указано в initialY вариант.

  • {none} - вызов решателя status = myfun(t,y) после каждого шага интеграции, на котором запрашивается выходной сигнал. t содержит точки, в которых вывод был сгенерирован во время шага, и y - числовое решение в точках в t. Если t является вектором, i4-я колонна y соответствует i-й элемент t.

    myfun должен возвращать status выходное значение 0 или 1. Если status = 1решатель останавливает интеграцию. Этот механизм можно использовать, например, для реализации кнопки Stop.

  • done - вызовы решателя myfun([],[],'done') когда интеграция завершена, что позволяет функции вывода выполнять любые работы по очистке.

Эти общие функции вывода можно использовать или редактировать для создания собственных. Напечатать help functionname в командной строке для получения дополнительной информации.

  • odeplot - печать временных рядов (по умолчанию при вызове решателя без выходного аргумента и при отсутствии функции вывода)

  • odephas2 - печать двумерной фазовой плоскости

  • odephas3 - построение трехмерной фазовой плоскости

  • odeprint - печать решения по мере того, как решатель вычисляет его

OutputSel

Вектор индексов

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

options = ddeset...
('OutputFcn',@odeplot,...
'OutputSel',[1 3]);

По умолчанию решатель передает все компоненты решения функции вывода.

Stats

on | {off}

Указывает, должен ли решатель отображать статистику о своих вычислениях. По умолчанию Stats является off. Если это так on, после решения задачи решатель отображает:

  • Количество успешных шагов

  • Число неудачных попыток

  • Количество вызовов функции DDE

Свойства размера шага

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

В следующей таблице описаны свойства размера шага.

Свойства размера шага DDE

Собственность

Стоимость

Описание

InitialStep

Положительный скаляр

Предлагаемый начальный размер шага. InitialStep задает верхнюю границу величины размера первого шага, который пытается выполнить решатель. Если не установлен InitialStep, решатель основывает начальный размер шага на наклоне решения в начальный момент времени tspan(1). Начальный размер шага ограничен самой короткой задержкой. Если наклон всех компонентов решения равен нулю, процедура может использовать слишком большой размер шага. Если вы знаете, что это происходит, или хотите убедиться, что решатель разрешает важные действия в начале интеграции, помогите коду начать, предоставив подходящий InitialStep.

MaxStep

Положительный скаляр
{0.1*
abs(t0-tf)
}

Верхняя граница для размера шага решателя. Если дифференциальное уравнение имеет периодические коэффициенты или решения, может быть хорошей идеей установить MaxStep к некоторой фракции (например, 1/4) периода. Это гарантирует, что решатель не слишком увеличивает временной шаг и шаг в течение интересующего периода. Не уменьшать MaxStep:

  • Когда решение кажется недостаточно точным. Вместо этого уменьшите относительный допуск ошибки RelTolи используйте только что вычисленное решение для определения соответствующих значений для абсолютного вектора допусков ошибок AbsTol. (Описание свойств допуска ошибок см. в разделе Свойства управления ошибками.)

  • Чтобы убедиться, что решатель не перешагнул некоторые действия, которые происходят только один раз в течение интервала моделирования. Если известно время, в которое происходит изменение, разбейте интервал моделирования на две части и дважды вызовите решатель. Если время, в которое происходит изменение, неизвестно, попробуйте уменьшить допуски ошибок RelTol и AbsTol. Использовать MaxStep в крайнем случае.

Свойство местоположения события

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

Следующая таблица описывает Events собственность.

Свойство событий DDE

Собственность

Стоимость

Описание

Events

Дескриптор функции

Дескриптор функции, включающий одну или несколько функций события. Для dde23 и ddesd, эта функция имеет следующий синтаксис:

[value,isterminal,direction] = events(t,y,YDEL)

Для ddensd, синтаксис:

[value,isterminal,direction] = events(t,y,YDEL,YPDEL)

Выходные аргументы, value, isterminal, и direction, являются векторами, для которых i-й элемент соответствует iФункция события:

  • value(i) - значение iФункция «-е событие».

  • isterminal(i) = 1 если вы хотите, чтобы интеграция заканчивалась на нуле этой функции события, и 0 в противном случае.

  • direction(i) = 0 если решатель должен найти все нули (по умолчанию), +1 если нули только там, где увеличивается функция события, и -1 если нули только там, где функция события уменьшается.

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

  • sol.xe - вектор строк времени, в которое происходят события.

  • sol.ye - матрица, столбцы которой являются значениями решения, соответствующими временам в sol.xe.

  • sol.ie - вектор, содержащий индексы, указывающие, какое событие произошло в соответствующий момент времени в sol.xe.

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

Свойства прерывистости

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

В следующей таблице описаны свойства неоднородности.

Свойства дискретности DDE

Собственность

Стоимость

Описание

Jumps

Вектор

Расположение разрывов. Точки t, в которых история или решение могут иметь скачкообразный разрыв в производной низкого порядка. Это относится только к dde23 решатель.

InitialY

Вектор

Исходное значение раствора. По умолчанию начальным значением решения является значение, возвращаемое history в начальной точке. Укажите другое начальное значение в качестве значения InitialY собственность.

Примеры

Создание структуры опций, которая изменяет относительный допуск ошибки решателя от значения по умолчанию 1e-3 кому 1e-4, введите

options = ddeset('RelTol',1e-4);

Восстановление значения 'RelTol' от options, введите

ddeget(options,'RelTol')

ans =

  1.0000e-004
Представлен до R2006a