2014 dxdy logo

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

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




На страницу 1, 2, 3  След.
 
 Производные табличной функции
Сообщение23.12.2014, 19:20 
Аватара пользователя
Помогите, пожалуйста, решить следующую (классическую?) задачу.

Функция одной переменной задана таблицей значений $\left( {{x}_{k}},{{y}_{k}} \right)$. Эти значения являются результатами эксперимента и содержат какие-то погрешности. Шаг по иксу не является фиксированным и может меняться в довольно широких пределах, хотя обычно два соседних шага не отличаются между собой более чем в 3 раза. В каждом конкретном случае таблица фиксирована и у меня нет возможности перемерить меющиеся или домерить недостающие точки. Про функцию $y=f\left( x \right)$ известно, что она непрерывная и бесконечно дифференцируемая.

В этих условиях хотелось бы рассчитать первую и вторую (и, возможно третью) производную функции $f\left( x \right)$ в разных точках. О погрешности значений ${x}_{k}$ и ${y}_{k}$ ничего толком не известно, и хотелось бы их оценить в процессе расчётов. Для простоты, думаю, можно считать, что значения ${x}_{k}$ точны, а вся случайная погрешность заключена в значениях ${y}_{k}$ (что весьма хорошо согласуется с действительностью).

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

 
 
 
 Re: Производные табличной функции
Сообщение23.12.2014, 19:42 
Аватара пользователя
А что если посчитать все производные в узловых точках по самой простой формуле $y'_k=(y_{k+1}-y_k)/(x_{k+1}-x_k)$
Если про функцию ничего априори не известно, да ещё измерения с погрешностями, то оптимизации не будут иметь особого смысла.

 
 
 
 Re: Производные табличной функции
Сообщение23.12.2014, 19:47 
Аватара пользователя
Разве оптимизация не усредняет случайные значения, увеличивая тем самым точность конечного результата? Я всегда этим пользовался: стремился набраться по-больше измерений, чтобы получилось по-точнее. А предложенная вами формула как раз самая чувствительная к случайным погрешностям. Даже простая линейная аппроксимация ещё одной-двух пар соседних точек даст более точный результат.

 
 
 
 Re: Производные табличной функции
Сообщение23.12.2014, 19:49 
Имеем некорректно поставленную задачу. Классика жанра – это регуляризация.
При поиске функции, регуляризация может состоять в минимизации квадрата какой-либо производной. Например, 4-ой, т.к. есть желание вычислять 3-ю производную.

Результирующую функцию можно представить таблично на достаточно мелкой сетке, не обязательно равномерной. Для простоты положим, что узлы сетки точно попадают в измеренные $x_k$.

Нужно минимизировать сумму отклонений экспериментальных данных от искомой функции, плюс, с некоторым регуляризующим коэффициентом, сумму квадратов аппроксимации 4-ой производной в узлах сетки.

После получения значений функции в узлах, с помощью аппроксимации можно получить 1-ю, 2-ю и 3-ю производную.

 
 
 
 Re: Производные табличной функции
Сообщение23.12.2014, 19:57 
Аватара пользователя
mserg, ваш подход требует вычисления производных регуляризованной функции, заданной таблично, то есть фактически та же задача, что и у меня, только значения функции (хоть они и не известны) являются точными и не содержат погрешность (на то она и регуляризована). Как вычислять эти производные (есть много разных схем разной точности, какая именно нужна), как выбрать регуляризующий коэффициент? Как-то не очень прозрачно.

Кроме того, интуиция подсказывает, что эта схема будет давать большую систематическую погрешность "отрезая" или "занижая" те разумные слагаемые исходных данных, которые хотелось бы оставить. Может быть есть какие-то другие подходы?

 
 
 
 Re: Производные табличной функции
Сообщение23.12.2014, 21:10 
Универсального решения нет, поэтому надо бы понять, для чего потом будут использоваться производные и можно ли наложить на них какие-нибудь дополнительные ограничения.

 
 
 
 Re: Производные табличной функции
Сообщение23.12.2014, 21:32 
Аватара пользователя
В дальнейших расчётах. Поэтому получение максимальной точности — это первостепенное требование. Я правильно понимаю, что погрешность будет складываться из двух неизбежных компонент: погрешности той или иной аппроксимации и погрешности исходных данных? В случае наложения адекватной модели (которой у меня нет) на эти данные первое слагаемое было бы равно нулю, а второе максимально усреднилось бы, верно?

 
 
 
 Re: Производные табличной функции
Сообщение23.12.2014, 22:15 
B@R5uk в сообщении #951331 писал(а):
В дальнейших расчётах.
Ну поняно, что не для получения эстетического удовольствия. Вопрос в том, какими будут расчеты: разные варианты ошибок в разных случаях будут более или менее значимы, и ответ на исходный вопрос надо подбирать с учетом этой информации.

 
 
 
 Re: Производные табличной функции
