Это набросок того, что я узнал о POLY. Я не уверен, что всё абсолютно точно, поэтому не стесняйтесь и исправляйте.
Различные версии SPICE используют разные методы моделирования нелинейных зависимых источников, например ASRC, Bxxxx, Exxxx, Gxxxx, Fxxxx, Hxxxx и т. д.
Некоторые, например NGspice, используют произвольные выражения с блоками условий, другие, например GNUcap, используют полиномы и аппроксимацию кривых. Функции POLY, видимо, являются здесь наименьшим общим знаменателем, однако в SPICE3 они не поддерживаются. Полиномы были первым средством, используемым для аппроксимации нелинейных зависимостей, потому что эти функции работают хорошо, и SPICE может легко найти производную в какой-либо точке, используемой в числовых методах решения. Отрицательная сторона здесь — необходимость кое-какой дополнительной работы в других программах для получения коэффициентов своего полиномиального выражения.
Вот несколько общих проблем с полиномиальными аппроксимациями:
Другой метод – использование произвольных выражений с чем-то вроде функциональности 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
Я думаю, для аппроксимации кривых можно использовать такие программы, как Gnuplot, Grace или Simfit.
Учтите, чтобы конструкция POLY поддерживалась в программе Ngspice, при её сборке нужно установить некоторые ключи. Смотрите http://www.brorson.com/gEDA/SPICE/x496.html.
— Clif Eugene 2010/11/23 01:31