aproksymacja wielomianami Hermite'a

Przybliżanie, metoda najmniejszych kwadratów, wielomiany interpolacyjne i inne.
anAAAA
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 23 gru 2020, o 22:57
Płeć: Kobieta
wiek: 22
Podziękował: 3 razy

aproksymacja wielomianami Hermite'a

Post autor: anAAAA »

Mam za zadanie wykonać aproksymację punktów postaci \(\displaystyle{ (x, y, z)}\), jest to najprościej mówiąc chmura punktów, gdzie funkcjami bazowymi są wielomiany Hermite'a.
Wielomiany Hermite'a są ortogonalne na przedziale \(\displaystyle{ \left( - \alpha , \alpha \right)}\) z wagą \(\displaystyle{ e^{- x^{2} }}\).
W aproksymacji trzeba w sumie policzyć iloczyny skalarne \(\displaystyle{ \left( \varphi _{i}, \varphi_{j}\right) i \left( f, \varphi_{n}\right)}\).
No i w przypadku iloczynu skalarnego \(\displaystyle{ \left( \varphi _{i}, \varphi_{j}\right)}\) trzeba policzyć całkę, mam pytanie odnośnie granic całkowania. Wiem że informację o tych graniach powinnam brać z zakresu tych punktów. Czyli dobrze myślę że \(\displaystyle{ x}\) jest w przedziale \(\displaystyle{ \left\langle a, b\right\rangle}\) i \(\displaystyle{ y}\) w przedziale \(\displaystyle{ \left\langle c, d\right\rangle}\) to właśnie te przedziały będą moimi granicami?
Drugie pytanie odnośnie tego drugiego iloczyn skalarnego\(\displaystyle{ \left( f, \varphi_{n}\right)}\), wiem, że trzeba go liczyć jako całkę. Tylko zastanawiam się w jakich graniach w takich samych jak ten poprzedni? Czy jeszcze jakoś inaczej? I jak w ogóle traktować te funkcję \(\displaystyle{ f}\)? Bo gdybym przybliżała nie punkty a np. funkcję \(\displaystyle{ \sin}\) no to bym wstawiała w całki funkcję \(\displaystyle{ \sin}\) a tu mam same wartości więc nie wiem jak się za to zabrać?
Ostatnio zmieniony 23 gru 2020, o 23:29 przez Jan Kraszewski, łącznie zmieniany 1 raz.
Powód: Używaj LaTeXa także do pojedynczych symboli matematycznych. Poprawa wiadomości.
szw1710

Re: aproksymacja wielomianami Hermite'a

Post autor: szw1710 »

Wielomiany Hermite'a są ortogonalne w przedziale symetrycznym. Więc najpierw warto przesunąć punkty do przedziału symetrycznego przez transformację afiniczną. Można sprawę rozważać także w przedziałach niesymetrycznych, ale tu waga wielomianów Hermite'a zmieni się (też w sposób afiniczny). Powiedzmy, że masz \(x\in [0,3].\) No to kiepskim pomysłem jest brać wielomiany Hermite'a na \([-3,3].\) Znacznie lepiej jest przesunąć przedział o \(1.5\) w lewo: \(x-1.5\in [-1.5;1.5].\) No i po takiej modyfikacji liczymy te wielomiany, a potem przesuwamy \(x\).

No więc bierzemy \(a=\min x_k,\;b=\max x_k.\) Dlatego \(x\in[a,b]\). Teraz bierzemy środek przedziału \(\frac{a+b}{2}\) i przesuwamy o ten środek:\[t=x-\frac{a+b}{2}\in\left[\frac{a-b}{2},\frac{b-a}{2}\right]=[-\alpha,\alpha]\]i mamy już przedział symetryczny. Zostawiamy \(y\) bez zmian. Wyznaczamy aproksymację dla \(t\), a potem przechodzimy do \(x=t+\frac{a+b}{2}.\)

Wszystkie iloczyny skalarne liczymy jako całki w tym właśnie przedziale \([-\alpha,\alpha].\) Wielomiany Hermite'a wyznaczamy w procesie ortogonalizacji Grama-Schmidta.

