Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Построение функции по графику
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Математика и Физика
Stefan1
Здравствуйте!
Подскажите как можно по графику построить функцию? Мне нужно построить формулу, которая довольно точно опишет этот график:
Нажмите для просмотра прикрепленного файла
V_G
Это действие называется аппроксимация. Различные виды аппроксимаций проходят по математике на 1-2 курсах института. Вам стоит для начала определиться с видами аппроксимирующих функций. Часто в их качестве используют полиномы.
Stefan1
Цитата(V_G @ Sep 30 2011, 15:15) *
Это действие называется аппроксимация. Различные виды аппроксимаций проходят по математике на 1-2 курсах института. Вам стоит для начала определиться с видами аппроксимирующих функций. Часто в их качестве используют полиномы.

Я пробовал аппроксимировать через полином 9 степени в программе advanced grapher - не получается, т.к. слишком большое отклонение. Гиперболическая тоже не подходит. Здесь нужна какая-то сложная функция, как мне кажется.
@Ark
Приблизительно: Y=60*e^(-X/4)+5
ataradov
Расскажите что такое "довольно точно" и дайте данные в виде таблицы хотябы.
Stefan1
Цитата(Taradov Alexander @ Sep 30 2011, 15:54) *
Расскажите что такое "довольно точно" и дайте данные в виде таблицы хотябы.

Чем точнее, тем лучше. В принципе сходимость с таблицей в числах до запятой (т.е. в целых числах) была бы идеальной.
Нажмите для просмотра прикрепленного файла
_Anatoliy
Цитата(Stefan1 @ Sep 30 2011, 15:05) *
Чем точнее, тем лучше. В принципе сходимость с таблицей в числах до запятой (т.е. в целых числах) была бы идеальной.
Нажмите для просмотра прикрепленного файла


Есть такая программа,TableCurve называется,выдаст вам несколько тысяч вариантов и каждый со своей погрешностью.Ищите...
Alex11
Вы не подберете функцию по Вашим данным - они не лежат на плавной кривой. Если Вам нужны именно эти точки - то только аппроксимация сплайнами по кускам. Если немного подвинуть точки, то кое-что получается, хотя, конечно, и не 2 точных знака:
CODE


57.595*exp(-col(A)/2.516)+8.807*exp(-col(A)/11.059)+6.222

0 73 72.624
1 52 52.97299
2 39.8 39.58308
3 31 30.4167
4 24 24.10317
5 20 19.7201
6 17 16.64648
7 14.2 14.46391
8 12 12.89027
10 10.7 10.86957
12 10 9.68632
14 9.2 8.92605
16 8.6 8.39418
18 8 7.99665
20 7.6 7.68582
25 7 7.14325
40 6.4 6.4586
70 6.3 6.2377
Stefan1
Цитата(_Anatoliy @ Sep 30 2011, 18:39) *
Есть такая программа,TableCurve называется,выдаст вам несколько тысяч вариантов и каждый со своей погрешностью.Ищите...

Благодарю, _Anatoliy!

