Wyliczanie rekurencyjne funkcji

Definicja szeregów liczbowych, kryteria zbieżności szeregów. Suma szeregu i iloczyn Cauchy'ego szeregów. Iloczyny nieskończone.
Awatar użytkownika
MasterSplynter
Użytkownik
Użytkownik
Posty: 23
Rejestracja: 20 paź 2014, o 21:31
Płeć: Kobieta
Lokalizacja: Bytom
Podziękował: 7 razy

Wyliczanie rekurencyjne funkcji

Post autor: MasterSplynter »

Proszę o jakąkolwiek pomoc przy zadaniu: Wylicz rekurencyjnie \(\displaystyle{ \ln \left( 5 \right)}\) z dokładnością \(\displaystyle{ 10^{-6}}\).
I muszę koniecznie skorzystać z sposobu / wzorów podanych na wykładzie, które wyglądają dokładnie tak:
Funkcja \(\displaystyle{ \ln \left( x \right)}\)
Dla \(\displaystyle{ x \in \mathbb{R}}\) wówczas (liczba jako cecha, mantysa) \(\displaystyle{ x = 2^{m} z}\) gdzie \(\displaystyle{ m \in \mathbb{Z} , \frac{1}{2} \le z < 1}\).
\(\displaystyle{ \ln \left( x \right) = \ln \left( 2^{m}z \right) = m \ln \left( 2 \right) + \ln \left( z \right)}\)
\(\displaystyle{ \ln \left( z \right) = -2 \sum_{ k=1 }^{\infty} \frac{1}{2k - 1} \left( \frac{1-z}{1+z} \right)}\)
Niech \(\displaystyle{ \left( \frac{1-z}{1+z} = \partial \right)}\) wówczas:
\(\displaystyle{ \ln \left( x \right) = m \ln 2 - 2\sum_{ k=1 }^{\infty} \frac{1}{2k - 1} \partial ^ {2k-1}}\) gdzie\(\displaystyle{ 0 < \partial \le \frac{1}{3}}\)
\(\displaystyle{ \ln \left( 2 \right)}\) wartość bierzemy z tablic matematycznych
Wyliczenie rekurencyjne:
\(\displaystyle{ \begin{cases} \ln \left( x \right) = m \ln 2 - 2\sum_{ k=1 }^{n} u_{k} + R_{n} \\ u_{1} = \partial , u_{k+1}= \frac{ \partial ^2}{2k-1} u_{k} \end{cases}}\)
Kończymy zadanie gdy \(\displaystyle{ u_{n} < 4 \epsilon}\)
Wzór podany wcześniej na \(\displaystyle{ R_{n} \left( x \right) = \frac{f^{n+1} \left( \partial \right) }{ \left( n+1 \right) ! } x^{n+1}}\)

Bardzo bym prosiła o wskazówkę jak zacząć / rozpoczęcie tego zadania, albo pomóc mi przebrnąć przez to krok po kroku.
Na prawdę szukałam na internecie w książkach jakiś pomocy ale niestety nic przydatnego nie znalazłam.
A gdy samodzielnie starałam się liczyć to poziom zagmatwania się był tak duży, że wyniki wychodziły mi totalnie bez sensu.
Chcę to policzyć sama ale od czego zacząć, chciałabym żeby ktoś kontrolował to co robię.
Ostatnio zmieniony 3 mar 2015, o 07:39 przez Afish, łącznie zmieniany 1 raz.
Powód: Punkt 2.7 instrukcji LaTeX-a. Funkcje matematyczne należy zapisywać: sinus - \sin, logarytm - \log, logarytm naturalny - \ln itd.
SlotaWoj
Użytkownik
Użytkownik
Posty: 4211
Rejestracja: 25 maja 2012, o 21:33
Płeć: Mężczyzna
Lokalizacja: Kraków PL
Podziękował: 2 razy
Pomógł: 758 razy

Wyliczanie rekurencyjne funkcji

Post autor: SlotaWoj »

Podany przez Ciebie algorytm rekurencyjnego obliczania wartości logarytmy naturalnego jest zły.

Zamiast:
  • \(\displaystyle{ \begin{cases}\ln(x) = m\ln 2 - 2\sum_{k=1}^n u_k + R_{n} \\
    u_1=\partial, u_{k+1}= \frac{\partial^2}{\red{2k-1}}\black{u_k}\end{cases}}\)
powinno być:
  • \(\displaystyle{ \begin{cases}\ln(x) = m\ln 2 - 2\sum_{k=1}^n \frac{u_k}{\red{2k-1}}\black{+} R_{n} \\
    u_1=\partial, u_{k+1}= \partial^2u_k\end{cases}}\)
Pewnie prowadzącemu wykład coś się „pomyliło”.

Algorytm pierwotny jest zbieżny do wartości różniącej się od poprawnej. Dla \(\displaystyle{ \ln5}\) różnica wynosi \(\displaystyle{ 2,01\%}\). Gdyby był wolniej zbieżny, to różnica byłaby „wyraźniejsza”.

