integrarea numerică în mathematica având în vedere două liste de date (Programare, Wolfram Mathematica)

user1096734 a intrebat.

Există o rutină încorporată pentru a face integrare numerică în Mathematica date două liste de date ca {x1, x2, ..., xn} și {y1, y2, ..., yn}?

Vreau să fac ceva de genul integrării trapezoidale sau altele. Nu pare NIntegrate poate face acest lucru. Bineînțeles că pot să o scriu singur. Doar că mă gândesc că sunt probabil prea multe scheme de integrare numerică de încercat, mai ales când sunt nerăbdător să o pun în funcțiune.

1 răspunsuri
acl

Probabil că nu este ceea ce ai în minte, dar ai putea configura o funcție de interpolare:

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

creează o listă de puncte de date (sub forma de {x,y}).

fun = Interpolation[dat];

creează o funcție de interpolare (încercați să reprezentați grafic Plot[fun[x],{x,0,2*Pi}] pentru a vedea ce este). Puteți utiliza apoi NIntegrate:

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

Cu toate acestea, dacă doriți cu adevărat să o faceți în modul matlab, este de asemenea posibil.

Comentarii

  • De asemenea, nu uitați că puteți utiliza InterpolationOrder -> n dacă este necesar –  > Por Dr. belisarius.
  • Aceasta pare a fi calea recomandată, cel puțin conform documentelor. A existat cândva un pachet adițional cu o funcție ListIntegrate. Documentația pentru aceasta afirmă: „În versiunea 6, ListIntegrate a fost înlocuită de Integrate[Interpolation[data, InterpolationOrder->k][x],{x,Max[Subscript[x, c]],Min[Subscript[x, c]]}], for data={{Subscript[x, 1],Subscript[y, 1]},. ..,{Subscript[x, n],Subscript[y, n]}}} cu Subscript[x, c]=date[[All,1]]]. Ordinea implicită de interpolare este k=3.” –  > Por Daniel Lichtblau.
  • Ca un alt aspect, unele dintre schemele de integrare numerică de ordin superior sunt construite pe baza ideilor găsite în interpolare. –  > Por rcollyer.
  • (de asemenea, pentru @littleEinstein) Din moment ce fac acest lucru chiar acum, aș dori să adaug că Integrate, , D & suport pentru fițe InterpolatingFunction obiecte în mod direct. Acest lucru înseamnă că antiderivata lui fun poate fi construită direct ca Derivative[-1][fun]. Rezultatul este un alt InterpolatingFunction. –  > Por Szabolcs.
  • Scuze, tocmai mi-am dat seama că Daniel Lichtblau a menționat același lucru. –  > Por Szabolcs.