//Эта страница доступна также на следующих языках:// [[spice_polys|English]]

====== Конструкции SPICE POLY ======

Это набросок того, что я узнал о POLY. Я не уверен, что всё абсолютно точно,
поэтому не стесняйтесь и исправляйте.

Различные версии SPICE используют разные методы моделирования нелинейных
зависимых источников, например ASRC, Bxxxx, Exxxx, Gxxxx, Fxxxx, Hxxxx и
т. д.

Некоторые, например NGspice, используют произвольные выражения с блоками
условий, другие, например GNUcap, используют полиномы и аппроксимацию
кривых. Функции POLY, видимо, являются здесь наименьшим общим знаменателем,
однако в SPICE3 они не поддерживаются. Полиномы были первым средством,
используемым для аппроксимации нелинейных зависимостей, потому что эти
функции работают хорошо, и SPICE может легко найти производную в какой-либо
точке, используемой в числовых методах решения.  Отрицательная сторона здесь
--- необходимость кое-какой дополнительной работы в других программах для
получения коэффициентов своего полиномиального выражения.

Вот несколько общих проблем с полиномиальными аппроксимациями:

  - Они быстро становятся бесполезными вне ограниченной области.  Действительно, поскольку модели BSIM используют полиномиальные приближения в некоторых расчётах, они склонны к нефизическому поведению в рабочих точках вне области их аппроксимации.
  - Чтобы получить приличную аппроксимацию функции, форма которой «не очень похожа на полином», в полиноме должно быть много членов.

Другой метод -- использование произвольных выражений с чем-то вроде
функциональности //if-then-else// или кусочно-линейных функций. Их проще
формулировать, но в этом случае существует риск потери непрерывности, что
может вызвать серьёзные проблемы со сходимостью. Однако они гораздо более
удобны для того, чтобы наспех что-нибудь скомпоновать.

Большие усилия потрачены на получение лучшего из обеих сфер. Функции
кусочно-линейной аппроксимации PWL (piecewise linear functions) часто
используют маленькие кривые для сглаживания переходов от одной производной к
следующей. И выражения, в которых используются функции //if-then-else//,
строятся таким образом, чтобы получались плавные переходы между разными
значениями. Вообще, в библиотеках полиномиальные аппроксимации используются
там, где это можно сделать, и ограничиваются теми областями, где они
полезны.  Примерами этого в Gnucap являются операторы ''fit'' и ''table''.

Однако, если вы хотите попробовать свои модели в других версиях SPICE, вам,
вероятно, придётся дополнительно потрудиться, чтобы описать их поведение в
элементах оператора POLY, который, к сожалению, (на момент данного
написания) недостаточно хорошо документирован ни в Ngspice, ни в Gnucap.
Приведу здесь одно место, где есть документация:

http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/secC.html

Я думаю, для аппроксимации кривых можно использовать такие программы, как
[[http://www.gnuplot.info|Gnuplot]],
[[http://plasma-gate.weizmann.ac.il/Grace|Grace]] или
[[http://www.simfit.man.ac.uk|Simfit]].

Учтите, чтобы конструкция POLY поддерживалась в программе Ngspice, при её
сборке нужно установить некоторые ключи. Смотрите
[[http://www.brorson.com/gEDA/SPICE/x496.html]].


 --- //[[clif@eugeneweb.com|Clif Eugene]] 2010/11/23 01:31//
