Sunt in criza de timp, am mai cautat ceva, nu prea am gasit mare lucru.
Asadar o sa scriu cum ar fi ideea demonstratiei in articolul de 4 pagini, totusi destul de usor de citit.
Intamplator, "acelasi" articol apare cu alt nume in
http://pages.cs.wisc.edu/~holtz/hbrhtp.pdf
In fine.
Ca sa fie "mai usor" de urmarit, dau un exemplu numeric.
(Matematica de acest gen trebuie intotdeauna urmarita pe exemple, altfel omul nu mai are nici o sansa sa inteleaga despre ce obiecte e vorba. Din pacate, publicatiile de specialitate nu au loc pe hartiile lor sa accepte si compuneri libere despre tot ceea ce stie cel ce publica, din contra, la o publicare omul mai trebuie sa renunte la o treime din momentul in care crede ca lucrurile stau perfect... Din acest motiv, matematica a devenit din ce in ce mai arida.)
Deci, pe baza unui exemplu incerc sa vad de ce natura sunt rezultatele din cele cateva teoreme din articolul de mai sus. Recomand tuturor celor de pe clasa a Xi-a incolo sa citeasca acest articol, esential este nu sa inteleaga rezultatul, ci sa vada care este disciplina / organizarea in cazul unei publicatii.
Consider polinomul:
Acest polinom este stabil, deoarece asa l-am luat, el are descompunerea:
Sa vedem cum incearca articolul de mai sus sa reduca stabilitatea lui f la una a unui polinom de grad ceva mai mic:
Am scris cateva linii de cod..
cod sage
u = x^2 + 2*x + 4
v = x^2 + 3*x + 7
w = x^2 + x + 11
f(x) = (u*v*w).expand(); f(x)
S( x ) = ( f(x)+f(-x) ) / 2; S(x)
p(x) = S(sqrt(x))
p(x)
T( x ) = ( ( f(x)-f(-x) ) / 2 / x ) . simplify_rational() ; T
q(x) = T(sqrt(x))
q(x)
P(x) = p(-x^2); P(x)
Q(x) = x*q(-x^2); Q(x)
P.roots( ring=CC )
Q.roots( ring=CC )
p(1)/q(1)
care sunt de forma "uite / da-mi". (Nu poate fi vorba de programare...)
Rulez si primesc urmatorul protocol...
sage: u = x^2 + 2*x + 4
sage: v = x^2 + 3*x + 7
sage: w = x^2 + x + 11
sage: f(x) = (u*v*w).expand(); f(x)
x^6 + 6*x^5 + 33*x^4 + 98*x^3 + 241*x^2 + 314*x + 308
sage: S( x ) = ( f(x)+f(-x) ) / 2; S(x)
x^6 + 33*x^4 + 241*x^2 + 308
sage: p(x) = S(sqrt(x))
sage: p(x)
x^3 + 33*x^2 + 241*x + 308
sage: T( x ) = ( ( f(x)-f(-x) ) / 2 / x ) . simplify_rational() ; T
x |--> 6*x^4 + 98*x^2 + 314
sage: q(x) = T(sqrt(x))
sage: q(x)
6*x^2 + 98*x + 314
sage: P(x) = p(-x^2); P(x)
-x^6 + 33*x^4 - 241*x^2 + 308
sage: Q(x) = x*q(-x^2); Q(x)
2*(3*x^4 - 49*x^2 + 157)*x
sage: P.roots( ring=CC )
[(-4.81392676295493, 1), (-2.86471225958585, 1), (-1.27260865574800, 1), (1.27260865574800, 1), (2.86471225958585, 1), (4.81392676295493, 1)]
sage: Q.roots( ring=CC )
[(-3.45778430987736, 1), (-2.09214268148693, 1), (0, 1), (2.09214268148693, 1), (3.45778430987736, 1)]
sage: p(1)/q(1)
53/38
Explicit in cuvinte: Plecam cu f.
Izolam p, partea "para" din f, in fine, partea para poate fi usor scoasa din p.
Izolam q, partea "impara" din f, in fine, ea poate fi usor scoasa din q.
Asociem P cu P(x) = p(-x^2).
Asociem Q cu Q(x) = q(-x^2) * x.
Luam radacinile lui P si ale lui Q.
(Dubletele de mai sus sunt de forma (radacina, multiplicitate), iar toate multiplicitatile sunt egale cu unu.)
Se vede ca radacinile lui P si respectiv ale lui Q se "interfereaza" reciproc. Enuntul mai exact este in Teorema 1, versiune a unei teoreme a lui Hermite-Biehler. Interferarea o formuleaza ei in teorema in cuvintele "simple interlacing roots.
Mai e o conditie de verificat. L-am luat pe z0 = 1...
Deci deja am stabilit cu Hermite-Biehler stabilitatea...
Teorema 2 este teorema care face un prim pas in directia pasului de inductie.
Iata cum lucreaza ea:
Dat f, scris unic sub forma
unde se iau p si q prin colectarea termenilor pari, respectiv impari. (La cei impari se mai da factorul comun x...)
Se asociaza atunci un "nou f", notat f~, la care
Ei bine, teorema 2 afirma ca f este stabil
daca si numai daca
c>0 si f~ este stabil.
La noi, putem aplica de mai multe ori acest pas de decimare a gradului, pana ce dam de un polinom de gradul unu, la care lucrurile sunt clare:
cod sage
cList = []
def redu_frate( f ):
global cList
S(x) = (f(x)+f(-x))/2
p(x) = S(sqrt(x))
T(x) = (f(x)-f(-x)).factor() /2 /x
q(x) = T(sqrt(x))
c = p(0)/q(0)
cList . append( c )
if c <= 0:
print "POLINOMUL DAT NU E STABIL"; return None
else:
print "c = ", c , ">0"
pp(x) = q(x)
qq(x) = ( p(x)-c*q(x) ).factor() / x
ff(x) = ( pp(x^2) + x*qq(x^2) ) . expand()
print "REDUCERE:\n", f(x), " stabil\n<=>\n", ff(x), " stabil.\n"
return ff
ff = f
while ff and ff(x) . degree(x) > 1 :
ff = redu_frate( ff )
print cList
Print rulare obtinem:
c = 154/157 >0
REDUCERE:
x^6 + 6*x^5 + 33*x^4 + 98*x^3 + 241*x^2 + 314*x + 308 stabil
<=>
x^5 + 6*x^4 + 4257/157*x^3 + 98*x^2 + 22745/157*x + 314 stabil.
c = 49298/22745 >0
REDUCERE:
x^5 + 6*x^4 + 4257/157*x^3 + 98*x^2 + 22745/157*x + 314 stabil
<=>
x^4 + 87172/22745*x^3 + 4257/157*x^2 + 892312/22745*x + 22745/157 stabil.
c = 517335025/140092984 >0
REDUCERE:
x^4 + 87172/22745*x^3 + 4257/157*x^2 + 892312/22745*x + 22745/157 stabil
<=>
x^3 + 87172/22745*x^2 + 2891473/223078*x + 892312/22745 stabil.
c = 199055176336/65766553385 >0
REDUCERE:
x^3 + 87172/22745*x^2 + 2891473/223078*x + 892312/22745 stabil
<=>
x^2 + 2330196/2891473*x + 2891473/223078 stabil.
c = 8360616109729/519815463288 >0
REDUCERE:
x^2 + 2330196/2891473*x + 2891473/223078 stabil
<=>
x + 2330196/2891473 stabil.
sage: print cList
[154/157, 49298/22745, 517335025/140092984,
199055176336/65766553385, 8360616109729/519815463288]
Bun. Daca trecerea asta la UN pas este clara, atunci trebuie sa fie clara si relatia:
Mai sus, H(f) este matricea Hurwitz "infinita".
Relatiile de mai sus contin coeficientii a0,a1,... ai lui f,
respectiv pe cei cu tilda ai lui f~,
iar trecerea este o simpla reformulare a formulelor de mai sus ce definesc f~ si p~ si q~.
Aplicand de mai multe ori cele de mai sus f-ului nostru, dam de
H(f) = J(c1) J(c2) J(c3) J(c4) J(c5) H(ceva usor de specificat).
Sa zicem ca am inteles rescrierea aceasta.
Atunci pasul de inductie in ceea ce se face in articolul amintit este de a face o legatura intre determinantii minorilor jxj respectiv (j+1)x(j+1) obtinuti prin trunchiere bruta in matricile H(f~) si respectiv H(f).
(Acestia se noteaza cu Delta indice j respectiv indice (j+1) de ...)
Acolo se specifica relatia:
De unde poate sa rezulte asa ceva?
Incerc sa fac clar cazul general tot pe un caz particular: Pentru j=3 avem in notatiile de mai sus:
(Determinantul din R.H.S se aplica pe tot produsul ce vine.)
Am scris minorul 4x4 cerut mai intai ca produs din reprezentarea infinita de matrice (4 x infinit) cu matrice (infinit x 4). Apoi am vazut ca de fapt in J(c), in primele 4 linii de la coloana a 6-a incolo pot sa uit... De aceea obtinem reprezentarea de mai sus. E bine sa vedem / gandim
H(4x4,f) = J(4x5,c) H(5x4, f~)
Matrice 4x4 = (Matrice 4x5)(Matrice 5x4).
(sper ca se intelege ce vreau sa sugerez...)
Acum toata lumea stie formula det(AB)= det(A)det(B) pentru matrici patrate A,B.
Exista o generalizare a ei pentru cazul care ne intereseaza... La noi aceasta se scrie in cuvinte...
det H(4x4, f)
este o suma de produse din determinanti obtinuti din prima matrice respectiv a doua prin taiere de cate o coloana respectiv linie (cu acelasi index ca si coloana..).
Daca din J(4x5,c) nu taiem prima sau a doua coloana, dam de un bloc prea mare de zerouri si determinantul respectiv se anuleaza.
Daca din J(4x5,c) taiem prima coloana, atunci din H(5x4,f~) trebuie sa taiem prima linie in formula... deci dam de o coloana nula. Astfel apare
de unde imediat legatura intre Delta-ul lui f de ordin 4 si cel al lui f~ de ordin 3.
Trebuie sa ma gat... Sper sa se compileze si trec instantaneu la calcat.
O saptamana buna!