Интеграция числовых данных
Завтра я пишу тест и собираюсь сделать все для Matlab, чтобы сэкономить время.
Некоторые вопросы требуют численного интегрирования точек данных (точек, не обязательно функций).
Например
C=[0 1 5 8 10 8 6 4 3 2.2 1.5 0.6 0];
Я использовал trapz(C)
определить интеграл данных (площадь под кривой) и сравнить с тем, что получает мой учебник. Часто разница между ними слишком велика.
Есть ли другой простой и быстрый способ, которым вышеуказанные данные могут быть интегрированы численно с помощью Matlab, например, с использованием правила Симпсона, Гаулега или сплайна?
Я посмотрел на integrate()
, но это, кажется, работает только на функции?
1 ответ
Ваши точки данных расположены на расстоянии dx = 1? например, если dx равно.5, это изменит результат в два раза.
В противном случае, я бы указал: точка данных сама по себе, при нулевой ширине, создаст область 0: точка в том, что ваш учебник должен предполагать некоторую интерполяцию между ними, чтобы получить осмысленный интеграл. Если это сегменты прямой линии, trapz(C) должен дать вам правильный результат; если ваш учебник делает что-то еще (например, точки, взятые из гладкой функции), неудивительно, что результаты будут другими.