Цитата(Alex11 date='Sep 30 2011, 18:39) *
Вы не подберете функцию по Вашим данным - они не лежат на плавной кривой. Если Вам нужны именно эти точки - то только аппроксимация сплайнами по кускам. Если немного подвинуть точки, то кое-что получается, хотя, конечно, и не 2 точных знака:
57.595*exp(-col(A)/2.516)+8.807*exp(-col(A)/11.059)+6.222

А как построить аппроксимацию сплайнами по кускам? Это уравнение я так понимаю и есть такая аппроксимация? Хотелось бы понять сам принцип построения таких функций.
ataradov
А что вы с этой функцией потом делать собираетесь? получать значение в произвольных точках? Или хочется сэкономить место и просто восстанавливать эти значения?

Для второго сплайны не годятся - места для хранения коэффициентов нужно будет еще больше чем для сырых данных.

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

CODE
x = [0,1,2,3,4,5,6,7,8,10,12,14,16,18,20,25,40,70];
y= [73, 52, 44, 31, 24, 20, 17, 16, 12, 10.7, 10, 9.2, 8.6, 8, 7.6, 7, 6.4, 6.3];

p = spline(x,y);
y1 = ppval(p, x);
figure; hold on; plot(x, y); plot(x, y1, 'r--');
Stefan1
Цитата(Taradov Alexander @ Sep 30 2011, 22:54) *
А что вы с этой функцией потом делать собираетесь? получать значение в произвольных точках? Или хочется сэкономить место и просто восстанавливать эти значения?

Для второго сплайны не годятся - места для хранения коэффициентов нужно будет еще больше чем для сырых данных.

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

Благодарю за информацию, Taradov Alexander! Функция эта нужна для задания зависимости проходной ёмкости LDMOS транзистора для расчёта его эквивалентной схемы.
ataradov
Сплайн - это все равно кусочно-заданная функция, так что вашу проблему они не решат, если вам нужно получить нормальную функцию для запихивания в моделирующий софт.

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

Так что если вы уточните какой именно софт потом эту функцию будет использовать, может еще чем поможем.
Stefan1
Цитата(Taradov Alexander @ Sep 30 2011, 23:08) *
Сплайн - это все равно кусочно-заданная функция, так что вашу проблему они не решат, если вам нужно получить нормальную функцию для запихивания в моделирующий софт.

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

Так что если вы уточните какой именно софт потом эту функцию будет использовать, может еще чем поможем.

Софт - матлаб.
@Ark
Stefan1, а Вы уверены, что необходимо такое точное совпадение функции с исходными данными?
По моему, стоит оценить, какой вклад вносит это выражение в результаты моделирования. Вполне возможно, что и точность в 5-10% Вас устроит.
Тогда лучше поискать более точные коэффициенты (A,B,C) для наиболее простого выражения вида Y=А*e^(-B*X)+C. И на этом остановиться.
Stefan1
Цитата(@Ark @ Oct 1 2011, 00:01) *
Stefan1, а Вы уверены, что необходимо такое точное совпадение функции с исходными данными?
По моему, стоит оценить, какой вклад вносит это выражение в результаты моделирования. Вполне возможно, что и точность в 5-10% Вас устроит.
Тогда лучше поискать более точные коэффициенты (A,B,C) для наиболее простого выражения вида Y=А*e^(-B*X)+C. И на этом остановиться.

Хочется по-точнее, т.к нужно добиться максимального совпадения экспериментального результата с расчетом. Сложно пока оценить какой вклад вносит это выражение в результаты моделирования, т.к. есть ещё аналогичные выражения, влияющие на результат.
xemul
Цитата(Stefan1 @ Oct 2 2011, 21:47) *
Хочется по-точнее, т.к нужно добиться максимального совпадения экспериментального результата с расчетом.

Тогда вопрос - сколько значащих цифр в экспериментальных данных? Бессмысленно добиваться точности аппроксимации большей, чем точность измерений.
Stefan1
Цитата(xemul @ Oct 2 2011, 22:02) *
Тогда вопрос - сколько значащих цифр в экспериментальных данных? Бессмысленно добиваться точности аппроксимации большей, чем точность измерений.

Порядок точности измерений - десятые доли. Так что здесь хорошо бы добиться совпадения целых чисел.
Stefan1
Используя программу TableCurve удалось получить функцию, наиболее точно совпадающую с точками из данной таблицы. Программа - отличная, вот только результат почему-то не сохраняет, точнее сохраняет, но в виде таблицы, что не очень наглядно. Спасибо всем за помощь!
i-mir
Цитата(Stefan1 @ Oct 2 2011, 20:47) *
Сложно пока оценить какой вклад вносит это выражение в результаты моделирования, т.к. есть ещё аналогичные выражения, влияющие на результат.


Цитата(Stefan1 @ Oct 4 2011, 12:09) *
Используя программу TableCurve удалось получить функцию, наиболее точно совпадающую с точками из данной таблицы.


Взгляните еще на регрессионный анализ. Кажется что вы задачу решаете не тем методом,
т.е. не строите качественную модель, а пытаетесь подобрать формулу для исходных данных.
Stefan1
Цитата(i-mir @ Oct 12 2011, 11:19) *
Взгляните еще на регрессионный анализ. Кажется что вы задачу решаете не тем методом,
т.е. не строите качественную модель, а пытаетесь подобрать формулу для исходных данных.

Эта зависимость нужна для описания емкости транзистора. А модель сама описывает поведение транзистора, когда он работает в режиме.
i-mir
Хорошо, другими словами.
Вы например получите: C,мкф = f (t,мс)
А что нужно получить ? Без цели,
дальнейшие рассуждения теряют смысл.
Stefan1
Цитата(i-mir @ Oct 28 2011, 12:47) *
Хорошо, другими словами.
Вы например получите: C,мкф = f (t,мс)
А что нужно получить ? Без цели,
дальнейшие рассуждения теряют смысл.

Получаю зависимость C, мкФ от U, В. Затем подставляю эту зависимость в эквивалентную схему транзистора. Эта схема имеет несколько нелинейных элементов, зависящих от U, один из них эта емкость. Таким образом я могу описать поведение транзистора при различных напряжениях. В частности можно посмотреть как изменяется импеданс транзистора.
sp1noza
Цитата(Stefan1 @ Nov 2 2011, 17:48) *
Получаю зависимость C, мкФ от U, В. Затем подставляю эту зависимость в эквивалентную схему транзистора. Эта схема имеет несколько нелинейных элементов, зависящих от U, один из них эта емкость. Таким образом я могу описать поведение транзистора при различных напряжениях. В частности можно посмотреть как изменяется импеданс транзистора.


В обычных нелинейных моделях (в стандартных) проходная емкость описывается формулой: Cgs = Cgs0/ sqrt(1- Vgs/Vgsi). Где Cgs0 – это значение емкости затвор-исток при Vgs = 0 В; Vgsi – потенциал поля барьера Шотки. Эта формула основа, обычно еще добавляют всякие разные сглаживающие функции (как в модели Statz или Raytheon). Посмотрите описание моделей Angelov, Statz, Curtice-Ettenberg и прочих, например, в help'e Agilent'a, возможно многие вопросы отпадут.
Stefan1
Цитата(sp1noza @ Nov 3 2011, 08:45) *
В обычных нелинейных моделях (в стандартных) проходная емкость описывается формулой: Cgs = Cgs0/ sqrt(1- Vgs/Vgsi). Где Cgs0 – это значение емкости затвор-исток при Vgs = 0 В; Vgsi – потенциал поля барьера Шотки. Эта формула основа, обычно еще добавляют всякие разные сглаживающие функции (как в модели Statz или Raytheon). Посмотрите описание моделей Angelov, Statz, Curtice-Ettenberg и прочих, например, в help'e Agilent'a, возможно многие вопросы отпадут.

Тут как раз дело в том, чтобы эту зависимость для емкости задать максимально совпадающей с реальной, т.к. и без этого в моделе много чего неточного. Как мне уже подсказали, я использовал программу TableCurve, где очень все хорошо получилось.
Andrey307
В матлабе есть функции апроксимации. Создается структура, содержащая коэффициенты полинома. Затем просто подставить их в аналитическую запись. Все это в пакете Spline toolbox вроде
antenna_hunter
Цитата(Andrey307 @ Nov 10 2011, 14:52) *
В матлабе есть функции апроксимации. Создается структура, содержащая коэффициенты полинома. Затем просто подставить их в аналитическую запись. Все это в пакете Spline toolbox вроде


А в качестве самого простого варианта в среде Matlab можно воспользоваться функцией polyfit, но "хороший" результат сложно получить для плохо обусловленной матрицы...
Stefan1
Цитата(Andrey307 @ Nov 10 2011, 14:52) *
В матлабе есть функции апроксимации. Создается структура, содержащая коэффициенты полинома. Затем просто подставить их в аналитическую запись. Все это в пакете Spline toolbox вроде

Я пробовал уже, но то, что хотел сделать - не получилось. В итоге нашел проще способ.
Андрей Алексеевич
Цитата(Stefan1 @ Sep 30 2011, 23:02) *
Благодарю за информацию, Taradov Alexander! Функция эта нужна для задания зависимости проходной ёмкости LDMOS транзистора для расчёта его эквивалентной схемы.

Stefan доброго времени суток, не могу отправить вам в личку сообщение. вопрос такой:как вы расчитываете эквивалентную схему транзистора? какие измерения делаете? какая методика. заранее благодарю.
Stefan1
Цитата(Андрей Алексеевич @ Dec 1 2012, 22:28) *
Stefan доброго времени суток, не могу отправить вам в личку сообщение. вопрос такой:как вы расчитываете эквивалентную схему транзистора? какие измерения делаете? какая методика. заранее благодарю.

Методика - ничего необычного:
1) Измеряем ВАХи.
2) Измеряем емкости кристалла транзистора.
3) Дальше измеряем индуктивности проволочек внутри корпуса транзистора (делаем тесты, например, для измерения проволочек между кристаллом и бортом).
4) Самое сложное - это измерение паразитных сопротивлений. В зарубежных статьях пишут, что вычисляют их из S параметров, но тут не все так просто, т.к. для мощных транзисторов их сложно мерить, нужно специальное оборудование. У нас его нет и мы эти сопротивления измеряем на малом сигнале и затем подгоняем, понятно, что точность при этом не ахти какая.
Андрей Алексеевич
Благодарю sm.gif
эх нужен приборчик для х параметров. и не париться с эквивалентными схемами
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.