Сообщение23.12.2014, 23:22 
B@R5uk в сообщении #951284 писал(а):
mserg, ваш подход требует вычисления производных регуляризованной функции, заданной таблично, то есть фактически та же задача, что и у меня, только значения функции (хоть они и не известны) являются точными и не содержат погрешность (на то она и регуляризована). Как вычислять эти производные (есть много разных схем разной точности, какая именно нужна), как выбрать регуляризующий коэффициент? Как-то не очень прозрачно.

Кроме того, интуиция подсказывает, что эта схема будет давать большую систематическую погрешность "отрезая" или "занижая" те разумные слагаемые исходных данных, которые хотелось бы оставить. Может быть есть какие-то другие подходы?


Речь идет о задаче на сетке. Скажем, экспериментальных данных 100, а сетка может иметь 1000 узлов. Из них 100 есть $x_k$, а оставшиеся 900 где-то между. Соответственно, на сетке в 1000 узлов получится 1000 производных (но, для задачи оптимизации концевые точки сетки для производных можно не рассматривать).

Для нахождения функции во всех узлах нужно решить задачу оптимизации (это выпуклая задача).

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

P.S. У меня есть специальная программа для подбора вида функции. Если выложите данные, то можно попытаться подобрать функцию.

 
 
 
 Re: Производные табличной функции
Сообщение23.12.2014, 23:53 
Аватара пользователя
mserg в сообщении #951375 писал(а):
Скажем, экспериментальных данных 100, а сетка может иметь 1000 узлов.
Нет, это откровенный перебор. У меня порядка нескольких тысяч значений в рабочем примере.

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

Значит, кроме регуляризации ничего нету? Не может быть!

 
 
 
 Re: Производные табличной функции
Сообщение24.12.2014, 00:37 
B@R5uk в сообщении #951389 писал(а):
mserg в сообщении #951375 писал(а):
Скажем, экспериментальных данных 100, а сетка может иметь 1000 узлов.
Нет, это откровенный перебор. У меня порядка нескольких тысяч значений в рабочем примере.

И что? Метод внутренней точки берет миллионы.

Можно аппроксимировать (не интерполировать) сплайнами. Но для этого тоже придется немного пошаманить.

 
 
 
 Re: Производные табличной функции
Сообщение24.12.2014, 01:16 
Аватара пользователя
Численное дифференцирование - процедура некорректная. Посему, смотрите Тихонова-Арсенина.

 
 
 
 Re: Производные табличной функции
Сообщение24.12.2014, 02:08 
Аватара пользователя
Утундрий, скачал Методы решения некорректных задач, 2-е издание 1979 года. Просмотрел оглавление, не нашёл ничего про производную. Есть ещё какая-то книжка тех же авторов?

mserg в сообщении #951405 писал(а):
Можно аппроксимировать (не интерполировать) сплайнами.
Я правильно понимаю, что вы хотите охватить все данные целиком за один присест? Я вот больше склоняюсь к локальному анализу данных вблизи точки, в которой меня интересует производная.

mserg в сообщении #951405 писал(а):
Метод внутренней точки берет миллионы.
Есть какие-нибудь формулы для оценки погрешности метода?

 
 
 
 Re: Производные табличной функции
Сообщение08.01.2015, 00:55 
Аватара пользователя
Если на время забыть про то, что исходные ${{y}_{k}}$ содержат погрешности и считать их точными (такое тоже часто бывает), то как тогда можно по таблице посчитать производные функции и оценить их ошибки? Я вот знаю интерполяционный многочлен Лагнранжа и теорему об интерполировании функции этим полиномом:

Пусть $f\left(x\right)$ — функция из $C^{n+1}\left[a,b\right]$ и пусть $p\left(x\right)$ — полином степени меньшей или равной $n$, который интерполирует функцию $f\left(x\right)$ в различных точках ${{x}_{0}},{{x}_{1}},\ldots ,{{x}_{n}}\in \left[ a,b \right]$. Тогда для каждого $x\in \left[ a,b \right]$ существует точка ${{\xi }_{x}}\in \left[ a,b \right]$ такая, что
$$f\left( x \right)-p\left( x \right)=\frac{1}{\left( n+1 \right)!}{{f}^{\left( n+1 \right)}}\left( \xi_x  \right)\prod\limits_{k=0}^{n}{\left( x-{{x}_{k}} \right)}$$

Что если интерполяционный полином продифференцировать и производную функции оценивать как значение этой производной полинома? Какая будет ошибка? Существует ли подобная теорема на этот случай?

 
 
 
 Re: Производные табличной функции
Сообщение08.01.2015, 07:41 
Таки ещё и ещё раз: из ничего невозможно извлечь ничего (кроме, как где-то слышал, высокого о себе мнения). Через точки можно провести бесчисленное множество функций с любыми в этих точках производными. Кстати говоря, помнится, есть развитие задачи интерполяционного многочлена для случая, когда в некоторых точках заданы значения функция и/или нескольких производных. Не вспомню подробностей, но полином таки имеется при любом наборе данных.

 
 
 [ Сообщений: 33 ]  На страницу 1, 2, 3  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group