2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

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

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

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4
 
 Re: Аппроксимация экспериментальных данных
Сообщение26.01.2013, 19:01 
Заслуженный участник
Аватара пользователя


11/03/08
9904
Москва
Ну, возьмите любую формулу численного дифференцирования. Нагрузите значения функции случайным шумом, посчитайте дисперсию. По мере устремления h к нулю она будет стремиться к бесконечности. Если говорить от относительных ошибках - ещё веселее. Поскольку функции нас интересуют сравнительно гладкие, то значения производных малы, то есть относительные ошибки очень велики. Если брать h не малым - то у нас получается что-то далёкое от производных даже в отсутствие ошибок.
Иногда локально приближают, например, полиномом (степень которого выбирается существенно меньше числа приближаемых точек), используя тот же МНК, а затем уж его дифференцируют. Но оценка производной и тут получается достаточно приблизительной.

 Профиль  
                  
 
 Re: Аппроксимация экспериментальных данных
Сообщение28.01.2013, 12:48 


05/09/12
2587
mserg в сообщении #676378 писал(а):
Классика жанра получения гладкой аппроксимации – это добавление дополнительных слагаемых в критерий. Выбирается некоторое количество точек (необязательно совпадающие с точками данных), и в них делается аппроксимация первой и/или второй производной с помощью аппроксимируемой функции. Квадраты первой и/или второй производной добавляются с некоторыми весами к критерию. Таким образом, достигается некоторый компромисс между точностью аппроксимации и ее гладкостью.

Общая идея называется «регуляризация».
Спасибо, идея понятна, очень интересно! Насколько я понимаю, жонглирование этими весами будет определять степень компромисса. Кстати, если количество точек у нас фиксировано, то количество узлов для задания производных в функцию ошибки мы можем выбрать любое - хоть в 100 раз больше исходных точек, и таким образом приблизить оцененную производную достаточно хорошо.

Евгений Машеров в сообщении #676503 писал(а):
Иногда локально приближают, например, полиномом (степень которого выбирается существенно меньше числа приближаемых точек), используя тот же МНК, а затем уж его дифференцируют. Но оценка производной и тут получается достаточно приблизительной.
Тоже неплохой вариант, идея лежит на поверхности.

 Профиль  
                  
 
 Re: Аппроксимация экспериментальных данных
Сообщение08.04.2013, 12:44 


08/04/13
1
привет если еще надо:
http://www.picshare.ru/view/1692280/
краткое описание: код на Wolfram Matematica.
data - это твоя функция линейными преобразованиями приведенная в область {{0,1},{0,1}};
model - модель аппроксимирующей функции с коэффициентами a0-a4

 Профиль  
                  
 
 Re: Аппроксимация экспериментальных данных
Сообщение16.05.2013, 06:54 


18/01/13
31
Омск
simplebomber в сообщении #707276 писал(а):
привет если еще надо:
http://www.picshare.ru/view/1692280/
краткое описание: код на Wolfram Matematica.
data - это твоя функция линейными преобразованиями приведенная в область {{0,1},{0,1}};
model - модель аппроксимирующей функции с коэффициентами a0-a4

Спасибо, функция универсальна для всех наших примеров данных, отличная точность :-)
Только теперь надо самим найти исходные коэффициенты, чтобы применить МНМ. Хотелось бы запрограммировать. :roll:

 Профиль  
                  
 
 Re: Аппроксимация экспериментальных данных
Сообщение16.05.2013, 11:45 


