Перейти к содержанию
    

Построение функции по графику

Здравствуйте!

Подскажите как можно по графику построить функцию? Мне нужно построить формулу, которая довольно точно опишет этот график:

post-64187-1317379993_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это действие называется аппроксимация. Различные виды аппроксимаций проходят по математике на 1-2 курсах института. Вам стоит для начала определиться с видами аппроксимирующих функций. Часто в их качестве используют полиномы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это действие называется аппроксимация. Различные виды аппроксимаций проходят по математике на 1-2 курсах института. Вам стоит для начала определиться с видами аппроксимирующих функций. Часто в их качестве используют полиномы.

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

Изменено пользователем Stefan1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Расскажите что такое "довольно точно" и дайте данные в виде таблицы хотябы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Расскажите что такое "довольно точно" и дайте данные в виде таблицы хотябы.

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

post-64187-1317391350_thumb.png

Изменено пользователем Stefan1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

post-64187-1317391350_thumb.png

 

Есть такая программа,TableCurve называется,выдаст вам несколько тысяч вариантов и каждый со своей погрешностью.Ищите...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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


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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть такая программа,TableCurve называется,выдаст вам несколько тысяч вариантов и каждый со своей погрешностью.Ищите...

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

 

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

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

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

Изменено пользователем Stefan1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

 

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--');

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

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

Изменено пользователем Stefan1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

Софт - матлаб.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость @Ark

Stefan1, а Вы уверены, что необходимо такое точное совпадение функции с исходными данными?

По моему, стоит оценить, какой вклад вносит это выражение в результаты моделирования. Вполне возможно, что и точность в 5-10% Вас устроит.

Тогда лучше поискать более точные коэффициенты (A,B,C) для наиболее простого выражения вида Y=А*e^(-B*X)+C. И на этом остановиться.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Stefan1, а Вы уверены, что необходимо такое точное совпадение функции с исходными данными?

По моему, стоит оценить, какой вклад вносит это выражение в результаты моделирования. Вполне возможно, что и точность в 5-10% Вас устроит.

Тогда лучше поискать более точные коэффициенты (A,B,C) для наиболее простого выражения вида Y=А*e^(-B*X)+C. И на этом остановиться.

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

Изменено пользователем Stefan1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...