Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Численное дифференциирование таблично заданной функции
 
Столкнулся с задачей, необходимо продифференцировать таблично заданную функцию. на входе имеем массив Х и У, на выходе нужно получить X и Y'. критерий: функция производной должна быть гладкой.
Варианты решения данной задачи в моём видении 2.
1) численное дифференцирование таблично заданной функции каким-то алгоритмом.
2) Аппроксимация функции в формульный вид, взятие производной от формулы, и дальнейшее заполнение таблицы значений производной по получившейся формуле.

Я пробовал реализовать следующими способами:

1) дифференцирование по 2-м точкам ( (y2-y1)/(x2-x1)), график производной на выходе. график на выходе не гладкий.
2) дифференцирование по 3-м точкам ( y3-y1)/2/(x2-x1), чуть глаже первого варианта, но все равно не очень.
3) Построение линии тренда ( полином 6-порядок) к первоначальной функции, далее ручками перенос коэффициентов линии тренда в таблицу, потом взятие производной и заполнение таблицы производных по формуле. И этот вариант устраивает, кроме ручного переноса коэф.

И так, я прошу совета по поводу решение моей задачи, либо алгоритм для численного дифференцирования, либо как получить коэффициенты полинома в ячейках, без ручного вбивания?  
Изменено: Woody - 30 Мар 2015 17:23:12
 
Цитата
Woody написал: как получить коэффициенты полинома в ячейках, без ручного вбивания?
Функция ЛИНЕЙН, поищите по форуму, обсуждалось много раз.
 
Функция линейн выводит максимум до 2-го порядка полинома. не подходит, уже изучал. Покрайней мере то что я видел в практических примерах. если возможно функцией линейн получать коэф. полиномов выше 2 -го порядка, пожалуйста покажите как!!! очень необходимо!
Изменено: Woody - 30 Мар 2015 16:12:59
 
Woody, до 16-го порядка. Введите в диапазон 3 строки х 17 столбцов формулу массива
Код
=ЛИНЕЙН(B7:B36;A7:A36^ТРАНСП(СТРОКА(1:16));;1)
В верхней строке получите коэф-ты (уточните в Справке, в каком порядке!), в левой нижней ячейке - R квадрат.
 
=ЛИНЕЙН(B7:B36;A7:A36^{1;2;3;4;5;6};1;0)
 
Вообще, метод дифференцирования зависит от физического смысла зависимости. Какова погрешность измерения У? Если мала, т.е. скачки на графике означают фактические изменения величины, то можно дифференцировать и по двум точкам: скакнуло - значит производная была большая. А если эти скачки - результат погрешности измерений, тогда надо аппроксимировать по нескольким точкам.
Аппроксимировать произвольную зависимость целиком нет смысла, т.к. при достаточно длинной зависимости на все изгибы степеней не напасешься.
Изменено: Казанский - 30 Мар 2015 16:31:39
 
Михаил С.,Большое спасибо! я так долго этого искал =)  
 
Казанский, оценить погрешность измерений нет возможности, не с чем сравнить значения Y и нет возможности их чем-нибудь альтернативным замерить. Большое спасибо! Благодарю что откликнулись! Пробовал усреднять данные Y, сглаживать первоначальную функцию, но при этом получается снижение абсолютных значений. Также пробовал в другой среде ( не эксель) строить сплайн по Y и его дифференцировать, сплайн получается не гладкий, и производная от него следовательно тоже.  
Изменено: Woody - 30 Мар 2015 16:38:42
Страницы: 1
Читают тему (гостей: 1)