//Ðта Ñтраница доÑтупна также на Ñледующих Ñзыках:// [[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//