eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingLiczby Fibonacciego rzędu N › Re: Liczby Fibonacciego rzędu N
  • Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
    atman.pl!.POSTED!not-for-mail
    From: bartekltg <b...@g...com>
    Newsgroups: pl.comp.programming,pl.sci.matematyka
    Subject: Re: Liczby Fibonacciego rzędu N
    Date: Sun, 15 May 2016 18:55:16 +0200
    Organization: ATMAN - ATM S.A.
    Lines: 148
    Message-ID: <nha9ll$e24$1@node1.news.atman.pl>
    References: <nh4std$qlq$1@node2.news.atman.pl> <nh4t8e$qve$1@node2.news.atman.pl>
    <a...@n...plus.net>
    <nh8ku5$dci$1@node2.news.atman.pl> <nh8mir$f0n$1@node2.news.atman.pl>
    <nh8mup$f5k$1@node2.news.atman.pl> <nh8nj2$flh$1@node2.news.atman.pl>
    <nh9g0i$5fu$1@node2.news.atman.pl>
    NNTP-Posting-Host: 89-73-81-145.dynamic.chello.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=utf-8; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: node1.news.atman.pl 1463331317 14404 89.73.81.145 (15 May 2016 16:55:17 GMT)
    X-Complaints-To: u...@a...pl
    NNTP-Posting-Date: Sun, 15 May 2016 16:55:17 +0000 (UTC)
    User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101
    Thunderbird/38.6.0
    In-Reply-To: <nh9g0i$5fu$1@node2.news.atman.pl>
    Xref: news-archive.icm.edu.pl pl.comp.programming:209399 pl.sci.matematyka:153387
    [ ukryj nagłówki ]

    On 15.05.2016 11:37, peter wrote:
    > Borneq pisze:
    >> W dniu 15.05.2016 o 04:29, Borneq pisze:
    >>> W dniu 15.05.2016 o 04:23, Borneq pisze:
    >>>> Jakie wzory uogólnionych ciągów inicjowanych jedynkami?
    >>>
    >>> To znaczy wzór nie na same ciągi, ale równanie dla x_{i+1}/x_i przy i
    >>> dążącym do nieskończoności.
    >>> Na przykład dla Fibonacciego : fib^2 = fib+1
    >>
    >> Chyba wiem:
    >> dla Fibonacciego: a_n = a_{n-1}+a_{n-2}
    >> jeśli przez r oznaczymy golden ratio, to
    >> r^2 = r+1
    >> dla innych będzie analogicznie:
    >> r^3 = r^2+r+1
    >
    > OK. Tylko to nie jest już golden ratio
    >
    > r = 1/3 ( 1+(19-3sqrt[33])^(1/3) + (19+3sqrt[33])^(1/3) )
    > r = 1.839286755
    >
    >> r^4 = r^3+r^2+r+1
    >> r^5 = r^4+r^3+r^2+r+1
    >> ...
    >> Wystarczy teraz do tablicy Hornera i szukać metodą Newtona około
    >> punktu x=2.
    >>
    > A to masz już gotowe
    > {{2, 1.618033989}, {3, 1.839286755}, {4, 1.927561975}, {5,
    > 1.965948237}, {6, 1.983582843}, {7, 1.991964197}, {8,
    > 1.996031180}, {9, 1.998029470}, {10, 1.999018633}, {11,
    > 1.999510402}, {12, 1.999755501}, {13, 1.999877833}, {14,
    > 1.999938939}, {15, 1.999969475}, {16, 1.999984739}, {17,
    > 1.999992370}, {18, 1.999996185}, {19, 1.999998093}, {20,
    > 1.999999046}}

    Nie ma co się ograniczać;-)

    2:
    1.61803398874989484820458683436563811772030917980576
    2862135448622705260462818902449707207204189391137
    3:
    1.83928675521416113255185256465328660042417874609759
    2246778758639404203222081966425738435419428307014
    4:
    1.92756197548292530426190586173662216869855425516338
    4727146647038009666062297815559149818253461890653
    5:
    1.96594823664548533718993737593440139615132717745686
    1393236934508442252712871886881734818665554630472
    6:
    1.98358284342432633038562929339142575273008086556882
    1753216359065656702278014172402986575070226899797
    7:
    1.99196419660503502109774175458437496347931896005315
    7995244782153400951980309622183563141577022719017
    8:
    1.99603117973541458981531790175583977448937968094522
    1927634853627284595269945627520379784497496677719
    9:
    1.99802947026228669866233146697141889422394811200720
    817635007606418347246216418323113493506302640167
    10:
    1.99901863271010113866340923912915286185431007606222
    0826532008328824786927236540933057020104301232375
    11:
    1.99951040197828549144004395686152932666108125426661
    4810779837519236615390078719789044140796520274345
    12:
    1.99975550093731753669742676240038291238332338650455
    6323062753939321611287661284370644702025866990915
    13:
    1.99987783271154554003994689921299047787226321688886
    7413202466954233036366079897025359931465066825935
    14:
    1.99993893874959464849784505917096169163418644796918
    5808282677452968010724453480158889012554038686369
    15:
    1.99996947543450329236018920141815304300679660821682
    0644909453656234921657658569086286226322162157151
    16:
    1.99998473934794410728905969085318052339878986504534
    7828924870915759038438904118573567103314365400392
    17:
    1.99999237011065455458126208666269017374446142388755
    5531876842475084516571192165982892311479262694294
    18:
    1.99999618517176026801073473341641067088302869562077
    0951598826851042717888337484473992487986041191113
    19:
    1.99999809261680543296852802771976142820042834813584
    1577975196837806368081561631463543584620578204458
    20:
    1.99999904631658851445731640844604844501670625773679
    8957683555662453016630707735356535989845294224046

    Kod w c++ (mathematica drogawa) na dole.


    bieganie tego pierwiastka do 2 łatwo zrozumieć znów patrząc na
    wielomian.

    w0= q^k - q^(k-1) - q^2 - q - 1

    Rozszerzemy go dla ułatwienia obliczeń o dodatkowy pierwiastek
    mnożąc przez (q-1). NIe zmienia to pozostąłych pierwiastków.

    w = w*(q-1) = q^(k+1) - 2 q^k + 1

    [Przy okazji, robiąc wykres pierwiastków widać, że układają sie
    na okregu jednostkowym i dodatkowy pierwiastek siedzi w okolicy x=2.
    Spodziewam się więc, że ten wielomian podobny jest do
    (q^k -1) (q-2) = q^(k+1) - 2 q^k - q -2 ]

    0 = q^k (q-2) +1

    (2-q)q^k = 1

    (2-q)q^k ma pierwiastek w 0 i 2. W okolicy 2 bardzo szybko rośnie,
    (bo praktycznie wygląda jak funkcja liniowa (2-q)*2^k) i trafia
    w jedynkę. Skoro przyblizęnie q^k = 2^k wydaje się dobre i w okolicy
    rozwiązania
    (2-q)q^k = 1
    to je zastosujmy do rozwiązania:

    (2-q) = 1/2^k.
    q = 2 - 2^-k

    {{15, 1.9999694824218750000},
    {16, 1.9999847412109375000},
    {17, 1.9999923706054687500},
    {18, 1.9999961853027343750},
    {19, 1.9999980926513671875},
    {20, 1.9999990463256835938}}

    Bardzo ładnie współgra z dokładnymi wynikami.


    pzdr
    bartekltg



    #include <iostream>
    #include <mpreal.h>
    #include <iomanip>
    using namespace std;

    // kompilować z biblotekami -lmpfr -lgmp

    int main(){
    const int precyzja = 100;
    mpfr::mpreal::set_default_prec(precyzja*1.2*log(10)/
    log(2));
    mpfr::mpreal x ;

    for (int k=2; k<21;k++) {
    x=2;
    while ( (x-2)* mpfr::pow(x,k) + 1 > pow(10,-precyzja) )
    x= (x *(2 + k *(-2 + x) - mpfr::pow(x,-k)))/(k* (-2 + x) + x) ;
    cout <<setprecision(precyzja)<< k<<": "<< x << endl;
    }
    return 0;
    }



Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: