Narzędzia użytkownika

Narzędzia witryny


cw-6-rekurencja

**To jest stara wersja strony!** ----

A PCRE internal error occured. This might be caused by a faulty plugin

==== 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. ==== 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 ''y=a'', wykresem ''y=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.1446666897.txt.gz · ostatnio zmienione: 2015/11/04 20:54 przez miller