18/01/13
31
Омск
1. $$y = y_{min} +\frac {(y_{max} - y_{min})*y_{max}}{ax^2 + (bx^2 + cx + d) x +  y_{min}}}.$$
Преобразовав эту функцию к виду $$bx^3+ax^2+dx=\frac{(y_{max}-y_{min})y_{max}}{y-y_{min}}-y_{min}$$ легко применяются что МНК, что МНМ. С этой нашей хитрой функцией все вроде понятно, ее СОА = $1,317484462$ (средняя ошибка аппроксимации) при $b=0,0205$, $a=-0,7135$, $c=54,92492$
2. Функция вида $$y=e^{\frac 1 {ax^3+bx^2+cx+d}},$$ линеаризуема и работать с ней легко, СОА = $2,996392834$ при $a=0,0000001033138$, $b=-0,0000191759894$, $c=0,0013078453483$, $d=0,164599678$. Наибольшая погрешность. По сути это полином 3-й степени, и в некоторых случаях он хорошо подходит из-за двух перегибов.
3. $$f(x)=a+b(x+c)^d$$
Функция такого типа почему-то даже не рассматривалась... :-(
4. $$y(x)=a \exp (bx^c) + d \eqno (1)$$
Возможно лучшее что нам подходит. В начале пытались найти все четыре коэффициента, дело в том что, мы пытаемся запрограммировать аппроксимацию, поэтому первым делом выполняем вручную. Потом решили положить ее в точку $(0;435)$, с одной стороны это нам нравиться, а с другой упрощает задачу поиска коэффициентов, их уже получается два :-) СОА =$1,812498852$ при $a=299$, $b=-0,137789822$, $c=0,706075481$, $d=136$. И такие значения получились из системы уравнения полученной по принципу наименьшего кол-ва данных (возможно ошибаюсь в названии) $$\begin{cases}
1.73=-b36^c\\
2.4=-b60^c\\
\end{cases}.$$
Получили мы ее, подставив в исходную формулу $(1)$ две пары данных $(36;189)$ и $(60;161)$. Думаю если еще взять пару итераций по Методу наименьших модулей, то полученные поправки сведут СОА к 1% (теоретизирую)!
5. Функция вида $$y=ae^{{bx^{1+cx+dx^2+fx^3}}}.$$
Вроде такой вид, можете посмотреть выше, это последняя из предложенных. Хорошая функция, погрешность как и у остальных в принципе, поэтому останавливаемся на 4! Вот как-то так...

Хотелось бы почитать ваши замечания, комментарии и конструктивную критику :roll: Спасибо всем кто помогал 8-)

P.S. В исходном ряде нету числа 140, опечатался!

 Профиль  
                  
 
 Re: Аппроксимация экспериментальных данных
Сообщение16.05.2013, 13:07 
Аватара пользователя


21/01/09
3925
Дивногорск
Александрович в сообщении #675982 писал(а):
Вот чуть лучшее приближение:
$y(x)=370.1\exp(x^{0.0635}-x^{0.237})+64.0$
Средняя относительная ошибка - 0.9%, максимальное относительное отклонение - 2.7%.

 Профиль  
                  
 
 Re: Аппроксимация экспериментальных данных
Сообщение17.05.2013, 08:19 


18/01/13
31
Омск
Александрович в сообщении #724571 писал(а):
Александрович в сообщении #675982 писал(а):
Вот чуть лучшее приближение:
$y(x)=370.1\exp(x^{0.0635}-x^{0.237})+64.0$
Средняя относительная ошибка - 0.9%, максимальное относительное отклонение - 2.7%.

Да, это формула немного лучше чем формула 4. Но мы с ней пока не разобрались, а вопрос довольно простой, но у нас вызвал ступор...Нужно найти первоначальное приближение коэффициентов $b$ и $c$. $a=299$, $d=136$ - получается система $$\begin{cases}
36^b-36^c=\ln\frac{y_{13}-d}{a}\\
60^b-60^c=\ln\frac{y_{21}-d}{a}\\
\end{cases}, $$ решить её не получается. Если кто-нибудь читая это сообщение знает как решить, подскажите пожалуйста :-) Любое решение содержащее графическую часть не подходит, по возможности аналитически бы :roll:

 Профиль  
                  
 
 Re: Аппроксимация экспериментальных данных
Сообщение17.05.2013, 09:51 
Аватара пользователя


21/01/09
3925
Дивногорск
vitalmago в сообщении #724541 писал(а):
4. $$y(x)=a \exp (bx^c) + d \eqno (1)$$
Возможно лучшее что нам подходит. В начале пытались найти все четыре коэффициента, дело в том что, мы пытаемся запрограммировать аппроксимацию, поэтому первым делом выполняем вручную. Потом решили положить ее в точку $(0;435)$, с одной стороны это нам нравиться, а с другой упрощает задачу поиска коэффициентов, их уже получается два :-) СОА =$1,812498852$ при $a=299$, $b=-0,137789822$, $c=0,706075481$, $d=136$. И такие значения получились из системы уравнения полученной по принципу наименьшего кол-ва данных (возможно ошибаюсь в названии) $$\begin{cases}
1.73=-b36^c\\
2.4=-b60^c\\
\end{cases}.$$
Получили мы ее, подставив в исходную формулу $(1)$ две пары данных $(36;189)$ и $(60;161)$. Думаю если еще взять пару итераций по Методу наименьших модулей, то полученные поправки сведут СОА к 1% (теоретизирую)!

Вы же вроде бы решили.

 Профиль  
                  
 
 Re: Аппроксимация экспериментальных данных