Algorytm pierwotny jest zbieżny do wartości \(\displaystyle{ \ln 5,164590=1,641825}\) , podczas gdy \(\displaystyle{ \ln 5=1,609438}\) .

Poniżej podaję „wstęp” i pierwsze kroki poprawnego algorytmu.
  • \(\displaystyle{ 5=2^3\hbox{·}5/8 \quad \hbox{czyli }z=5/8}\)
    \(\displaystyle{ \partial=3/13}\)
    \(\displaystyle{ \epsilon=10^{-6} \quad \hbox{czyli} \ 4\epsilon=4\hbox{·}10^{-6} \\
    \ln 2=0,693147 \quad \hbox{(conajmniej 6 cyfr, bo} \ 10^{-6})}\)


    \(\displaystyle{ \red{u_1}\ \black{=}\ \partial=3/13 \\
    \ln5=3\ln 2-2\red{u_1} \\
    \red{u_1}\black{<}4\epsilon \quad \hbox{gdy tak, obliczamy wartość powyżej}}\)


    \(\displaystyle{ \green{u_2}\ \black{=}\ \partial^2\red{u_1} \\
    \black{\ln}5=3\ln 2-2u_1-\frac{2\green{u_2}}{\black{3}} \\
    \green{u_2}\black{<}4\epsilon \quad \hbox{gdy tak, obliczamy wartość powyżej}}\)


    \(\displaystyle{ \red{u_3}\ \black{=}\ \partial^2\green{u_2} \\
    \black{\ln}5=3\ln 2-2u_1-\frac{2u_2}{3}-\frac{2\red{u_3}}{\black{5}} \\
    \red{u_3}\black{<}4\epsilon \quad \hbox{gdy tak, obliczamy wartość powyżej}}\)


    \(\displaystyle{ \green{u_4}\ \black{=}\ \partial^2\red{u_3} \\
    \black{\ln}5=2\ln 2-2u_1-\frac{2u_2}{3}-\frac{2u_3}{5}-\frac{2\green{u_4}}{\black{7}} \\
    \green{u_4}\black{<}4\epsilon \quad \hbox{gdy tak, obliczamy wartość powyżej}}\)
itd., aż warunek \(\displaystyle{ u_i<4\epsilon}\) będzie spełniony
Ostatnio zmieniony 5 mar 2015, o 22:44 przez SlotaWoj, łącznie zmieniany 2 razy.
Awatar użytkownika
MasterSplynter
Użytkownik
Użytkownik
Posty: 23
Rejestracja: 20 paź 2014, o 21:31
Płeć: Kobieta
Lokalizacja: Bytom
Podziękował: 7 razy

Wyliczanie rekurencyjne funkcji

Post autor: MasterSplynter »

Dziękuję bardzo za odpowiedź
Czyli robię tak:
\(\displaystyle{ u_{1} = \partial}\)
\(\displaystyle{ u_{1} = \frac{3}{13}}\)
\(\displaystyle{ u_{1} < 4 \cdot 10^{-6}}\) nieprawda więc:

\(\displaystyle{ u_{2} = \partial ^ {2} \cdot u_{1}}\)
\(\displaystyle{ u_{2} = \frac{3}{13} ^ {2} \cdot \frac{3}{13}}\)
\(\displaystyle{ u_{2} = \frac{3}{13} ^ {3}}\)
\(\displaystyle{ u_{2} < 4 \cdot 10^{-6}}\) nieprawda więc:

\(\displaystyle{ u_{3} = \partial ^ {2} \cdot u_{2}}\)
\(\displaystyle{ u_{3} = \frac{3}{13} ^ {2} \cdot \frac{3}{13} ^ {3}}\)
\(\displaystyle{ u_{3} = \frac{3}{13} ^ {5}}\)
\(\displaystyle{ u_{3} < 4 \cdot 10^{-6}}\) nieprawda więc:

\(\displaystyle{ u_{4} = \partial ^ {2} \cdot u_{3}}\)
\(\displaystyle{ u_{4} = \frac{3}{13} ^ {2} \cdot \frac{3}{13} ^ {5}}\)
\(\displaystyle{ u_{4} = \frac{3}{13} ^ {7}}\)
\(\displaystyle{ u_{4} < 4 \cdot 10^{-6}}\) nieprawda więc:

\(\displaystyle{ u_{5} = \partial ^ {2} \cdot u_{4}}\)
\(\displaystyle{ u_{5} = \frac{3}{13} ^ {2} \cdot \frac{3}{13} ^ {7}}\)
\(\displaystyle{ u_{5} = \frac{3}{13} ^ {9}}\)
\(\displaystyle{ u_{5} < 4 \cdot 10^{-6}}\) zgadza się więc obliczam:

\(\displaystyle{ \ln \left( 5 \right) = 3\ln \left( 2\right) - 2(u_{1}+ \frac{u_{2}}{3} + \frac{u_{3}}{5}+ \frac{u_{4}}{7} + \frac{u_{5}}{9}) \approx 1.609438}\)
Teraz jeszcze coś mam robić z tym \(\displaystyle{ R_{n}}\)?
SlotaWoj
Użytkownik
Użytkownik
Posty: 4211
Rejestracja: 25 maja 2012, o 21:33
Płeć: Mężczyzna
Lokalizacja: Kraków PL
Podziękował: 2 razy
Pomógł: 758 razy

