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 :)
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.
@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ć ;]
http://ideone.com/oGBQvs - proszę bardzo :)
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)?
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.
@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 ;]
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.
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:
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.
A jak by to wyglądało dla metody Monte Carlo?
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.
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.
@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 ;)
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.
A czy zamiast interpolacji Hermita można by użyć interpolacji Lagrange'a ?
Lagrange nie bierze pod uwagę pochodnych ;)
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źć :)
Ty tak poważnie? Google wyrzuca milion pdfów z wykładów z metod numerycznych na ten temat...
No najlepsze jest to że w materiałach do tego zadania znalazłem coś o interpolacji Lagrange'a a o Hermite'a nic :)
Dobra Panowie śliczne dzięki za pomoc i rozmowę he he :P