Narzędzia użytkownika

Narzędzia witryny


cw-6-rekurencja

==== Wskaźniki: definiowanie, operator & i dereferencji * ==== Należy w programie zdefiniować zmienne ''a'', ''b'' i ''x'' oraz dwie zmienne typu wskaźnikowego. Zmiennym ''a'' i ''b'' należy nadać przykładowe wartości początkowe. Do zmiennych wskaźnikowych należy podstawić adresy zmiennych ''a'' i ''b''. Do zmiennej ''x'' należy podstawić sumę wartości pamiętanych w ''a'' i ''b'', ale przy obliczaniu tej sumy nie należy używać nazw ''a'' i ''b''. ==== Funkcja obliczająca dwie wartości ==== W funkcji ''main'' definiujemy cztery zmienne typu ''double''. W dwóch z nich zapisujemy część rzeczywistą i urojoną liczby zespolonej. Wywołujemy funkcję, która oblicza moduł i argument tej liczby. Te wyniki zapisuje do pozostałych dwóch zmiennych zdefiniowanych w funkcji głównej. Po powrocie do ''main'' obliczone wartości są wyprowadzone na ekran. ==== Funkcja obliczająca dwie wartości - przykład 2. ==== Każdy dzień w roku można wskazać podając jego numer w roku albo jego numer w miesiącu i numer tego miesiąca, np. 35 albo 4,2. Dla uproszczenia można przyjąć, że rok nie jest przestępny. Program w funkcji ''main'' wczytuje numer dnia w roku, a następnie wywołuje funkcję, która oblicza odpowiadający mu numer miesiąca i numer dnia tego miesiąca. Obliczoną datę wyprowadza na ekran funkcja ''main''. ==== Rekurencja - obliczanie silni ==== Proszę napisać 2 wersje programu obliczającego wartość silni zadanej liczby: * z wykorzystaniem iteracji w pętli, * z użyciem funkcji wywoływanej rekurencyjnie. ==== Rekurencja - adaptacyjny algorytm obliczania całki oznaczonej metodą Simpsona ==== **Pojęcie całki oznaczonej** funkcji w przedziale od ''a'' do ''b'' zastąpimy - dla uproszczenia - polem powierzchni ograniczonej osią odciętych, wykresem ''x=a'', wykresem ''x=b'' oraz wykresem funkcji (załóżmy, że funkcja przyjmuje wartości dodatnie). **Metoda Simpsona** pozwala obliczyć przybliżoną wartość ww. pola. Przepis: S = h*(f(a) + 4*f(a/2+b/2) + f(b))/6, h - długość przedziału całkowania = b-a Obliczone ''S'' nie jest dokładną wartością pola - tylko jej przybliżeniem - ale błąd przybliżenia jest mały jeżeli ''h'' jest małe. **Algorytm adaptacyjny** ma na celu osiągnięcie wyniku (pola) z błędem nie większym niż zadany = ''Delta''. * W tym celu stosujemy przepis Simpsona dla całego przedziału od ''a'' do ''b''. * Następnie dzielimy ten przedział na 2 połowy. Oznaczmy punkt w połowie przedziału jako ''c''. * Wzór Simpsona stosujemy teraz osobno dla lewej połówki (od ''a'' do ''c'') i dla prawej (od ''c'' do ''b''). * Otrzymujemy przybliżone wartości dwóch części obliczanego pola np. ''S1'' i ''S2''. * Jeżeli suma ''S1'' i ''S2'' różni się od ''S'' nie więcej niż o ''Delta'', to uznajemy, że otrzymany wynik jest dostatecznie dokładny i kończymy algorytm. * W przeciwnym przypadku stajemy przed dwoma zadaniami - obliczyć pole każdej połówki (lewej, a później prawej), każdej z błędem nie większym niż ''Delta/2''. * Zauważmy, że są to jakościowo dokładnie dwa takie same zadania, jak zadanie pierwotne (obliczyć pole z błędem nie większym niż ''Delta'')! === Do napisania: Wersja podstawowa === W programie jest funkcja, która oblicza wartości funkcji podcałkowej (funkcji określającej wykres ograniczający pole, którego powierzchnia będzie obliczana). W funkcji ''main'' program: * wczytuje granice przedziału całkowania i maksymalny błąd, * wywołuje funkcję, która rekurencyjnie oblicza pole, * wyprowadza na ekran powierzchnię obliczonego pola. === Wersje rozszerzone === * Należy tak napisać program, aby liczba obliczeń wartości zadanej funkcji była jak najmniejsza. * Program wyprowadza wartości zmiennej niezależnej ''x'' (od najmniejszej do największej), w których obliczana była zadana funkcja.

cw-6-rekurencja.txt · ostatnio zmienione: 2018/10/26 12:54 przez miller