Решение неявных уравнений

Определение неявного уравнения

Ваша модель может содержать одно или несколько уравнений не являющихся дифференциальными. Например, алгебраические (x2+3x+2=0), трансцендентные (x-cos(x)=0) и тд. Подобные уравнения требует наличия специальных неявных решателей. Явный решатель способен отыскать следующую точку, только в том случае, если она определяется по нескольким предыдущим значениям и приращениям. Решить же приведенные уравнения явный решатель не может (нет ни одной производной). Численное решение данных уравнений предполагает использование многошаговых (итерационных) методов подбора. На каждом шаге приближения, при новом значении приращения координаты "x" (относительно предыдущего значения), оценивается близость к балансу левой и правой части уравнения. Те, по сути, неявный решатель, оценивая величину приближения к балансу, решает уже дифференциальное уравнение, заменив им исходное.

Методика перехода от неявного уравнения к явному

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

Использование неявного решателя

Следующие шаги являются ключевыми при построении блок-схемы неявного уравнения и его решении в программе VisSim:

  1. Выполните преобразование неявного уравнения, в результате которого его правая часть будет равна нулю.
  2. Установите на рабочем поле блоки неизвестная и нулевойБаланс.
  3. Используя выход блока неизвестная, составьте блок-схему левой части уравнения.
  4. Результат преобразований левой части подключите к входу блока нулевойБаланс.
  5. Подайте на блок неизвестная произвольное начальное значение.
  6. Выполните симуляцию. Буден найден первый корень (если он существует). Если интегрирующие элементы в блок-схеме отсутствуют, то время симуляции и величина шага могут быть любыми. Если качественный анализ уравнения показывает, что уравнение имеет не один корень, то, меняя начальное значение, повторяйте симуляцию, пока не будут найдены все корни.

Алгебраические циклы

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

Алгебраический цикл

Реальные системы всегда обладают инерционными свойствами. Поэтому более точная математическая модель не будет содержать алгебраических циклов. VisSim не умеет их решать, и выдает при их обнаружении предупредительные сообщения. Для преодоления этого затруднения необходимо установить в петлю хотя бы одно инерционное звено. Те в петле должен просматриваться один из блоков: 1/S (интегратор), 1/Z (регистр задержки), e-sTd (звено чистого запаздывания), передаточнаяФункция, или пространствоСостояний (у последних порядок числителя должен быть меньше порядка знаменателя).

Настройки неявного решателя

Для решения неявного уравнения Вы можете использовать решатель Ньютона-Рафсона или свой собственный откомпилированный в dll-библиотеку. При использовании неявного решателя Ньютона-Рафсона можно задать: допуск ошибки, максимальное количество итераций, величину итеративного шага и оценочного возмущения.

Для выбора и настройки неявного решателя выполните действия:

  1. Выберите команду меню Симуляция > Настройки симуляции.
  2. В диалоговом окне "Настройки симуляции" выберите вкладку "Неявный решатель".
  3. Выберите решатель и (при необходимости) откорректируйте параметры.
  4. Нажмите на кнопку OK или клавишу ENTER.

Опция

Описание действия

Не активирован

Если Ваша модель не содержит неявных уравнений, установите переключатель в это положение

Ньютона-Рафсона

Эта позиция переключателя активирует неявный решатель Ньютона-Рафсона, который выполняет статическую оптимизацию на каждом временном шаге. Решатель численно вычисляет N-мерный наклон, воздействуя на модель выходными сигналами блоков неизвестная, и наблюдая эффекты на входах блоков нулевойБаланс. При этом используется наклонная матрица, для поиска минимума. Решатель Ньютона-Рафсона особенно полезен для решения статических уравнений в присутствии параллельной динамики

Пользователя

Эта позиция переключателя активирует неявный решатель пользователя. В текущей директории, VisSim будет искать файл vsolver.dll, который должен быть создан Вами на языке программирования высокого уровня (Си++, Паскаль, Фортран, ... ), в соответствии с Приложением А руководства пользователя программы VisSim

Подавление предупреждений

Если вы решаете уравнение, имеющее равноотстоящие от нуля корни (например, (x-2) (x+2) = 0), то чтобы вынудить решатель к схождению, Вам следует подать на вход блока неизвестная отличное от нуля начальное значение. Если решатель не достигает заданного допуска ошибки (не получает решения) за указанное число итераций, то им выводится сообщение об отсутствии (или о плохой) сходимости. Для подавления этих предупреждений при решении неявной системы с нелинейной динамикой следует активизировать опцию "Подавить предупреждения"

Max (итераций)

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

Допуск ошибки

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

Задавая допуск ошибки и количество итераций, Вы можете управлять временем поиска решения. Чем больше допуск, тем быстрее поиск и грубее решение. Значение по умолчанию - 0.0001

Relaxation

В этой строке ввода Вы можете уменьшить значение итеративной (меняемой) величины в целях достижения сходимости при решении трудно сходящихся уравнений. Побочный эффект проявляется в замедлении процесса сходимости, поскольку решатель вынужден уменьшить величину итеративного шага. Параметр должен принадлежать диапазону (0..2]. Выберите значение меньшее 1 для колебательных систем (для трудно сходящихся уравнений). Значение по умолчанию - 1

Возмущение (Perturbation)

В этой строке ввода Вы можете определить значение возмущающей величины, которая посредствам блоков неизвестная подается в модель для оценки Якобиана (матрицы первых частных производных). Каждый элемент Якобиана есть отношение изменения величины на входе блока нулевойБаланс к значению возмущения генерированного соответствующим блоком неизвестная. Верхний предел величины возмущения на один порядок ниже начального значения на входе блока неизвестная, нижний - еще на 11 порядков ниже. Значение по умолчанию - 1e-007

Примеры неявных уравнений

Примеры решений неявных уравнений см. в главе 7 Руководства пользователя программы VisSim.