2011-12-15 15 views
11

¿Existe una rutina incorporada para realizar la integración numérica en Mathematica dadas dos listas de datos como {x1, x2, ..., xn} y {y1, y2, ..., yn}?integración numérica en matemática dadas dos listas de datos

Quiero hacer algo como integración trapezoidal u otros. No parece NIntegrate puede hacer eso. Por supuesto que puedo escribirlo solo. Simplemente piense que probablemente haya demasiados esquemas de integración numérica para probar, especialmente cuando estoy ansioso por hacerlo funcionar.

Respuesta

11

Probablemente no lo que tiene en mente, pero podría configurar una función de interpolación:

dat = {#, Sin[#]} & /@ Range[0, 2*Pi, .1]; 

crea una lista de puntos de datos (en forma de {x,y}).

fun = Interpolation[dat]; 

crea un funciones de interpolación (intenta trazar Plot[fun[x],{x,0,2*Pi}] para ver lo que es). A continuación, puede utilizar NIntegrate:

NIntegrate[fun[x]^2, {x, 0, 2*Pi}] 

Sin embargo, si realmente quiere hacerlo de la manera Matlab que también es posible.

+1

Recuerde también que puede usar _InterpolationOrder -> n_ si es necesario –

+4

Esta parece ser la forma recomendada, al menos de acuerdo con los documentos. Hubo una vez un paquete complementario con una función ListIntegrate. La documentación para esto indica: "En la Versión 6, ListIntegrate ha sido reemplazado por Integrate [Interpolación [data, InterpolationOrder-> k] [x], {x, Max [Subscript [x, c]], Min [Subscript [x, c ]]}], para data = {{Subíndice [x, 1], Subíndice [y, 1]}, ..., {Subíndice [x, n], Subíndice [y, n]}} con Subíndice [x, c] = data [[All, 1]]. La orden de interpolación predeterminada es k = 3. " –

+0

Como otro punto, algunos de los esquemas de integración numérica de orden superior se basan en las ideas encontradas en la interpolación. – rcollyer