Wyliczanie rekurencyjne funkcji

Post autor: SlotaWoj »

Dopisałem powyżej sumę końcową błędnego algorytmu.

Zapomniałem też zgłosić wcześniej zauważony błąd w pierwszym poście. Zamiast:
MasterSplynter pisze:\(\displaystyle{ \ln\left(z\right) = -2\sum_{k=1}^\infty \frac{1}{2k-1}\left(\frac{1-z}{1+z}\right)}\)
powinno być:
  • \(\displaystyle{ \ln\left(z\right) = -2\sum_{k=1}^\infty \frac{1}{2k-1}\left(\frac{1-z}{1+z}\right)^{2k-1}}\)
Żeby nie było wątpliwości, to stosuj taki zapis: \(\displaystyle{ \left(\frac{3}{13}\right)^7}\) .

To \(\displaystyle{ R_n}\) jest resztą ze wzoru Taylora i autor zadania „z rozpędu” umieścił w algorytmie, w którym nie jest do niczego potrzebna i można ją zignorować.

Warunek zakończenia obliczeń pochodzi z błędnego algorytmu i zastanawiam się nie powinien ulec zmianie.
Można podejść do tego „zdroworozsądkowo” i zauważyć, że skoro mamy obliczyć \(\displaystyle{ \ln 5}\) z dokładnością \(\displaystyle{ \epsilon=10^{-6}}\) , to obliczenia przerywamy gdy ostatni dodany składnik szeregu różni się od poprzedniego o mniej niż o \(\displaystyle{ \epsilon}\) .

-- 6 mar 2015, o 18:02 --

Można też wyliczyć z tego warunek na \(\displaystyle{ u_n}\) .
„Surowy” warunek zakończenia obliczeń jest następujący:
  • \(\displaystyle{ u_k<\frac{\epsilon}{2}\hbox{·}\frac{\partial^2\left(2k-1\right)\left(2k-3\right)}{\left(1-\partial^2\right)\left(2k-3\right)+2}}\)
i na pewno będzie spełniony gdy:
  • \(\displaystyle{ u_k<\frac{\epsilon\left(2k-1\right)}{16}}\)
i taki warunek można sprawdzać w algorytmie (jest on niezależny od \(\displaystyle{ \partial}\)).

Zadanie jest wartościowe, bo oprócz ćwiczenia implementacji prostego algorytmu numerycznego ilustruje jego dostosowanie do dwójkowej reprezentacji liczb w urządzeniach elektronicznych (kalkulatory, komputery).

Przy obliczaniu wartości funkcji elementarnych zawsze podstawą jest jakiś szereg Taylora, ale często jest on modyfikowany tak, aby uzyskać szybszą zbieżność szeregu, lub mniejszą złożoność obliczeniową i dla funkcji \(\displaystyle{ \ln}\) można to pokazać najlepiej.

Dla niej „klasyczny” szereg Taylora:
  • \(\displaystyle{ \ln(x)=\sum_{k=1}^{\infty} \frac{(-1)^{n+1}}{n}\left(x-1\right)^n}\)
wymaga 12-tu kroków, aby osiągnąć dokładność \(\displaystyle{ 10^{-6}}\) .
Ostatnio zmieniony 6 mar 2015, o 22:25 przez SlotaWoj, łącznie zmieniany 1 raz.
Awatar użytkownika
MasterSplynter
Użytkownik
Użytkownik
Posty: 23
Rejestracja: 20 paź 2014, o 21:31
Płeć: Kobieta
Lokalizacja: Bytom
Podziękował: 7 razy

Wyliczanie rekurencyjne funkcji

Post autor: MasterSplynter »

Czyli przy takim warunku muszę liczyć do wyrazu \(\displaystyle{ u_{6}}\).
Dziękuję bardzo za pomoc przy tym zadaniu, chyba nigdy bym tego nie ogarnęła .
SlotaWoj
Użytkownik
Użytkownik
Posty: 4211
Rejestracja: 25 maja 2012, o 21:33
Płeć: Mężczyzna
Lokalizacja: Kraków PL
Podziękował: 2 razy
Pomógł: 758 razy

Wyliczanie rekurencyjne funkcji

Post autor: SlotaWoj »

TAK
Przy użyciu „surowego” warunku zakończenia obliczeń można osiągnąć założoną dokładność w 5-ciu krokach, ale bardziej „opłaca się” stosować ten uproszczony, bo algorytm będzie miał mniejszą złożoność obliczeniową.
Obliczenie prawej strony dla warunku „surowego” wymaga 6-ciu mnożeń, dla warunku uproszczonego dwóch mnożeń, a kolejnego wyrazu szeregu trzech mnożeń. Już jedno sprawdzenie uproszczone zamiast „surowego” daje „większy zysk” niż koszt obliczenia kolejnego wyrazu szeregu.
ODPOWIEDZ