Bine ai venit guest
 
User:
Pass:

[Creare cont]
[Am uitat parola]
iBac = materialul ULTRACOMPLET de pregătire pentru bac la mate. Dacă vrei poţi.
Forum pro-didactica.ro  [Căutare în forum]

[Subiect nou]   [Răspunde]
[1]
Autor Mesaj
alex841
Grup: membru
Mesaje: 7
15 Aug 2012, 03:36

[Trimite mesaj privat]


  • Fie ?irul
    dat prin
    = 1,
    = 2,
    = 4 ?i
    =
    +
    +
    pentru orice n>=1. Demonstra?i c? pentru orice întreg pozitiv N exist? (m?car) un indice
    astfel încât N divide

  • gauss
    Grup: Administrator
    Mesaje: 6933
    10 Aug 2012, 20:46

    [Trimite mesaj privat]


    [Citat]
  • Fie ?irul
    dat prin
    = 1,
    = 2,
    = 4 ?i
    =
    +
    +
    pentru orice n>=1. Demonstra?i c? pentru orice întreg pozitiv N exist? (m?car) un indice
    astfel încât N divide


  • O sa rezolv o problema "asemanatoare".
    Anume cea in care plecam cu cele trei valori initiale

    ZERO, 1, 1,

    si construim sirul definit (liniar) recursiv (printr-o recursiune de ordin trei) prin faptul ca fiecare termen urmator in sir este suma celor trei termeni (EDIT) care il preced.
    Dam desigur de "acelasi" sir, usor translatat.

    Acum, deoarece nu stiu la ce nivel trebuie sa rezolv problema, o sa o rezolv la nivelul la care ea se explica cel mai usor.

    Fixam un astfel de N natural > 0.
    Ne intereseaza sirul doar modulo N.
    Atunci il luam modulo N si dam de alt sir cu valori in inelul

    R = ZZ / N ZZ

    al claselor de resturi modulo N.
    (EDIT: R nu este multimea numerelor reale, este inelul "ring" (engleza) de clase de resturi modulo N. Cand folosesc o notatie pentru multimea numerelor reale scriu IR sau asa ceva.)
    (Primul ZZ sta pentru multimea reprezentantilor claselor, numere intregi, grupul N ZZ sta pentru grupul numerelor intregi divizibile cu N, el spune ca doi reprezentanti conduc la / genereaza aceeasi clasa, daca si numai daca diferenta lor este in N ZZ.)

    Consideram acum un sir cu termenii "cu mai multe componente", dar pentru care recursiunea este liniara si de pas unu. (Nu trei.)
    Elementele acestui sir sunt vectori coloana (matrici 3x1) cu intrari din R,

    Primul element este

    [ 0 modulo N ]
    [ 1 modulo N ]
    [ 1 modulo N ]

    (matrice 3x1 cu intrari in R).
    scris de acum incolo "mai normal" ca sa nu pierd prea mult loc:
    0
    1
    1
    si de acum nu mai scriu acel modulo N, sa convenim asupra faptului ca lucram doar in R.

    Trecerea de la un element la altul se obtine prin inmultirea din stanga cu matricea "companion" A (notatie pentru ce vine):
    010
    001
    111
    care este o matrice 3x3 peste R si care are determinantul
    0+0+1-0-0-0 = 1 (element din R), element inversabil in R.
    (Ridicam matricea la una din ZZ pe care o scriem la fel si vedem ca dam de o ridicare inversabila in ZZ.)

    Tema:
    Care este inversa B (in ZZ) a matricii de mai sus?

    Ei bine, A este un element inversabil in grupul finit GL(3,R), Grup al aplicatiilor Liniare (general linear group), al matricilor inversabile 3x3 peste R. Matricea A are un ordin, cu alte cuvinte daca repetam inmultirea

    AAA...A

    de un numar (suficient de mare) de ori, dam de matricea unitate.
    Daca nu credem acest lucru sau daca nu (vrem sa) stim de grupuri,
    putem sa ne convingem printr-un element de finitudine.

    Ne uitam la sirul de matrici
    A, AA, AAA, ...
    care nu poate sa ia decat un numar finit (cel mult (3x3)la puterea N) de valori (diferite), deci exista doi indici diferiti pentru care avem egalitate.
    De exemplu
    AAA...A
    =
    AAA...A AA...AAAAAA
    in matrici 3x3 peste R.

    "Simplificam" (prin inmultire din stanga cu inversa B a lui A construita mai sus) cu AAA...A si dam de ce vroiam.

    Care este mai departe solutia?



    ---
    df (gauss)
    enescu
    Grup: moderator
    Mesaje: 3403
    10 Aug 2012, 21:30

    [Trimite mesaj privat]


    Care e sursa problemei? Sunt sigur c? am mai v?zut-o ?i m? chinui s?-mi amintesc unde...

    alex841
    Grup: membru
    Mesaje: 7
    10 Aug 2012, 21:52

    [Trimite mesaj privat]


    Problema este de la concursul Viitoriolimpici.ro, etapa a 7-a, clasa a9-a.

    enescu
    Grup: moderator
    Mesaje: 3403
    10 Aug 2012, 22:06

    [Trimite mesaj privat]


    [Citat]
    Problema este de la concursul Viitoriolimpici.ro, etapa a 7-a, clasa a9-a.


    Da, dar e luat? din alt? parte, precum majoritatea problemelor din acel concurs. ?i nu pot s?-mi amintesc de unde

    enescu
    Grup: moderator
    Mesaje: 3403
    13 Aug 2012, 22:25

    [Trimite mesaj privat]



    gauss
    Grup: Administrator
    Mesaje: 6933
    13 Aug 2012, 22:52

    [Trimite mesaj privat]


    Initial si eu am vrut sa izolez cumva periodicitatea "de la un cap la altul",
    dovedind ca nu avem ceva "periodic de la o vreme"
    cum este cazul de exemplu in calculul de zecimale pentru numarul 1 / 48,
    dar nu am gasit o solutie fara a pune mana pe "un fel de inversa".
    Cred ca idea de mai sus poate fi facuta riguroasa destul de repede,
    acest punct este probabil (in conditii de olimpiada de exemplu) partea fragila a argumentarii. Cum filozofia mea in rezolvari este de a acoperi si ceea ce nu se cere dintr-o problema, daca ceea ce se cere se incadreaza in acelasi cadru structural, m-am apucat repede de tiparit. De exemplu, daca N = 1009, este un exercitiu instructiv (de programare cu elemente matematice deosebite) de vazut ca perioada sirului are ceva de-a face cu ordinul matricii A de mai sus vazuta ca matrice in GL( 3, IF(1009) ) .
    (Aici IF(1009) este corpul cu 1009 elemente, realizat ca ZZ / 1009 ZZ.)
    Cand ajunga acasa dau drumul la sagemath...
    (Pentru mine, experimentul de fata este mai important decat rezolvarea problemei...)


    ---
    df (gauss)
    enescu
    Grup: moderator
    Mesaje: 3403
    13 Aug 2012, 22:54

    [Trimite mesaj privat]


    [Citat]

    Cred ca idea de mai sus poate fi facuta riguroasa destul de repede


    Ce nu e riguros aici?

    gauss
    Grup: Administrator
    Mesaje: 6933
    14 Aug 2012, 13:52

    [Trimite mesaj privat]


    [Citat]
    Ce nu e riguros aici?


    Am avut doar foarte mici indoieli relative la faptul ca ceva poate lipsi pe fir. Mi-e greu sa descriu locul cu indoiala. In orice caz, pentru inceput, sirul

    - este periodic (cu perioada P) incepand de la un K natural spre +oo,
    stim din cele de mai sus, (nu folosesc efectiv in cele ce urmeaza,)

    - este periodic (cu perioada Q) incepand de la un -L<0 intreg spre -oo,
    stim din cele de mai sus,

    dar doar scriind aceste propozitii nu am terminat. Dar terminam repede.
    Mergem undeva inainte de indicele sirului (extins)
    -L - 2.Q
    de unde stim ca avem cel putin o perioada inainte (de -L, deci si) de 0,
    vedem ca plecand de aici spre +oo se conserva perioada Q,
    deoarece recursiunea "inapoi" dedusa este echivalenta cu recursiunea "inainte" data.
    Deoarece indicele zero se afla intr-o perioada,
    stim deja ca aceeasi valoare a sirului modulo N (anume zero modulo N) se va repeta in Q, 2Q, 3Q, ...

    Argumentul (care mi-a lipsit) este desigur mult sub nivelul de "punere la incercare" al problemei in ansamblu, dar pe vremea mea ma depunctau rau la olimpiade daca nu imbucam bine propozitiile in astfel de locuri.


    ---
    df (gauss)
    gauss
    Grup: Administrator
    Mesaje: 6933
    15 Aug 2012, 03:36

    [Trimite mesaj privat]


    Am gasit in sfarsit timpul linistit in care sa ma ocup de problema pe care mi-am propus-o singur. Este un caz special care poate arata destul de clar "cam cum se plaseaza perioada" in sirul dat, depinzand de N-ul ales.

    [Citat]
    De exemplu, daca N = 1009, este un exercitiu instructiv (de programare cu elemente matematice deosebite) de vazut ca perioada sirului are ceva de-a face cu ordinul matricii A de mai sus vazuta ca matrice in GL( 3, IF(1009) ) .
    (Aici IF(1009) este corpul cu 1009 elemente, realizat ca ZZ / 1009 ZZ.)
    Cand ajunga acasa dau drumul la sagemath...
    (Pentru mine, experimentul de fata este mai important decat rezolvarea problemei...)


    Ne ocupam deci de sirul din ZZ (multimea numerelor intregi) care incepe cu
    0,1,1,2,4
    si in care de la rangul al patrulea orice termen al sirului este suma celor trei termeni premergatori.

    Ne legam de periodicitatea sirului luat modulo N = 1009 ca mai sus.
    Deci ne legam de acum incolo de sirul luat modulo N mai bine.

    Facem un mic experiment matematic pentru a vedea cand apare primul 0 mod N, si cand apare pentru prima oara (strict dupa inceputul dat mai sus)
    secventa 0 mod N, 1 mod N, 1 mod N,
    dupa care desigur ca avem ciclare.

    Folosesc cel mai simplu sage. Codul urmator poate fi pe intelesul tuturor:


    sage: N = 1009
    sage: R = IntegerModRing(N)
    sage: R
    Ring of integers modulo 1009
    sage: sir = []
    sage: sir.append( R(0) )
    sage: sir.append( R(1) )
    sage: sir.append( R(1) )
    sage: sir
    [0, 1, 1]
    sage: for k in [ 3..100 ]:
    ....: sir.append( sir[-1] + sir[-2] + sir[-3] )
    ....:
    sage: sir
    [0, 1, 1, 2, 4, 7, 13, 24, 44, 81, 149, 274, 504, 927, 696, 109, 723, 519, 342, 575, 427, 335, 328, 81, 744, 144, 969, 848, 952, 751, 533, 218, 493, 235, 946, 665, 837, 430, 923, 172, 516, 602, 281, 390, 264, 935, 580, 770, 267, 608, 636, 502, 737, 866, 87, 681, 625, 384, 681, 681, 737, 81, 490, 299, 870, 650, 810, 312, 763, 876, 942, 563, 363, 859, 776, 989, 606, 353, 939, 889, 163, 982, 16, 152, 141, 309, 602, 43, 954, 590, 578, 104, 263, 945, 303, 502, 741, 537, 771, 31, 330]
    sage:

    Bun, mai sus sunt primii cam 100 de termeni ai sirului si inca nu am dat de 0.

    Las masina atunci sa mearga mai departe si imi printez locurile unde apare un 0. Cam acelsi cod nepus la punct a trimis masina de calcul in genunchi pentru N = 1009.


    sage: N = 1009
    sage: R = IntegerModRing(N)
    sage: a = R(0); b=R(1); c=R(1); d=a+b+c;
    sage: a,b,c,d
    (0, 1, 1, 2)
    sage: indexulLui_d = 3
    sage: while d != R(0):
    .... a=b;b=c;c=d; d=a+b+c; indexulLui_d += 1;


    Dupa ce se termina am dat repede de primul index in care dam de zero, acesta este 4797. Am incercat si mai mult, dar programarea nu este chiar asa de limpede. La prima incercare, dupa ce am asteptat o vreme si am vazut ca ventilatorul este rau turat, m-am decis sa salvez cele scrise, sa opresc calculul si sa incerc cu un exemplu mai modest. Ma leg mai bine de N=19 in loc de 1009. Ciclarea are loc dupa cel mult N³ pasi. Numarul N³ este modest. Deci pot lucra si asa:


    sage: N = 19
    sage: R = IntegerModRing(N)
    sage: sir = [ R(0), R(1), R(1) ]
    sage: for k in [3..N^3-1]:
    ....: a = sir[-1] + sir[-2] + sir[-3]
    ....: sir.append(a)
    ....: if a == R(0): print "Anulare pentru k=%d" % k
    ....: if a == R(0) and sir[-2] == R(0) and sir[-3] == R(1):
    ....: print "CICLARE!"
    ....: break
    ....:
    Anulare pentru k=18
    Anulare pentru k=28
    Anulare pentru k=55
    Anulare pentru k=62
    Anulare pentru k=70
    Anulare pentru k=103
    Anulare pentru k=116
    Anulare pentru k=119
    Anulare pentru k=120
    Anulare pentru k=138
    Anulare pentru k=148
    Anulare pentru k=175
    Anulare pentru k=182
    Anulare pentru k=190
    Anulare pentru k=223
    Anulare pentru k=236
    Anulare pentru k=239
    Anulare pentru k=240
    Anulare pentru k=258
    Anulare pentru k=268
    Anulare pentru k=295
    Anulare pentru k=302
    Anulare pentru k=310
    Anulare pentru k=343
    Anulare pentru k=356
    Anulare pentru k=359
    Anulare pentru k=360
    CICLARE!
    sage:


    Pana la ciclare mai dureaza ceva, desi prima reaparitie a lui 0 mod N este destul de repede, pe locul 18...

    Lasand cam acelasi cod sa mearga pentru N=109, cu mesaje doar pentru prima anulare si pentru ciclare...

    sage: N = 109
    sage: R = IntegerModRing(N)
    sage: anulareDeja = False
    sage: sir = [ R(0), R(1), R(1) ]
    sage: for k in [3..N^3-1]:
    ....: a = sir[-1] + sir[-2] + sir[-3]
    ....: sir.append(a)
    ....: if a == R(0) and not anulareDeja: print "Anulare pentru k=%d" % k
    ....: if a == R(0) and sir[-2] == R(0) and sir[-3] == R(1):
    ....: print "k=%d :: CICLARE!" % k
    ....: break
    ....:
    Anulare pentru k=105
    k=990 :: CICLARE!
    sage:


    Acelasi lucru cu N = 1009...

    N = 1009
    R = IntegerModRing(N)
    a=R(0); b=R(1); c=R(1); d=a+b+c
    for k in xrange( 3, N^3-1 ):
    if d == R(0):
    print "Anulare pentru k=%d" % k
    if d == R(0) and c == R(0) and b == R(1):
    print "k=%d :: CICLARE" % k
    break
    a=b; b=c; c=d; d=a+b+c

    Dam de o salata de mesaje mai mare...
    Anulare pentru k=4797
    Anulare pentru k=4890
    Anulare pentru k=4977
    Anulare pentru k=7182
    Anulare pentru k=7390
    Anulare pentru k=7527
    Anulare pentru k=9015
    Anulare pentru k=9037
    Anulare pentru k=10610
    Anulare pentru k=12021
    Anulare pentru k=12882
    Anulare pentru k=13150
    ::::::::::::::::::::::::
    Anulare pentru k=501764
    Anulare pentru k=503614
    Anulare pentru k=503920
    Anulare pentru k=506673
    Anulare pentru k=507522
    Anulare pentru k=508587
    Anulare pentru k=509023
    Anulare pentru k=509036
    Anulare pentru k=509039
    Anulare pentru k=509040
    k=509040 :: CICLARE

    INTREBARE:
    Exista un mod mai rapid de detectare a perioadei?
    Ce joc special
    - asociaza lui N=19 perioada P=360,
    - asociaza lui N=109 perioada P=990,
    - asociaza lui N=1009 perioada P=509040
    ?

    Iata cam cum putem proceda structural.
    Cer scuze daca am plictisit, mai ales daca am tiparit prea mult text inestetic la o problema estetica.

    Va rog sa ma credeti, usa care se deschide se deschide spre o lume noua, importanta si plina de surprize structurale.
    In zilele de azi putem scrie cod matematic structural, acest lucru trebuie sa intre cat se poate de repede la catedrele de liceu si facultate. (Nu este musai, dar ar fi bine, deoarece 30% din matematicienii dotati s-ar putea ajuta intr-un mod nebanuit... Desigur ca nu exista un profit imediat sau de durata pentru cei de la catedra care "nu cerceteaza"...)

    Sa ne uitam la urmatorul cod:
    sage: N = 19
    sage: G = GL( 3, GF(N) )
    sage: # N trebuie sa fie prim mai sus, GF(N) este "general field" cu N elemente
    sage: A = matrix( GF(19), 3,3, [0,1,0, 0,0,1, 1,1,1] )
    sage: A
    [0 1 0]
    [0 0 1]
    [1 1 1]
    sage: A.parent()
    Full MatrixSpace of 3 by 3 dense matrices over Finite Field of size 19
    sage: a = G(A)
    sage: a
    [0 1 0]
    [0 0 1]
    [1 1 1]
    sage: a.parent()
    General Linear Group of degree 3 over Finite Field of size 19
    sage: a.order()
    360
    sage: G.order()
    304812862560
    sage: (N^3-1) * (N^3-N) * (N^3-N^2)
    304812862560



    In orice caz putem cere:
    sage: A.charpoly()
    x^3 + 18*x^2 + 18*x + 18
    sage: A.charpoly().factor()
    (x + 6) * (x^2 + 12*x + 3)
    sage: A.charpoly().parent()
    Univariate Polynomial Ring in x over Finite Field of size 19
    sage:


    Primul factor se anuleaza in $-6\in\mathbb{F}_{19}$, ordinul multiplicativ al acestui element este...
    sage: F = GF(19)
    sage: u = F(-6)
    sage: u.multiplicative_order()
    18

    deci cel mai mare ordin la care ne putem astepta potrivit teoremei lui Fermat.

    Ne uitam la polinomul care ramane... El are radacinile... hm, intr-un corp extensie patratica a lui GF(19). Sa le calculam si sa vedem ce ordin au ele...
    Ei bine...
    sage: R.<x> = GF(19)[]
    sage: R
    Univariate Polynomial Ring in x over Finite Field of size 19
    sage: K.<u> = GF( 19^2, name='u', modulus=x^2 + 12*x + 3 )
    sage: K
    Finite Field in u of size 19^2
    sage: u^2 + 12*u + 3
    0
    sage: v = -12-u
    sage: v
    18*u + 7
    sage: v^2 + 12*v + 3
    0
    sage: u.multiplicative_order()
    360
    sage: v.multiplicative_order()
    360



    Putem face acum acelasi lucru cu N=1009.
    Codul pe care il tiparim este de forma...

    N = 1009
    F = GF(N)
    G = GL( 3, F )
    A = matrix( F, 3,3, [0,1,0, 0,0,1, 1,1,1] )
    a = G(A)
    a.parent()
    a.order()
    G.order()
    (N^3-1) * (N^3-N) * (N^3-N^2)
    P = A.charpoly()
    P.parent()
    P.factor()

    Dam de...
    sage: N = 1009
    sage: F = GF(N)
    sage: G = GL( 3, F )
    sage: A = matrix( F, 3,3, [0,1,0, 0,0,1, 1,1,1] )
    sage: a = G(A)
    sage: a.parent()
    General Linear Group of degree 3 over Finite Field of size 1009
    sage: a.order()
    509040
    sage: G.order()
    1082902696158696930067783680
    sage: (N^3-1) * (N^3-N) * (N^3-N^2)
    1082902696158696930067783680
    sage: P = A.charpoly()
    sage: P.parent()
    Univariate Polynomial Ring in x over Finite Field of size 1009
    sage: P.factor()
    (x + 882) * (x^2 + 126*x + 866)
    sage: R.<x> = F[]
    sage: K.<u> = GF( 1009^2, name='u', modulus=x^2 + 126*x + 866 )
    sage: u.multiplicative_order()
    509040

    Pentru N = 31 de exemplu, polinomul caracteristic pe care il obtinem este ireductibil. Intr-un astfel de caz ne-am putea astepta la o perioada relativ mare (fata de 31), nu se intampla insa asa, un pseudomotiv este si faptul ca N^3-1 se divide cu N-1 = 30 care vine cu multi divizori...
    Trebuie sa inchei aici. Nu inainte de a propune...


    PROBLEMA:
    Fie p un numar prim.
    Fie A matricea companion cu intrarile din ZZ modulo p (notat GF(p))

    010
    001
    111

    Atunci ordinul lui A divide ordinul grupului
    G = GL( 3, GF(p) )
    de matrici 3x3 din GF(p) inversabile.

    Se stie ca ordinul lui G este (p^3-1)(p^3-p)(p^3-p^2) .
    Dar daca intelegem diagonalizarea, rezulta chiar mai mult, anume:

    ordinul lui A (si deci si perioada sirului din problema initiala)
    divide unul din numerele urmatoare
    p^3-1,
    p^2-1 (pe care nu il mai inmultim cu p-1, deoarece (p-1) divide (p^2-1)
    (si p-1)

    Cum putem alege p astfel incat ordinul lui A sa fie relativ mare fata de p ?
    Intrebarea de mai sus nu este bine pusa, o intrebare clara, dar ambitioasa ar fi:

    Care este supremumul multimii de valori
    ordin(A) / (p^3) ,
    calculate pentru toate numerele prime p...


    ---
    df (gauss)
    [1]


    Legendă:  Access general  Conţine mesaje necitite  47559 membri, 58582 mesaje.
    © 2007, 2008, 2009, 2010 Pro-Didactica.ρ