Jednak ja bym zrobił jeszcze inaczej: przetransformował wszystko do przedziału \([-1,1]\) przekształceniem \[t=\frac{2}{b-a}\left(x-\frac{a+b}{2}\right).\] W tym przedziale są

Kod: Zaznacz cały

https://pl.wikipedia.org/wiki/Wielomiany_Hermite%E2%80%99a
.
anAAAA
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 23 gru 2020, o 22:57
Płeć: Kobieta
wiek: 22
Podziękował: 3 razy

Re: aproksymacja wielomianami Hermite'a

Post autor: anAAAA »

szw1710 pisze: 24 gru 2020, o 13:55 Wielomiany Hermite'a są ortogonalne w przedziale symetrycznym. Więc najpierw warto przesunąć punkty do przedziału symetrycznego przez transformację afiniczną. Można sprawę rozważać także w przedziałach niesymetrycznych, ale tu waga wielomianów Hermite'a zmieni się (też w sposób afiniczny). Powiedzmy, że masz \(x\in [0,3].\) No to kiepskim pomysłem jest brać wielomiany Hermite'a na \([-3,3].\) Znacznie lepiej jest przesunąć przedział o \(1.5\) w lewo: \(x-1.5\in [-1.5;1.5].\) No i po takiej modyfikacji liczymy te wielomiany, a potem przesuwamy \(x\).

No więc bierzemy \(a=\min x_k,\;b=\max x_k.\) Dlatego \(x\in[a,b]\). Teraz bierzemy środek przedziału \(\frac{a+b}{2}\) i przesuwamy o ten środek:\[t=x-\frac{a+b}{2}\in\left[\frac{a-b}{2},\frac{b-a}{2}\right]=[-\alpha,\alpha]\]i mamy już przedział symetryczny. Zostawiamy \(y\) bez zmian. Wyznaczamy aproksymację dla \(t\), a potem przechodzimy do \(x=t+\frac{a+b}{2}.\)

Wszystkie iloczyny skalarne liczymy jako całki w tym właśnie przedziale \([-\alpha,\alpha].\) Wielomiany Hermite'a wyznaczamy w procesie ortogonalizacji Grama-Schmidta.

Jednak ja bym zrobił jeszcze inaczej: przetransformował wszystko do przedziału \([-1,1]\) przekształceniem \[t=\frac{2}{b-a}\left(x-\frac{a+b}{2}\right).\] W tym przedziale są

Kod: Zaznacz cały

https://pl.wikipedia.org/wiki/Wielomiany_Hermite%E2%80%99a
.
Dzięki za odpowiedź.
Tylko mam pytanie jeszcze bo piszesz, że najlepiej byłoby przekształcić do przedziału \(\displaystyle{ \left[ -1, 1\right]}\).
Bo ogólnie chodzi o to, że u mnie te wielomiany Hermite'a będą funkcją dwóch zmiennych \(\displaystyle{ H(x,y) = H(x)H(y)}\), już nie wchodząc bardzo jak generuje się te wielomiany, bo o nie o to chodzi.
Czy mogę zrobić liczenie całki w ten sposób zrobić, że jak mam całkę \(\displaystyle{ \int_{a}^{b} \int_{c}^{d}H(x,y) \dd x \dd y }\) mogę przekształcić w tak, że ta całka to będzie w sumie \(\displaystyle{ \int_{a}^{b}H(x) \dd x \int_{c}^{d}H(y)\dd y }\), gdzie \(\displaystyle{ x \in \left\langle a,b\right\rangle, y \in \left\langle c,d\right\rangle }\).
I przekształcając np. te całkę \(\displaystyle{ \int_{a}^{b}H(x) \dd x = \frac{b-a}{2} \int_{-1}^{1} H( \frac{b-a}{2}t + \frac{a+b}{2}) \dd t }\), gdzie to \(\displaystyle{ x = \frac{b-a}{2}t + \frac{a+b}{2} }\), a \(\displaystyle{ \dd t = \frac{ \partial x}{ \partial t} }\), czyli \(\displaystyle{ \dd t = \frac{b-a}{2} }\), dlatego mnożę razy to właśnie przed całką. I podobnie rozpiszę te całkę dla \(\displaystyle{ y}\). Czy w ten sposób postępuję poprawnie ? Bo ogólnie wiem, że wielomiany Hermiet'a mogę sobie zapisać właśnie w takiej postaci\(\displaystyle{ H(x,y) = H(x)H(y)}\), i w sumie zapisując nawet iloczyn skalarny dwóch wielomianów dalej zostaną mi rozdzielone te części dla \(\displaystyle{ x, y}\).
szw1710

