Programowanie funkcyjne/Strumienie/Ćwiczenia: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Przemek (dyskusja | edycje)
Nie podano opisu zmian
 
Przemek (dyskusja | edycje)
Linia 17: Linia 17:
**interpolacje wybranych funkcji (np.: <math>e^x</math>, <math>\ln x</math>, <math>\cos x</math>, <math>\sin x</math>),
**interpolacje wybranych funkcji (np.: <math>e^x</math>, <math>\ln x</math>, <math>\cos x</math>, <math>\sin x</math>),
**mnożenie szeregów potęgowych,  
**mnożenie szeregów potęgowych,  
**Niech <math>X</math> będzie szeregiem potęgowym o pierwszym współczynniku równym 1; oblicz odwrotność <math>X</math>, tzn. taki szereg <math>S</math>, że <math>X \cdot S = 1</math>; niech <math>X = 1 + x \cdot X'</math>, wówczas:
**Niech <math>X</math> będzie szeregiem potęgowym o pierwszym współczynniku równym 1; oblicz odwrotność <math>X</math>, tzn. taki szereg <math>S</math>, że <math>X \cdot S = 1</math>; niech <math>X = 1 + x \cdot X'</math>, wówczas: <center><math>\begin{matrix} (1 + x \cdot X') \cdot S = 1 \\  S + x \cdot X' \cdot S = 1 \\  S = 1 - x \cdot X' \cdot S \end{matrix}</math></center>
<center><math>\begin{matrix} (1 + x \cdot X') \cdot S = 1 \\
  S + x \cdot X' \cdot S = 1 \\
  S = 1 - x \cdot X' \cdot S \end{matrix}</math></center>
**Korzystając z wyników poprzedniego zadania zaimplementuj dzielenie szeregów potęgowych.
**Korzystając z wyników poprzedniego zadania zaimplementuj dzielenie szeregów potęgowych.

Wersja z 20:38, 19 lip 2006

Ćcwiczenia

Zdefiniuj strumienie i narysuj schematy odpowiadające tym definicjom:

  • Zdefiniuj procedurę for_each, która wykonuje zadaną procedurę na kolejnych elementach strumienia.
  • Zdefiniuj procedurę print_int_stream wypisującą elementy strumienia liczb całkowitych.
  • Użyj do tego celu procedury for_each z poprzedniego zadania.
  • strumień silni,
  • przeplot elementów dwóch strumieni (można sprytnie, zamieniając w wywołaniu rekurencyjnym miejscami argumenty),
  • strumień wszystkich par (uporządkowanych) elementów z dwóch danych strumieni (w dowolnej kolejności),
  • strumień liczb całkowitych, które w rozkładzie na liczby pierwsze mają tylko 2, 3 i 5 [R.Hamming],
  • Zdefiniuj w sposób uwikłany strumień, którego i-ty wyraz jest równy (2i)!i!.
  • Zdefiniuj w sposób uwikłany strumień złożony z tych dodatnich liczb całkowitych, które w rozkładzie na czynniki pierwsze mają tylko liczby 2 i 3, oraz rozkładają się na nieparzystą liczbę czynników pierwszych.
  • Dany jest nieskończony strumień liczb s=(s1,s2,s3,). Jego strumień różnicowy, to strumień postaci: s=(s2s1,s3s2,s4s3,). Strumień różnicowy drugiego rzędu, to strumień różnicowy strumienia różnicowego. Ogólniej, strumień różnicowy n-tego rzędu polega na n-krotnym wzięciu strumienia różnicowego, zaczynając od s. Zdefiniuj, w sposób uwikłany, strumień złożony z pierwszych elementów strumieni różnicowych kolejnych rzędów

(s1,s2s1,(s3s2)(s2s1),). Narysuj diagram ilustrujący rozwiązanie.

  • szereg potęgowy a0+a1x+a2x2+ możemy reprezentować jako strumień jego kolejnych współczynników; przy takiej implementacji szeregów potęgowych zaimplementuj:
    • pochodną,
    • całkę,
    • interpolacje wybranych funkcji (np.: ex, lnx, cosx, sinx),
    • mnożenie szeregów potęgowych,
    • Niech X będzie szeregiem potęgowym o pierwszym współczynniku równym 1; oblicz odwrotność X, tzn. taki szereg S, że XS=1; niech X=1+xX, wówczas:
      (1+xX)S=1S+xXS=1S=1xXS
    • Korzystając z wyników poprzedniego zadania zaimplementuj dzielenie szeregów potęgowych.