LINUX.ORG.RU

А что конкретно нужно? Вычислить производную в одной точке или получить значения производной в определенном диапазоне значений независимой переменной?

Во втором случае все довольно просто: делаешь столбец (или строку) со значениями переменной, потом, соответственно, со значениями функции. Потом еще один ряд, в котором будут попарные разности соседних значений из предыдущего ряда. Собственно, все.

nnz ★★★★
()

Численное дифференцирование на счётных палочках

> Возможно?

Fixed.

Да, можно. Численно дифференцировать можно на чём угодно, включая листок бумаги. Неудобно и медленно только.

2nnz: на шаг изменения переменной поделить забыл.

Alan_Steel ★★
()
Ответ на: комментарий от Pterodaktil

Да, расстояния между x-ами может различаться

Pterodaktil
() автор топика

Мне кажется, тут всё очень зависит от требуемой точности и поведения функции. По-хорошему, такое конечно лучше сначала проинтерполировать. А там уже смотреть, что лучше - рассчитать фит и дифференцировать его или просто dy/dx считать поячейно.

stormy
()
Ответ на: комментарий от Pterodaktil

> Таблично задана f(x) надо получить значение производной в узлах.

Ну и? Простейшая схема:

f'_{n+1, n} = \frac{f(x_{n+1})-f(x_n)}{x_{n+1}-x_n}

http://latex.codecogs.com/gif.latex?f'_{n+1,%20n}%20=%20%5Cfrac&#12...

Точек производной, получится, есс-но, на 1 меньше, чем точек функции.

Round ★★
()
Ответ на: комментарий от Round

Точек производной, получится, есс-но, на 1 меньше, чем точек функции.

Это понятно. Я думал что есть возможность интерполировать кажем Лагранжем и по нему считать

Pterodaktil
() автор топика
Ответ на: комментарий от Pterodaktil

Тут всё зависит от характера данных. В общем случае о гарантии какой-либо точности не может быть и речи, если, помимо дискретизированных значений, о функции ничего неизвестно.

Неплохо было бы, например, знать, ограничен ли фурье-спектр функции или что-нибудь в этом духе. Тогда, как справедливо отметил камрад stormy, можно будет говорить о точности интерполяции и, как следствие, о точности дифференцирования.

Round ★★
()
Ответ на: комментарий от Pterodaktil

> Я думал что есть возможность интерполировать кажем Лагранжем и по нему считать

Интерполировать, опять же, можно и вручную (хотя, кажется, в оо.о было что-то там об интерполяции - никогда не углублялся в эту тему). Суть в том, что выбор метода интерполяции зависит от характера данных.

Round ★★
()
Ответ на: комментарий от Round

Данные вобщем-то неплохо описываются полиномом, но есть ощутимый дребезг (порядка 10% от полинома)

Pterodaktil
() автор топика
Ответ на: комментарий от Round

Вручную Лагранжем по 40 точкам - не хочется как-то.

Pterodaktil
() автор топика
Ответ на: комментарий от stormy

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

anonymous
()
Ответ на: комментарий от Pterodaktil

> В 1-м приближении подойдет delta f(x)/delta x

Если есть шумы, то такие наклоны получатся - умереть не встать.

В общем мягко говоря не самый лучший инструмент для такого рода анализов.

Evgueni ★★★★★
()
Ответ на: комментарий от Evgueni

Предложите свой вариант: Задана функция (по своей природе содержит шумы причем довольно сильные). Шумы давятся усреднением по 10 отсчетам. Надо подсчитать производную.

Pterodaktil
() автор топика
Ответ на: комментарий от Pterodaktil

Подогнать подходящей по науке теоретической зависимостью. В общем ROOT (http:/root.cern.ch или в дистрибутиве, краткое описание на русском здесь: http://www.inp.nsk.su/~baldin/DataAnalysis/index.html) в зубы и писать скрипты для анализа.

Evgueni ★★★★★
()
Ответ на: комментарий от Pterodaktil

Если шумы давятся усреднением, то есть среднеквадратичная погрешность среднего, а стало быть, есть погрешность производной (погрешность косвенных измерений). Можно её оценить и подумать, устраивает ли она.

Если нет, то тут без допущений об определенном виде зависимости (например, неубывание второй производной и т.п.) точность не улучшить никаким образом кроме увеличения числа отсчетов.

mclaudt
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.