реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Построение функции по графику, формула для графика
Stefan1
сообщение Sep 30 2011, 10:57
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 414
Регистрация: 7-04-11
Из: Москва
Пользователь №: 64 187



Здравствуйте!
Подскажите как можно по графику построить функцию? Мне нужно построить формулу, которая довольно точно опишет этот график:
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
V_G
сообщение Sep 30 2011, 11:15
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Это действие называется аппроксимация. Различные виды аппроксимаций проходят по математике на 1-2 курсах института. Вам стоит для начала определиться с видами аппроксимирующих функций. Часто в их качестве используют полиномы.
Go to the top of the page
 
+Quote Post
Stefan1
сообщение Sep 30 2011, 11:24
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 414
Регистрация: 7-04-11
Из: Москва
Пользователь №: 64 187



Цитата(V_G @ Sep 30 2011, 15:15) *
Это действие называется аппроксимация. Различные виды аппроксимаций проходят по математике на 1-2 курсах института. Вам стоит для начала определиться с видами аппроксимирующих функций. Часто в их качестве используют полиномы.

Я пробовал аппроксимировать через полином 9 степени в программе advanced grapher - не получается, т.к. слишком большое отклонение. Гиперболическая тоже не подходит. Здесь нужна какая-то сложная функция, как мне кажется.

Сообщение отредактировал Stefan1 - Sep 30 2011, 11:24
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение Sep 30 2011, 11:25
Сообщение #4





Guests






Приблизительно: Y=60*e^(-X/4)+5
Go to the top of the page
 
+Quote Post
ataradov
сообщение Sep 30 2011, 11:54
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



Расскажите что такое "довольно точно" и дайте данные в виде таблицы хотябы.
Go to the top of the page
 
+Quote Post
Stefan1
сообщение Sep 30 2011, 14:05
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 414
Регистрация: 7-04-11
Из: Москва
Пользователь №: 64 187



Цитата(Taradov Alexander @ Sep 30 2011, 15:54) *
Расскажите что такое "довольно точно" и дайте данные в виде таблицы хотябы.

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

Прикрепленное изображение


Сообщение отредактировал Stefan1 - Sep 30 2011, 14:12
Go to the top of the page
 
+Quote Post
_Anatoliy
сообщение Sep 30 2011, 14:39
Сообщение #7


Утомлённый солнцем
******

Группа: Свой
Сообщений: 2 646
Регистрация: 15-07-06
Из: г.Донецк ДНР
Пользователь №: 18 832



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

Прикрепленное изображение


Есть такая программа,TableCurve называется,выдаст вам несколько тысяч вариантов и каждый со своей погрешностью.Ищите...
Go to the top of the page
 
+Quote Post
Alex11
сообщение Sep 30 2011, 14:43
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



Вы не подберете функцию по Вашим данным - они не лежат на плавной кривой. Если Вам нужны именно эти точки - то только аппроксимация сплайнами по кускам. Если немного подвинуть точки, то кое-что получается, хотя, конечно, и не 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
Go to the top of the page
 
+Quote Post
Stefan1
сообщение Sep 30 2011, 18:44
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 414
Регистрация: 7-04-11
Из: Москва
Пользователь №: 64 187



Цитата(_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

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

Сообщение отредактировал Stefan1 - Sep 30 2011, 18:49
Go to the top of the page
 
+Quote Post
ataradov
сообщение Sep 30 2011, 18:54
Сообщение #10


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



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

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

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

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--');
Go to the top of the page
 
+Quote Post
Stefan1
сообщение Sep 30 2011, 19:02
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 414
Регистрация: 7-04-11
Из: Москва
Пользователь №: 64 187



Цитата(Taradov Alexander @ Sep 30 2011, 22:54) *
А что вы с этой функцией потом делать собираетесь? получать значение в произвольных точках? Или хочется сэкономить место и просто восстанавливать эти значения?

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

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

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

Сообщение отредактировал Stefan1 - Sep 30 2011, 19:07
Go to the top of the page
 
+Quote Post
ataradov
сообщение Sep 30 2011, 19:08
Сообщение #12


Профессионал
*****

Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202



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

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

Так что если вы уточните какой именно софт потом эту функцию будет использовать, может еще чем поможем.
Go to the top of the page
 
+Quote Post
Stefan1
сообщение Sep 30 2011, 19:12
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 414
Регистрация: 7-04-11
Из: Москва
Пользователь №: 64 187



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

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

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

Софт - матлаб.
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение Sep 30 2011, 20:01
Сообщение #14





Guests






Stefan1, а Вы уверены, что необходимо такое точное совпадение функции с исходными данными?
По моему, стоит оценить, какой вклад вносит это выражение в результаты моделирования. Вполне возможно, что и точность в 5-10% Вас устроит.
Тогда лучше поискать более точные коэффициенты (A,B,C) для наиболее простого выражения вида Y=А*e^(-B*X)+C. И на этом остановиться.
Go to the top of the page
 
+Quote Post
Stefan1
сообщение Oct 2 2011, 17:47
Сообщение #15


Местный
***

Группа: Участник
Сообщений: 414
Регистрация: 7-04-11
Из: Москва
Пользователь №: 64 187



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

Хочется по-точнее, т.к нужно добиться максимального совпадения экспериментального результата с расчетом. Сложно пока оценить какой вклад вносит это выражение в результаты моделирования, т.к. есть ещё аналогичные выражения, влияющие на результат.

Сообщение отредактировал Stefan1 - Oct 2 2011, 18:05
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 20:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.015 секунд с 7
ELECTRONIX ©2004-2016