Re: aproksymacja wielomianami Hermite'a

Post autor: szw1710 »

Post był bardzo nieprecyzyjny. Odniosłaś się do wielomianów Hermite'a jednej zmiennej, a tymczasem aproksymujesz funkcję dwóch zmiennych. Myślałem, że napis \((x,y,z)\) powstał przez pomyłkę. Aproksymacją funkcji wielu zmiennych nie zajmowałem się do tej pory. Jestem ekspertem w dziedzinie jednej zmiennej (jak możesz zobaczyć po moich postach w tym dziale i w kompendium). Ale nie można być ekspertem od wszystkiego. Dlatego odpowiedź na Twoje pytania wymagałaby ode mnie uzupełnienia wiedzy. :)

Ale Twoje przekształcenia wyglądają sensownie.
anAAAA
Użytkownik
Użytkownik
Posty: 4
Rejestracja: 23 gru 2020, o 22:57
Płeć: Kobieta
wiek: 22
Podziękował: 3 razy

Re: aproksymacja wielomianami Hermite'a

Post autor: anAAAA »

A racja mogłam bardziej zaznaczyć, że chodzi o aproksymację funkcji dwóch zmiennych, ale i tak dziękuje bardzo za pokazanie tego na funkcji jednej zmiennej bo bardzo dużo mi to rozjaśniło :D.
Mam jeszcze pytanie jakbym miała właśnie robić te aproksymację wielomianami Hermite'a dla funkcji jednej zmiennej. No to liczę te iloczyny skalarne \(\displaystyle{ \left\langle H_{m}(x),H _{n}(x) \right\rangle }\) no i tu mam sprawę jasną liczę te całki tak jak opisałeś wcześniej. No i muszę jeszcze policzyć iloczyny skalarne \(\displaystyle{ \left\langle f ,H _{i}(x) \right\rangle }\) no bo to też będą całki. I ja je powinnam liczyć w sensie \(\displaystyle{ x \in \left\langle a,b\right\rangle, y \in \left\langle c,d\right\rangle }\) no i ja tu powinnam te całkę liczyć w postaci \(\displaystyle{ \int_{c}^{d}f H _{i}(x) }\) czy ta całka powinna być po tym przedziale co jest \(\displaystyle{ x}\), tylko jak wtedy te funkcję \(\displaystyle{ f}\) traktować powinnam no bo jednak mam tylko punkty\(\displaystyle{ \left( x,y\right) }\), czyli wzoru tej funkcji \(\displaystyle{ f}\)no nie mam. Czy może powinnam brać kolejne wartości tego \(\displaystyle{ y}\)i podstawiać jako tę funkcję \(\displaystyle{ f}\),ale wydaje mi się że to jest bez sensu bo załóżmy mam \(\displaystyle{ 100}\)punktów to musiałbym wygenerować ciąg \(\displaystyle{ 100}\) wielomianów Hermite'a co myślę że jest totalnie bez sensu.
szw1710

Re: aproksymacja wielomianami Hermite'a

Post autor: szw1710 »

Sądzę, że najpierw powinniśmy określić stopień tej aproksymacji. Bo nie zbudujesz przecież szeregu nieskończonego. Przechodzimy na przedział \([-1,1]\) i liczymy te całki na zbiorze dyskretnym np. wzorem Simpsona, jeśli \(x\) są rozłożone równomiernie. Samych wielomianów Hermite’a wtedy nie wyznaczasz, bo one są dane.

Jeśli \(x\) nie są rozłożone równomiernie, to stosujemy mniej dokładną metodę trapezów.

Innym podejściem jest tzw. curve fitting. Można by go zrobić splinami kubicznymi. Komputer świetnie daje sobie radę z dużymi zbiorami danych. Sto danych czy dziesięć tysięcy danych to nie jest duży zbiór.
ODPOWIEDZ