Programowanie funkcyjne/Procedury wyższych rzędów/Ćwiczenia: Różnice pomiędzy wersjami
(Nie pokazano 18 wersji utworzonych przez jednego użytkownika) | |||
Linia 1: | Linia 1: | ||
==Praca domowa== | |||
* Wygładzenie funkcji z odstępem <math>dx</math> polega na uśrednieniu <math>f(x - dx)</math>, <math>f(x)</math> i <math>f(x + dx)</math>. Napisz procedurę wygładzającą daną funkcję z zadanym odstępem. | |||
* Jaki typ ma procedura <tt>compose</tt> zastosowana w wyrażeniu: | |||
compose twice twice;; | |||
==Ćwiczenia== | ==Ćwiczenia== | ||
{{cwiczenie|[Semantyka wyrażeń]|| | |||
Przypomnij sobie zadanie dotyczące wyliczania wartości wyrażeń. | |||
Rozszerz składnię wyrażeń o zmienne. | |||
Procedura obliczająca wartość wyrażenia będzie wymagać dodatkowego parametru -- wartościowania zmiennych, czyli procedury, która nazwie zmiennej przyporządkowuje jej wartość. | |||
}} | |||
{{cwiczenie|[Przybliżanie zer przez bisekcję]|| | |||
Zaimplementuj przybliżanie zer funkcji przez bisekcję. | |||
* | Parametrami powinny być: | ||
* funkcja <math>f</math>, której zer szukamy, | |||
* dwa punkty, w których funkcja przyjmuje wartości przeciwnych znaków, | |||
* | * precyzja poszukiwać, tzn. taki <math>\varepsilon</math>, że jeżeli wynik <math>x</math> spełnia <math>|f\ x| \le \varepsilon</math>, to jest dobrym przybliżeniem zera. | ||
* | }} | ||
== Laboratorium == | |||
{{cwiczenie|[Odwrotność funkcji]||}} | |||
Niech <math>f : \mathcal{R} \to \mathcal{R}</math> będzie funkcją 1-1 i "na" oraz taką, że <math>f(0) = 0</math>, | |||
<math>f</math> jest rosnąca i <math>|f(x)| \ge |x|</math>. Zaimplementuj procedurę <tt>odwrotnosc</tt>, | |||
której wynikiem dla parametru <math>f</math> będzie przybliżenie <math>f^{-1}</math> z dokładnością zadaną przez stałą <tt>epsilon</tt> | |||
(czyli jeśli <tt>g = odwrotnosc f</tt>, to <math>\forall x\ |g(x) - f^{-1}(x)| \le epsilon</math>). | |||
{{cwiczenie|[Pierwiastkowanie jako punkt stały [AS] ]|| | |||
Przedstawione w wykładzie tłumienie przez uśrednianie opiera się na średniej arytmetycznej. | |||
Czasami zamiast średniej arytmetycznej należy użyć średniej ważonej, z odpowiednio dobraną wagą. | |||
Punktem stałym funkcji <math>y \to \frac{x}{y^{n-1}}</math> jest <math>\sqrt[n]{x}</math>. | |||
Zaimplementuj obliczanie <math>n</math>-tego pierwiastka z <math>x</math> za pomocą obliczania punktu stałego i | |||
tłumienia przez uśrednianie z odpowiednimi wagami. | |||
Uwaga: W jaki sposób wagi zależą od <math>n</math>? | |||
}} | |||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"> | |||
<span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie</span> | |||
<div class="mw-collapsible-content" style="display:none"> | |||
* | Uśrednienie funkcji <math>f</math> z wagą <math>a</math> możemy zdefiniować następująco: | ||
'''let''' usrednij a f x = a *. (f x) +. (1. -. a) *. x;; | |||
''val usrednij : float -> (float -> float) -> float -> float = <fun>'' | |||
Żeby iterowanie przekształcenia <math>y \to \frac{x}{y^{n-1}}</math> było zbieżne do jego punktu stałego, musimy je uśrednić ze współczynnikiem mniejszym od <math>\frac{2}{n}</math>, np. <math>\frac{2}{n+1}</math>. | |||
'''let''' root n x = | |||
punkt_staly (usrednij (2. /. float(n+1)) (fun y -> x /. potega y (n-1))) 1.;; | |||
</div></div> |
Aktualna wersja na dzień 13:58, 1 cze 2020
Praca domowa
- Wygładzenie funkcji z odstępem polega na uśrednieniu , i . Napisz procedurę wygładzającą daną funkcję z zadanym odstępem.
- Jaki typ ma procedura compose zastosowana w wyrażeniu:
compose twice twice;;
Ćwiczenia
Ćwiczenie [Semantyka wyrażeń]
Przypomnij sobie zadanie dotyczące wyliczania wartości wyrażeń. Rozszerz składnię wyrażeń o zmienne. Procedura obliczająca wartość wyrażenia będzie wymagać dodatkowego parametru -- wartościowania zmiennych, czyli procedury, która nazwie zmiennej przyporządkowuje jej wartość.
Ćwiczenie [Przybliżanie zer przez bisekcję]
Zaimplementuj przybliżanie zer funkcji przez bisekcję. Parametrami powinny być:
- funkcja , której zer szukamy,
- dwa punkty, w których funkcja przyjmuje wartości przeciwnych znaków,
- precyzja poszukiwać, tzn. taki , że jeżeli wynik spełnia , to jest dobrym przybliżeniem zera.
Laboratorium
Ćwiczenie [Odwrotność funkcji]
Niech będzie funkcją 1-1 i "na" oraz taką, że , jest rosnąca i . Zaimplementuj procedurę odwrotnosc, której wynikiem dla parametru będzie przybliżenie z dokładnością zadaną przez stałą epsilon (czyli jeśli g = odwrotnosc f, to ).
Ćwiczenie [Pierwiastkowanie jako punkt stały [AS] ]
Przedstawione w wykładzie tłumienie przez uśrednianie opiera się na średniej arytmetycznej. Czasami zamiast średniej arytmetycznej należy użyć średniej ważonej, z odpowiednio dobraną wagą. Punktem stałym funkcji jest . Zaimplementuj obliczanie -tego pierwiastka z za pomocą obliczania punktu stałego i tłumienia przez uśrednianie z odpowiednimi wagami. Uwaga: W jaki sposób wagi zależą od ?
Rozwiązanie