-
21. Data: 2009-07-06 18:45:06
Temat: Re: Pocedura całkowania
Od: "Mariusz Marszałkowski" <b...@g...pl>
A.L. <a...@a...com> napisał(a):
> On Mon, 6 Jul 2009 16:05:40 +0000 (UTC), "Mariusz Marszałkowski"
> <b...@g...pl> wrote:
>
> >Mateusz Ludwin <n...@s...org> napisał(a):
> >
> >> Mariusz Marszałkowski wrote:
> >> > Wit Jakuczun <w...@g...com> napisał(a):
> >> >
> >> >> On 6 Lip, 16:55, "Mariusz Marsza=B3kowski" <b...@g...p
> >> >>> Je=B6li funkcja dana jest tablic=B1 to ku =B6cis=B3o=B6ci nie da si=EA p
> o=
> >> >> liczy=E6 jej
> >> >>> ca=B3ki :)
> >> >> To nie jest prawda, patrz rachunek prawdopodobie=F1stwa.
> >> >> O ca=B3ce Lebesque'a s=B3ysza=B3e=B6?
> >> >
> >> > "W uproszczeniu całkowanie oznacza obliczanie pola pod wykresem funkcji na
> >> > zadanym odcinku."
> >>
> >> Byłeś kiedyś na jakichś studiach?
> >
> >W czym problem?
> >http://pl.wikipedia.org/wiki/Ca%C5%82ka_Lebesgue%27
a
> >
> >Pozdrawiam
>
> W tym problem ze chyba nie byles na zadznych studiach...
>
Byłem i nijak to się ma do całek, natomiast zdaje dobrze służyć
do dosrania komuś.
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
-
22. Data: 2009-07-06 19:59:16
Temat: Re: Pocedura całkowania
Od: "Mariusz Marszałkowski" <b...@g...pl>
Wit Jakuczun <w...@g...com> napisał(a):
> On 6 Lip, 18:02, "Mariusz Marsza=B3kowski" <b...@g...pl>
> wrote:
>
> > Co najwy=BFej 3 stopie=F1. Dziedzina tak podanej funkcji to zbi=F3r {1,2,=
> 3,4}.
> > Nie umiem tego sca=B3kowa=E6.
> >
> A policzy=E6 prawdopodobie=F1stwo umiesz? Np. jakie jest
> prawdopodobie=F1stwo wyrzucenia parzystej liczby oczek
> na kostce?
> Do policzenia tego stosujesz w=B3a=B6nie ca=B3k=EA :)
>
Ok, nie rozumiem tak zdefiniowanej całki, jeśli kiedyś będę miał czas i
warunki to się chętnie zapoznam. Dziękuję za uświadomienie mi czegoś.
Pozdrawiam
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
-
23. Data: 2009-07-06 20:01:34
Temat: Re: Pocedura całkowania
Od: "slawek" <s...@h...pl>
Użytkownik "Mariusz Marszałkowski" <b...@g...pl> napisał w
wiadomości grup dyskusyjnych:h2t38s$5mu$...@i...gazeta.pl...
> Jeśli funkcja dana jest tablicą to ku ścisłości nie da się policzyć jej
> całki :) Pomijając ten mankament, lepsze wyniki uzyska się wtedy gdy
> się zastosuje lepszą aproksymację przebiegu pomiędzy znanymi wartościami.
> A nie znając oryginalnej funkcji, nie wiadomo jak ją lepiej aproksymować
> :)
Po prostu wierzymy iż pewna funkcja czasu u(t), która - jeżeli pominiemy
problemy czysto filozoficzne - opisuje ewolucję pewnego układu. Istnieje też
model matematyczny, który określa zależności jakie powinna spełniać pewna
funkcja psi(t), która - biorąc pod uwagę nasze ograniczenia - jest w
zasadzie równa u(t), a w każdym razie - niezłym jej przybliżeniem. Funkcja
psi jest ciągła (w danym przypadku), klasy C^n, może spełniać jeszcze
rozmaite warunki (np. na wartość asymptotyczną itd. itp.)
Teraz chcemy zbudować model numeryczny. Funkcja psi była i ciągła i miała
jako dziedzinę R. A komputer liczy na podzbiorze (o skończonej mocy) liczb
wymiernych. Nawet zapominając o tym że R i liczby Real to trochę dwie różne
rzeczy - i tak będziemy mieli szeregi skończone zamiast funkcji (rozumianych
jako odwzorowanie). Mamy teraz jakieś ciągi x[1], x[2], ..., x[n] oraz
y[1],y[2],...,y[n] i uważamy że one są takie że norma[ y[k] - psi(x[k])]
jest ogólnie mówiąc mała. Ale że nie mamy pojęcia jakie jest psi, to
wymyślamy sobie jakąś funkcję f, taką że norma[y[k] - f(x[k])] jest mała. I
pewnie wtedy funkcja f nienajgorzej aproksymuje funkcje psi, która z kolei
ma coś wspólnego z u(t), czyli f jakoś tak opisuje u(t). A całka z f
jakośtam ma się do całki z u.
Jeżeli całkujemy numerycznie po dyskretnych punktach - to aby to było
możliwe - konstruujemy sobie jakąś funkcję f. I jeżeli wzór jest wzorem
trapezów - to f jest łamaną, czyli w niektórych miejscach nie ma pochodnej.
Ale z jakiś powodów - np. wiemy że psi spełnia pewne rr czy jeszcze z innych
przyczyn - wiemy że f powinno być np. klasy C^n lub nawet C^nieskończoność.
I wtedy chyba lepiej aproksymować funkcjami sklejanymi wyższego nieco
stopnia. To zapewni że tam gdzie trzeba zrobić coś z obliczonymi punktami
funkcji f - da się zrobić (np. gdy potrzebna będzie 2-ga pochodna to można
ją policzyć będzie). Całe te całkowanie numeryczne to de facto całkowanie
funkcji aproksymującej.
Więc po prostu są dwie sprawy:
- da się czasem wiedzieć coś więcej o przebiegu funkcji - i najczęściej nie
jest to coś, co skłania do wzoru trapezów;
- aproksymacja łamaną nie jest w żadnym razie standardową, bo łamana nie
jest niczym lepsza niż np. sinusoida.
> Podstawowa metoda to zwiększanie "n" i użycie trapezów, niestety wraz
> ze wzrostem "n" wydłuża się czas - ale to wszystko z pewnością już wiesz
> :)
Niezupełnie. Aby zwiększyć n, trzeba popracować - koszt O(n^3) operacji się
mści. Ba, samo całkowanie nie jest sztuką dla sztuki - lecz właśnie jest
potrzebne do wyznaczania właśnie tych y[k] dla k=1,2,...,n Okazało się, że
przejście od trapezów do kubicznych splineów dało możliwość zaoszczędzenia
10 razy na n. Czyli 1000 krotnie szybciej jest. Ale nadal spline'y (jako
aproksymacja i sumowanie całki obliczonej analitycznie pod splinem o danych
współczynnikach) to chyba nie jest to co lubię najbardziej - choć sam
algorytm jest kompaktowy - jakieś 30 linijek, może 50. Ale właśnie szukam
czegoś lepszego - może mieć i 1000 linijek lub sam-nie-wiem-co.
> Nie wspominasz nic o metodzie montecarlo, ale jej dokładność także
> będzie zależała od dokładności aproksymacji wewnątrz przedziałów :)
Monte Carlo do tego się nie nadaje. Dane są "już" w postaci tablicy. Proste
sumowanie jej elementów będzie dokładniejsze i szybsze. W zasadzie i tak
takie sumowanie to metoda trapezów. W MC są narzuty na generowanie liczb
losowych itd. itp. - to się opłaca w niektórych przypadkach - ale chyba
właśnie nie przy takim jednowymiarowym całkowaniu.
> Nie masz takiej możliwości aby jako parametr funkcji całkującej przekazać
> funkcję całkowaną zamiast tablicy jej wartości?
Nie, tzn. np. wyznaczenie jakiegokolwiek y=f( ( x[k]+x[k+1] ) / 2 )
wymagałoby wyliczenia WSZYSTKICH "wartości pomiędzy", czyli (x[m]+x[m+1])/2
, dla m < k . To delikatnie mówiąc nie jest zbyt komfortowe - bo jak tu np.
marzyć o zmiennym kroku itd. itp.?!
slawek
-
24. Data: 2009-07-06 20:06:47
Temat: Re: Pocedura całkowania
Od: "slawek" <s...@h...pl>
Użytkownik "Wit Jakuczun" <w...@g...com> napisał w wiadomości grup
dyskusyjnych:e23df4d2-c8be-4fed-a001-ff1e161fac7c@37
g2000yqp.googlegroups.com...
>> Jeżeli krzywa jest przybliżana łamaną nie będącą prostą,
> Pozwolisz, że ten tekst sobie zachowam? Jest świetny.
Oczywiście. Prosta to szczególny przypadek łamanej, choć jest jako taka
pojęciem podstawowym u Euklidesa. Jeżeli wszystkie segmenty łamanej
przypadkiem będą współliniowe, to taka łamana nie będzie się różnić od
prostej. To zdegenerowany przypadek i trochę bez sensu go rozpatrywać - ale
w takim przypadku istniałaby wszędzie pochodna - i dlatego zastrzegłem na
wszelki przypadek, że nie o to mi chodzi. :)
slawek
-
25. Data: 2009-07-06 20:09:53
Temat: Re: Pocedura całkowania
Od: "slawek" <s...@h...pl>
Użytkownik "Mariusz Marszałkowski" <b...@g...pl> napisał w
wiadomości grup dyskusyjnych:h2t4tf$cf9$...@i...gazeta.pl...
> Jak policzyć całkę funkcji danej taką tabelą?
>
> x|1|2|3|4
> ------------
> y|4|3|4|3
Prawidłowa odpowiedź: zero. (Dziedzina ma miarę etc.)
Z drugiej strony, jeżeli x to czas, y to prędkość, to można już próbować
oszacować ile wynosi całka (czyli przebyta droga), bo wiemy że prędkość nie
może zmieniać się zbyt gwałtownie (prędkość jest ciągłą funkcją czasu) itd.
itp.
slawek
-
26. Data: 2009-07-06 20:18:30
Temat: Re: Pocedura całkowania
Od: "slawek" <s...@h...pl>
Użytkownik "Mariusz Marszałkowski" <b...@g...pl> napisał w
wiadomości grup dyskusyjnych:h2t6a5$htv$...@i...gazeta.pl...
> Nie wiem jak obliczyć pole jeśli funkcja jest określona tylko w punktach
> zawartych w tabeli.
I właśnie na to pytanie szukamy odpowiedzi. Jak do tej pory standardową
metodą była metoda trapezów. Oczywiście, takie podejście było
nie-do-przyjęcia z punktu widzenia matematyków. Ale każdy wie o co chodzi i
jak to się robi. Lepszą metodą jest aproksymacja funkcjami sklejanymi. Tzn.
zanim funkcja podcałkowa zacznie przypominać odcinek prostej to wyraźnie
robi się podobna do (kawałka) wielomianu.
Pytanie - czy jest jeszcze lepsza metoda?
> 2) Wybieramy losowo ( o rozkładzie liniowym ) punkt (x,y) gdzie x należy
Koszt obliczenia każdego punktu jest obrzydliwie wielki, chyba że punkt jest
już w tablicy. W zasadzie aby wyliczyć jeden punkt - trzeba skonstruować
całą tabelkę.
Metody MC stosują już do tego inni ludzie - tacy co nie całkują tylko od
razu bawią się w ping-ponga. Przy liczbie cząstek rzędu 10^23 może im trochę
RAM brakować...
slawek
-
27. Data: 2009-07-06 20:24:04
Temat: Re: Pocedura całkowania
Od: "Mariusz Marszałkowski" <b...@g...pl>
slawek <s...@h...pl> napisał(a):
> Nie, tzn. np. wyznaczenie jakiegokolwiek y=f( ( x[k]+x[k+1] ) / 2 )
> wymagałoby wyliczenia WSZYSTKICH "wartości pomiędzy", czyli (x[m]+x[m+1])/2
> , dla m < k . To delikatnie mówiąc nie jest zbyt komfortowe - bo jak tu np.
> marzyć o zmiennym kroku itd. itp.?!
A może da się cały zbiór danych dobrze aproksymować jakąś funkcją i
wtedy całkę funkcji aproksymującej?
Pozdrawiam
--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/
-
28. Data: 2009-07-06 20:28:00
Temat: Re: Pocedura całkowania
Od: "slawek" <s...@h...pl>
Użytkownik "A.L." <a...@a...com> napisał w wiadomości grup
dyskusyjnych:1ha4551u4tbnlo02cjmpjbbp07vgn3hilm@4ax.
com...
> W tym problem ze chyba nie byles na zadznych studiach...
Chyba jestem w KF u A.L. (co samo w sobie prawie jak Nobel :) ), ale nie
mogę sie powstrzymać od komentarza:
czy gdyby przedmówca A.L. odparł mu że owszem, skończył grekę klasyczną,
archeologię, eksternistycznie prawo a ponad to doktorat z filozofii i trzeci
stopień mistrzowski w karate - to jaki miałoby to wpływ na dalszą dyskusję?
Zero wiedzy o całkach. A warunek "bycia na studiach" - spełniony byłby jak
najbardziej! Cóż, ani Indiana Jones ani Lara C. nie są godnymi dyskusji z
A.L. :)
slawek
-
29. Data: 2009-07-06 20:45:32
Temat: Re: Pocedura całkowania
Od: "slawek" <s...@h...pl>
Użytkownik "Michoo" <m...@v...pl> napisał w wiadomości grup
dyskusyjnych:h2tcvs$kbn$...@n...onet.pl...
> mieć też równe pochodne do n-1 rzędu - jeżeli masz tylko tablicę z
> wartościami funkcji bazowej to jak zrobiłeś splajny stopnia większego niż
> 1(gdzie wychodzi łamana - jak we wzorze trapezów)?
Interpolacja spline'em. Ma się zgadzać wartość i m-1 pochodnych, ma być
wielomian stopnia m-tego pomiędzy węzłami. Z tego wychodzi jaki to spline.
Ze spline nietrudno policzyć całkę - skoro to wielomian, to całka jest
wielomianem, potem tylko granice całkowania - sumowanie po wszystkich
kawałkach. Patrz Forman S. Acton, Numerical Methods that Work, Princeton
University, (ISBN-13: 9780883854501 | ISBN-10: 0883854503) - niezła książka
na swój sposób. Nota bene, odjazd to jest jak to się robi na zespolonych
(zmiana deklaracji) - też działa, bo czemu miałoby nie działać?! :)
slawek
!***************************************************
****************************************************
****************************
!
! Spline integration
!
!***************************************************
****************************************************
****************************
double precision function intspl(y,n,h)
integer, parameter :: nmax = 16384
double precision h
double precision :: y(1)
double precision :: sa,sb,sc,sd,un
double precision, dimension(nmax) :: s,u
s(1) = 0.
s(n) = 0.
u(1) = 0.
sa = 0.
sb = 0.
sc = 0.
sd = 0.
if(n .gt. 1) then
do i=2,n-1
s(i)= -1.0 / (s(i-1) + 4.0)
u(i)=(y(i+1)-2*y(i)+y(i-1)) / h
u(i)=(12.0*u(i)/h - u(i-1))/(s(i-1)+4.0)
end do
do i=n-1,1,-1
s(i)=s(i)*s(i+1)+u(i)
end do
do i=1,n
sa = sa + (s(i+1)-s(i))
sb = sb + (s(i)/2.)
sc = sc + ((y(i+1)-y(i))/h - (2.*h*s(i)+h*s(i+1))/6.)
sd = sd + y(i)
end do
end if
intspl = h**4/4.*sa + h**3/3.*sb + h**2/2.*sc + h*sd
end function intspl
-
30. Data: 2009-07-06 20:54:04
Temat: Re: Pocedura całkowania
Od: bartekltg <b...@g...com>
On 6 Lip, 18:06, "slawek" <s...@h...pl> wrote:
> Nic nie daje. Jeżeli jest 10 tysięcy punktów to zastosowanie wzoru Boole'a
> czy Simpsona nie jest lepsze niż metoda trapezów. Różne wyniki mogą
> wprowadzać jedynie punkty na końcach krzywej. A tych jest paręnaście sztuk
> na kilkadziesiąt tysięcy punktów "wewnątrz". Weź sobie np. wzorek Simpsona i
> uśrednij wszelkie możliwe jego przyłożenie do tych 10 tysięcy punktów -
> ostatecznie każdy punkt wewnętrzny będzie miał taką samą "wagę".
Cytujac jednago z grupowiczow: glupoty pleciesz.
Z jednaj strony zachwalasz splajny, ze sa podobne do funkcji, z
drugiej strony to.
Trapezy, sipmson, czy podobne kwadratury wyzszych, to kwadratury
interpolacyjne.
Mozesz na nie patrzec tak, ze dopasowujemy do n (trzech) punktlow
wielomian
(parabole) i liczymy jej calke. Mozesz brac wyzszy stopien wielomianu
i rzadac
gladkosci na zszyciach (o, juz prawie splajny;)
Jesli funkcja jest odpowiedniej klasy, majac zadane n punktow,
kwadratura wyzszego
rzedu da znacznie lepszy wynik*). A to, ze roznica miedzy tym, a
trapezami jest taka,
ze co drugi wezel bierzemy z dwa razy wieksza waga niz inne.. jak
popatrzysz
na calke z paraboli to nawet nie jest takie zaskakujace.
Tak wiec:
zastanow sie, co mozesz powiedziec o klasie gladkosci swojej funkcji,
czy wiesz cos o jej pochodnych i dobierz kwadrature interpolacyjna,
ktora
bedzie dawala najmniejsze osacowanie bledu.
Simpsona mozesz smialo dawac. Albo wielomany 3 rzedu. Blad taki sam,
a prostrze niz splajny.
Jesli mozesz uzyskac liczbe punktow postaci 2^n, a funkcja jest
gladka,
to zdecydowanie romberg - algorytm jakby stworzony do Twojego
zagadnienia,
mamy tabelke rownooddalonych punktow i szacujemy calke.
*) do czasu. aproksymacja wielomaniami o wezlach rowno oddalonych zle
sie zachowuje,
pozdrawiam
bartek