Сообщение17.05.2013, 10:07 
Заслуженный участник
Аватара пользователя


11/03/08
9904
Москва
Аналитически вряд ли, численно - скажем, методом Ньютона-Рафсона. Простенькая схема есть, к примеру, в древнем Мак-Кракен и Дорн, Численные методы и программирование на Фортране, с. 187.
Ну, или любой пакет, МАТЛАБ, скажем, умеет.

 Профиль  
                  
 
 Re: Аппроксимация экспериментальных данных
Сообщение17.05.2013, 10:49 


18/01/13
31
Омск
Александрович в сообщении #724967 писал(а):
vitalmago в сообщении #724541 писал(а):
4. $$y(x)=a \exp (bx^c) + d \eqno (1)$$
Возможно лучшее что нам подходит. В начале пытались найти все четыре коэффициента, дело в том что, мы пытаемся запрограммировать аппроксимацию, поэтому первым делом выполняем вручную. Потом решили положить ее в точку $(0;435)$, с одной стороны это нам нравиться, а с другой упрощает задачу поиска коэффициентов, их уже получается два :-) СОА =$1,812498852$ при $a=299$, $b=-0,137789822$, $c=0,706075481$, $d=136$. И такие значения получились из системы уравнения полученной по принципу наименьшего кол-ва данных (возможно ошибаюсь в названии) $$\begin{cases}
1.73=-b36^c\\
2.4=-b60^c\\
\end{cases}.$$
Получили мы ее, подставив в исходную формулу $(1)$ две пары данных $(36;189)$ и $(60;161)$. Думаю если еще взять пару итераций по Методу наименьших модулей, то полученные поправки сведут СОА к 1% (теоретизирую)!

Вы же вроде бы решили.

Это две разные системы...с произведением было легко,а вот с разницей показательных функций как-то посложнее :-(
Евгений Машеров в сообщении #724974 писал(а):
Аналитически вряд ли, численно - скажем, методом Ньютона-Рафсона. Простенькая схема есть, к примеру, в древнем Мак-Кракен и Дорн, Численные методы и программирование на Фортране, с. 187.
Ну, или любой пакет, МАТЛАБ, скажем, умеет.

Ньютон-Рафсон заинтересовал, попробуем...

 Профиль  
                  
 
 Re: Аппроксимация экспериментальных данных
Сообщение17.05.2013, 12:23 
Аватара пользователя


21/01/09
3925
Дивногорск
vitalmago в сообщении #724988 писал(а):
а вот с разницей показательных функций как-то посложнее :-(

Сначала считайте для одной функции, а на вторую выйдете через анализ регрессионных остатков.

 Профиль  
                  
 
 Re: Аппроксимация экспериментальных данных
Сообщение17.05.2013, 12:52 


18/01/13
31
Омск
Александрович в сообщении #725025 писал(а):
vitalmago в сообщении #724988 писал(а):
а вот с разницей показательных функций как-то посложнее :-(

Сначала считайте для одной функции, а на вторую выйдете через анализ регрессионных остатков.

Да чтож такое, столько нового, можно изучать и изучать :lol: Большое спасибо, посмотрим что это и как работает. Ответы на вопросы, дают лишь повод для других вопросов :wink:

 Профиль  
                  
 
 Re: Аппроксимация экспериментальных данных
Сообщение17.05.2013, 17:16 
Супермодератор
Аватара пользователя


20/11/12
5728
 ! 
simplebomber в сообщении #707276 писал(а):
привет если еще надо:
http://www.picshare.ru/view/1692280/
краткое описание: код на Wolfram Matematica.
data - это твоя функция линейными преобразованиями приведенная в область {{0,1},{0,1}};
model - модель аппроксимирующей функции с коэффициентами a0-a4
simplebomber, предупреждение за неправильное оформление формул и фамильярность

 Профиль  
                  
 
 Re: Аппроксимация экспериментальных данных
Сообщение17.05.2013, 19:51 
Заслуженный участник
Аватара пользователя


11/03/08
9904
Москва
Можно немного перепараметризовать.
$36^a=u$
$36^b=v$
Тогда $60^a=u^{1.1425486}$, аналогично и для второй
Т.е. у нас уравнения вида
$u-v=A$
$u^{1.1425486}-v^{1.1425486}=B$
Или
$u^{1.1425486}-(u-A)^{1.1425486}=B$
А тут уже Ньютоном.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 59 ]  На страницу Пред.  1, 2, 3, 4

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group