Ćwiczenia na procedury wyższych rzędów, ale bez standardowych procedur wyższych rzędów przetwarzających listy:
-
Potęgowanie funkcji.
Zasymuluj działanie na prostych przykładach:
iterate 2 (function x -> x * (x+1)) 2
iterate 3 (function x -> x * (x+1)) 1
rozrysowując ramki.
W przypadku szybszego potęgowania funkcji co tak na prawdę jest obliczane szybciej: funkcja wynikowa, czy jej wartość?
Rozwiązania
-
Wygładzenie funkcji z odstępem \(dx\) polega na uśrednieniu \(f(x - dx)\), \(f(x)\) i \(f(x + dx)\).
Napisz procedurę wygładzającą daną funkcję z zadanym odstępem.
Zwróć uwagę na kolejność argumentów.
-
Niech \(f : {\cal R} \to {\cal R}\) będzie funkcją:
- wzajemnie jednoznaczną, czyli 1-1 i ,,na'',
- ciągłą,
- rosnącą i to tak, że \(\forall_{d>0} f(x+d) - f(x) \ge d\),
- oraz taką, że \(f(0)=0\).
Zaimplementuj procedurę odwrotnosc
, której wynikiem dla parametru \(f\) będzie przybliżenie \(f^{-1}\) z dokładnością
zadaną przez stałą epsilon
(czyli jeśli \(g = (\mathtt{odwrotnosc}\ f)\), to \(\forall x\ |g(x) - f^{-1}(x)| \le \mathtt{epsilon}\)).
-
Zaimplementuj aproksymację funkcji za pomocą szeregu Taylora.
Twoja procedura powinna mieć następujące parametry: liczbę sumowanych wyrazów szeregu punkt, w którym
badana jest przybliżana funkcja, oraz daną funkcję.
Wynikiem powinno być przybliżenie funkcji.
Zastosuj przybliżenie pochodnej oraz sumy częściowe szeregów, przedstawione na wykładzie.