Численное интегрирование с использованием правила Симпсона на дискретных данных - PullRequest
2 голосов
/ 27 марта 2012

Я ищу числовую интеграцию с Matlab.Я знаю, что в Matlab есть функция trapz, но точность не достаточно хороша.При поиске в Интернете я обнаружил, что есть функция с квадратами, в которой он принимает только символическое выражение.Мои данные все дискретные и одномерные.Это какой-то способ использовать четырехугольник на моих данных?Спасибо.

Ответы [ 4 ]

1 голос
/ 27 марта 2012

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

Другой метод, который вы можете попробовать, - использовать мощный инструмент подгонки кривой cftool, чтобы выполнить подбор, а затем использовать функцию integrate, которая может работать с cfit объектами (у нее странное соглашение, верхний предел равен первый аргумент!). Я не думаю, что вы получите гораздо более точные ответы, чем trapz, это зависит от подгонки.

0 голосов
/ 27 ноября 2014

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

function f = int_fun(x,xdata,ydata)
f = interp1(xdata,ydata,x);

А затем передать его функции quadl():

integral = quadl(@int_fun,A,B,[],[],x,y) % syntax to pass extra arguments
                                         % to the function
0 голосов
/ 27 февраля 2013

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

0 голосов
/ 27 марта 2012

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

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

Предположим, что ваши данные представляют собой временные ряды значений, собираемых через регулярные интервалы.Затем вы можете построить ваши данные в виде гистограммы с полосами равной ширины.Нужный интеграл - это сумма площадей столбцов на гистограмме между интересующими вас пределами.

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

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

...