|
Построение функции по графику, формула для графика |
|
|
|
Sep 30 2011, 11:24
|
Местный
  
Группа: Участник
Сообщений: 414
Регистрация: 7-04-11
Из: Москва
Пользователь №: 64 187

|
Цитата(V_G @ Sep 30 2011, 15:15)  Это действие называется аппроксимация. Различные виды аппроксимаций проходят по математике на 1-2 курсах института. Вам стоит для начала определиться с видами аппроксимирующих функций. Часто в их качестве используют полиномы. Я пробовал аппроксимировать через полином 9 степени в программе advanced grapher - не получается, т.к. слишком большое отклонение. Гиперболическая тоже не подходит. Здесь нужна какая-то сложная функция, как мне кажется.
Сообщение отредактировал Stefan1 - Sep 30 2011, 11:24
|
|
|
|
Guest_@Ark_*
|
Sep 30 2011, 11:25
|
Guests

|
Приблизительно: Y=60*e^(-X/4)+5
|
|
|
|
|
Sep 30 2011, 14:05
|
Местный
  
Группа: Участник
Сообщений: 414
Регистрация: 7-04-11
Из: Москва
Пользователь №: 64 187

|
Цитата(Taradov Alexander @ Sep 30 2011, 15:54)  Расскажите что такое "довольно точно" и дайте данные в виде таблицы хотябы. Чем точнее, тем лучше. В принципе сходимость с таблицей в числах до запятой (т.е. в целых числах) была бы идеальной.
Сообщение отредактировал Stefan1 - Sep 30 2011, 14:12
|
|
|
|
|
Sep 30 2011, 18:44
|
Местный
  
Группа: Участник
Сообщений: 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
|
|
|
|
|
Sep 30 2011, 18:54
|

Профессионал
    
Группа: Участник
Сообщений: 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--');
|
|
|
|
|
Sep 30 2011, 19:02
|
Местный
  
Группа: Участник
Сообщений: 414
Регистрация: 7-04-11
Из: Москва
Пользователь №: 64 187

|
Цитата(Taradov Alexander @ Sep 30 2011, 22:54)  А что вы с этой функцией потом делать собираетесь? получать значение в произвольных точках? Или хочется сэкономить место и просто восстанавливать эти значения?
Для второго сплайны не годятся - места для хранения коэффициентов нужно будет еще больше чем для сырых данных.
А вообще вот матлабовский код, который считает коэффициенты кубического сплайна для ваших данных. Принцип расчета описан в описании на сами функции, гугл в помощь. Благодарю за информацию, Taradov Alexander! Функция эта нужна для задания зависимости проходной ёмкости LDMOS транзистора для расчёта его эквивалентной схемы.
Сообщение отредактировал Stefan1 - Sep 30 2011, 19:07
|
|
|
|
|
Sep 30 2011, 19:12
|
Местный
  
Группа: Участник
Сообщений: 414
Регистрация: 7-04-11
Из: Москва
Пользователь №: 64 187

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

|
Stefan1, а Вы уверены, что необходимо такое точное совпадение функции с исходными данными? По моему, стоит оценить, какой вклад вносит это выражение в результаты моделирования. Вполне возможно, что и точность в 5-10% Вас устроит. Тогда лучше поискать более точные коэффициенты (A,B,C) для наиболее простого выражения вида Y=А*e^(-B*X)+C. И на этом остановиться.
|
|
|
|
|
Oct 2 2011, 17:47
|
Местный
  
Группа: Участник
Сообщений: 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
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|