2011-12-15 11 views
11

Esiste una routine integrata per l'integrazione numerica in Mathematica dati due elenchi di dati come {x1, x2, ..., xn} e {y1, y2, ..., yn}?integrazione numerica in mathematica dati due elenchi di dati

Voglio fare qualcosa come integrazione trapezoidale o altri. Non sembra che lo NIntegrate possa farlo. Certo che posso scriverlo da solo. Pensa che probabilmente ci sono troppi schemi di integrazione numerica da provare, specialmente quando sono ansioso di farlo funzionare.

risposta

11

Probabilmente non è quello che hai in mente, ma è possibile impostare una funzione di interpolazione:

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

crea un elenco di punti di dati (sotto forma di {x,y}).

fun = Interpolation[dat]; 

crea funzioni di interpolazione (provate tramando Plot[fun[x],{x,0,2*Pi}] per vedere di cosa si tratta). È quindi possibile utilizzare NIntegrate:

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

Tuttavia, se si vuole veramente fare è il modo in cui MATLAB che è anche possibile.

+1

Ricorda inoltre che è possibile utilizzare _InterpolationOrder -> n_ se necessario –

+4

Questo sembra essere il modo consigliato, almeno secondo i documenti. C'era una volta un pacchetto aggiuntivo con una funzione ListIntegrate. Documentazione per questo stato: "Nella versione 6, ListIntegrate è stato sostituito da Integrate [Interpolation [dati, InterpolationOrder-> k] [x], {x, Max [Pedice [x, c]], Min [Pedice [x, c ]]}], per dati = {{Pedice [x, 1], Pedice [y, 1]}, ..., {Pedice [x, n], Pedice [y, n]}} con Pedice [x, c] = data [[All, 1]]. L'ordine di interpolazione predefinito è k = 3. " –

+0

Come un altro punto, alcuni degli schemi di integrazione numerica di ordine superiore sono costruiti sulle idee trovate nell'interpolazione. – rcollyer