Wielomiany Czebyszewa definiujemy rekurencyjnie: ,
oraz
\begin{equation}(#)
T_{n+1}(x)=2xT_n(x)-T_{n-1}(x)
\end{equation}
albo ze wzoru:
\begin{equation}(#)
T_n(x)=\cos(n*\arccos(x)) \qquad x\in[-1,1].
\end{equation}
W tym rozdziale przetestujemy podstawowe własności tych wielomianów.
- Napisz rekurencyjną funkcję octave'a obliczającą wartość wielomianu zadanego poprzez współczynniki w bazie Czebyszewa wprost ze wzoru rekurencyjnego ( [link]), tzn. parametrami funkcji będą:
-
argument dla którego chcemy obliczyć wartość wielomianu
-
- wektor zawierający współczynniki
takie, że
.
-
- stopień wielomianu (parametr opcjonalny, można tę wartość uzyskać
z wektora)
- Napisz nierekurencyjną funkcję octave'a
function [Y]=Czebyszew(X,a,n)
obliczającą wartość wielomianu zadanego poprzez współczynniki w bazie Czebyszewa z wzoru ( [link]), tzn. parametry wejściowe funkcji
to: - macierz
, wymiaru
- wektor współczynników
takich, że
-
stopień wielomianu; ten parametr może być opcjonalny, jeśli go nie podamy to funkcja powinna przyjąć, że
to wymiar wektora współczynników minus jeden.
- Sprawdź obliczeniowo, czy powyższe wzory na wielomiany Czebyszewa: wzór definiujący wielomiany Czebyszewa rekurencyjnie ( [link]) i ( [link]), są zgodne na odcinku
. Tzn. dla dużej ilości np.
losowych punktów na
policz wartości
ze wzoru
oraz ze wzoru rekurencyjnego ( [link]).
Policz maksimum wartości absolutnych z różnicy między wartościami wielomianu obliczonymi obiema metodami. Porównaj czas obliczania wartości tego wielomianu obydwoma wzorami.
Powtórz testy ale dla wielomianów innych stopni, np.
.
- Narysuj korzystając z wzoru
wykres wielomianów
dla
. Policz dyskretną normę maksimum na siatce. Czy wynosi jeden? Policz na wykresie zera oraz ekstrema każdego z wielomianów.
- Wyznacz zera i ekstrema
i
ze wzoru
. Sprawdź wartości
tych wielomianów w jego zerach i ekstremach. - Sprawdzenie własności optymalności zer wielomianu Czebyszewa jako węzłów interpolacji Lagrange'a.
Chcemy eksperymentalnie sprawdzić, czy wielomian
ma minimalną normę supremum na
wśród wszystkich wielomianów postaci
.
Policz dla
różnych losowych węzłów
,
z odcinka
dla
i kilkuset różnych losowych zestawów
przybliżoną normę supremum wielomianu.
Przeprowadź testy również
dla węzłów Czebyszewa (czyli zer) oraz węzłów równoodległych dla tego samego
.
- Sprawdzenie własności ekstremalnej wielomianów Czebyszewa.
Z teorii wiadomo, że wielomian
ma minimalną normę supremum na
wśród wszystkich wielomianów postaci
Chcemy sprawdzić eksperymentalnie, czy ta własność się potwierdzi.
Policz dla
losowych współczynników
dla
przybliżoną normę supremum wielomianu:Przetestuj dla
i co najmniej kilku tysięcy różnych losowych zestawów
węzłów. Węzły losujemy funkcjąrandn()
zwracającą liczby losowe o rozkładzie normalnym. - Sprawdzenie własności ekstremalnej wielomianów Czebyszewa przyjmujących ustaloną wartość poza
.
Chcemy sprawdzić, czy dla dowolnego punktu
i
wielomian
ma minimalną normę supremum na
wśród wszystkich wielomianów
stopnia nie większego od
przyjmujących wartość
w punkcie
.
Policz dla
losowych współczynników
z
dla
i co najmniej kilku tysięcy różnych losowych zestawów
węzłów
przybliżoną normę supremum wielomianui porównaj z normą supremum
na
równą
(dlaczego tyle ona wynosi?).
Węzły losujemy funkcją
randn()
zwracającą liczby losowe o rozkładzie normalnym. - \textrm{Funkcja octave'a służąca przybliżonemu obliczaniu całek po odcinkach} (zadanie pomocnicze)
Zapoznaj się z funkcją octave'a
quad()
.Policz całkę przy pomocy funkcji
quad()
z
na
.
- (trudne) Iloczyn skalarny typu
.
Napisz funkcję octave'a:
function [nl2]=IlSkL2w(FCN,GCN,a,b,FCNW)komendy octave'a
nl2=....
endfunction
która oblicza iloczyn skalarny typu
z wagą
tzn.:
dla danej funkcji wagowej
i funkcji
.
Parametry funkcji to:
-
wskaźniki do funkcji
,
do dwóch funkcji octave'a
function y=f(x)y=......
endfunctionfunction y=g(x)
y=......
endfunctionobliczających odpowiednio wartości funkcji
i
dla
.
-
,
- końce odcinka całkowania
,
-
to wskaźnik do funkcji wagowej
function y=w(x)y=......
endfunction - Ortogonalność wielomianów Czebyszewa w
.
Sprawdź eksperymentalnie w octavie, np. za pomocą funkcji
quad()
lub własnej funkcji z poprzedniego zadania, czy wielomiany Czebyszewa tworzą układ ortogonalny w, tzn. czy prawdą jest, że
Sprawdź powyższe zależności dla różnych
różnej wielkości np. dla
i
.
Funkcja octave'a ma zwrócić wartość .
Przetestuj tę funkcję dla , tzn. narysuj dwa wykresy
raz korzystając z tej funkcji oraz drugi raz korzystając wprost ze wzoru ( [link]).
Funkcja octave'a powinna zwrócić macierz , wymiaru
z wartościami
.
Funkcja ma korzystać z wzoru rekurencyjnego ( [link]), ale jako funkcja octave'a ma być nierekurencyjna. Koszt algorytmu powinien wynosić
.
Narysuj dwa wykres
- jeden korzystając z tej funkcji oraz drugi - ze wzoru ( [link]).
Funkcja powinna zwrócić przybliżenie iloczynu skalarnego obliczone za pomocą funkcji octave'a quad()
.
W przypadku wywołania funkcji IlSkL2()
tylko z czterema pierwszymi argumentami (tzn. bez podania wskaźnika do wagi) funkcja powinna zwrócić iloczyn skalarny z wagą .