Algorytm obliczania całki oznaczonej

Algorytm obliczania całki oznaczonej
Ursinus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 161
0

Witam.
Poszukuję algorytmu, który obliczy mi całkę oznaczoną. Dane z których należy ja obliczyć to: punkt i wartość funkcji w tym punkcie oraz wartości pochodnych funkcji w tym punkcie.
Mile widziany jakiś pseudokod lub wskazówki.
Dziękuję i życzę zdrowia :)

xfin
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Genewa
  • Postów: 597
0

Generalnie w zadaniach analitycznych wykorzystuje się metodę trapezów/trójkątów, ale...
Ale całka oznaczona to jest wartość wyrażająca pole pod wykresem funkcji w zakresie punkt-punkt. Z jednym punktem moim zdaniem może być problem, chyba, że szukamy pod całą funkcją? Coś mi mało tych danych, chociaż może coś przeoczyłem.

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

@Ursinus a może jednak pokażesz co tak faktycznie masz zrobić i co masz dane? Bo z tego co opisałeś to guzik możesz policzyć ;]

Ursinus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 161
0

http://ideone.com/oGBQvs - proszę bardzo :)

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
0

http://pl.wikipedia.org/wiki/Ca%C5%82kowanie_numeryczne - polecam lekturę

O ile dobrze rozumiem całka to odwrotność pochodnej. W jaki sposób znajomość f(x) i f'(x) (szczególnie tego drugiego) dla konkretnego x ma pomóc w obliczeniu ∫f(x)?

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
1

Te pochodne mają posłużyć zastosowaniu czegoś na wzór metody parabol (Simpsona).
mając dwa punkty i pochodne w tych miejscach można wyznaczyć wielomian trzeciego stopnia.

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
2

@Ursinus OMG widzisz ty różnicę między listą punktów i pochodnych a JEDNĄ wartością (o której napisałeś w pierwszym poście)? Bo ja widzę dość sporą...
Mi to wygląda raczej na http://pl.wikipedia.org/wiki/Interpolacja_Hermite'a ;]

xfin
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Genewa
  • Postów: 597
1

No właśnie - LISTA. Tutaj już trapezy można stosować, a idąc dalej również metoda interpolacji jest osiągalna.
Zrozumienie zadania jest kluczem do napisania dobrego programu.

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
3

Trapezy to za mało, bo nie wykorzystasz pochodnych, więc tracisz dane.

Trzeba podzielić całkę na mniejsze przedziały określone przez przedziały funkcji i treść zadania i interpolować funkcję przez wielomian co najmniej trzeciego stopnia, rozwiązując takie równanie liniowe:
\begin{pmatrix} a_1<sup>3 &amp;  a_1</sup>2 &amp;  a_1 &amp; 1 \<br> 3 a_1^2 &amp; 2 a_1 &amp; 1 &amp; 0\<br> a_2<sup>3 &amp;  a_2</sup>2 &amp;  a_2 &amp; 1 \<br> 3 a_2^2 &amp; 2 a_2 &amp; 1 &amp; 0 \end{pmatrix} \cdot<br> \vec{p} =<br> \begin{pmatrix}b_1 \ c_1 \ b_2 \ c_2 \end{pmatrix}
Gdzie p to dane wyrazy wielomianu. indeksy 1 i 2 odróżniają sąsiednie punkty funkcji wybrane do interpolacji.
Wszelkie sytuacje, gdzie rozwiązań jest więcej niż jedno trzeba potraktować jako obniżenie stopnia wielomianu.

Ursinus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 161
0

A jak by to wyglądało dla metody Monte Carlo?

MarekR22
  • Rejestracja: dni
  • Ostatnio: dni
0

Mote Carlo sprawdza się dla całek przy większej liczbie wymiarów.
A w tym przypadku i tak problem będzie wyglądał dokładnie tak samo.

  • Rejestracja: dni
  • Ostatnio: dni
0

Normalnie to obliczasz wprost z definicji, tz. z rozwinięcia funkcji w szereg potęgowy:

f(x+a) = f(a) + f'(a)x + f''(a)x2/2! + ...

tam masz dane f(a), f'(a), f''(a), ... zatem możesz sobie obliczać co chcesz, bezpośrednio z tego szeregu.

Np. całka z takiego f będzie taka: F = xf(a) + f'(a)x2/2 + ... + C.

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

@fur też przez chwilę tak myślałem ale wydaje mi się ze on tam ma tylko pierwsze pochodne (ot zwykłe nieprecyzyjne zadanie) i chodzi o interpolacje hermita :) Poza tym to co podałeś to jest sposób na wyliczenie wartości przybliżonej wartości funkcji w punkcie a nie całki ;)

  • Rejestracja: dni
  • Ostatnio: dni
0
Shalom napisał(a):

@fur też przez chwilę tak myślałem ale wydaje mi się ze on tam ma tylko pierwsze pochodne (ot zwykłe nieprecyzyjne zadanie) i chodzi o interpolacje hermita :)

I dobrze myślałeś.
To jest tylko szczególny - skrajny przypadek interp. Hermita.

Masz dany tylko jeden punkt x0 = a, oraz wartości w tym punkcie: y(a), y'(a), itd.
Nie masz danych dla innych punktów, czyli to jest po prostu szereg potęgowy (to powinno wyjść po zastosowaniu wzorów Hermita).

Shalom napisał(a):

Poza tym to co podałeś to jest sposób na wyliczenie wartości przybliżonej wartości funkcji w punkcie a nie całki ;)

Mając funkcję masz wszystko, więc w tym i całkę i pochodne dowolnego rzędu.

y = f(x) = b + cx + dx2/2 + ...

z tego możesz sobie obliczyć dowolną pochodną jak i całkę (oznaczoną), czyli: yn, dla n całkowitych.

Ursinus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 161
0

A czy zamiast interpolacji Hermita można by użyć interpolacji Lagrange'a ?

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
1

Lagrange nie bierze pod uwagę pochodnych ;)

Ursinus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 161
0

A gdzie mógłbym znaleźć algorytm tej interpolacji Hermite'a? Lagrange'a mam w książce ale tego Hermite'a nigdzie nie mogę znaleźć :)

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

Ty tak poważnie? Google wyrzuca milion pdfów z wykładów z metod numerycznych na ten temat...

Ursinus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 161
0

No najlepsze jest to że w materiałach do tego zadania znalazłem coś o interpolacji Lagrange'a a o Hermite'a nic :)

Ursinus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 161
0

Dobra Panowie śliczne dzięki za pomoc i rozmowę he he :P

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.