2011-12-15 16 views
11

{x1, x2, ..., xn} ve {y1, y2, ..., yn} olarak iki veri listesi verilen Mathematica'da sayısal entegrasyon yapmak için yerleşik bir rutin var mı?İki veri listesi verilen matematiksel sayısal entegrasyon

Trapezoidal entegrasyon veya diğerleri gibi bir şey yapmak istiyorum. NIntegrate görünmüyor olabilir. Tabii ki kendi başıma yazabilirim. Sadece denemek için hevesli olduğum zaman, muhtemelen denemek için çok fazla sayısal entegrasyon planı olduğunu düşünüyorum.

cevap

11

Muhtemelen aklınızdaki, ancak bir enterpolasyon fonksiyonu kurmak ne olabilir:

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

({x,y} formunda) veri noktalarının listesini oluşturur.

fun = Interpolation[dat]; 

(ne olduğunu görmek için Plot[fun[x],{x,0,2*Pi}] komplo deneyin) bir interpolasyon fonksiyonları oluşturur. Daha sonra NIntegrate kullanabilirsiniz:

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

Ancak, gerçekten hem mümkündür matlab yol yapmak istiyorsanız.

+1

Ayrıca, _InterpolationOrder kullanabilirsiniz -> n_ gerekiyorsa –

+4

Bu, en azından belgelere göre önerilen yol gibi görünüyor. ListIntegrate işlevine sahip bir eklenti paketi vardı. Bu durumlar için belgeler: "Sürüm 6'da, ListIntegrate, Integrate [Interpolation [verileri, InterpolationOrder-> k] [x], {x, Max [Subscript [x, c]], Min [Subscript [x, c] tarafından yerine getirilmiştir. ]]}], data = {{Subscript [x, 1], Subscript [y, 1]}, ..., {Subscript [x, n], Subscript [y, n]}} alt diziniyle [x, c] = data [[All, 1]]. Varsayılan enterpolasyon sırası k = 3'tür. " –

+0

Başka bir nokta olarak, yüksek mertebeden sayısal entegrasyon şemalarının bazıları, enterpolasyonda bulunan fikirler üzerine kurulmuştur. – rcollyer

İlgili konular