Nu sunt un adept al computerului pentru probleme ce se rezolva usor cu mana si care au rol de a "forma ochiul". Insa aceasta problema este un mod bun de a ilustra ce se poate face cu computerul.
Rezolvam deci cu sage (stiu, nimeni nu vrea sa auda ceva de computere cat timp doar bacul este telul maxim in matematica, dar cei ce se gandesc mai departe poate dau o sansa acestui sage...)
Telul este in prim plan de a ne verifica, nu de a rezolva. De asemenea poate astfel avem o idee mai clara asupra numarului solutiilor si a modului cum se corespund decoratiile...
Redau codul intai, cu ceea ce mi se da interactiv de catre interpreterul sage. Nici eu nu am tiparit suveran din prima codul acesta care functioneaza. Dar la sfarsit ma simt mai bine, probabil ca probleme asemanatoare se pot propune...
Sesiune sage:
sage: var( "a, A,B,C, x,y,z" )
(a, A, B, C, x, y, z)
sage: eq1 = ( a*x*y + x+y == A )
sage: eq2 = ( a*y*z + y+z == B )
sage: eq3 = ( a*x*z + x+z == C )
Am definit variabilele ce se folosesc in acea prima linie cu var.
Am introdus apoi ecuatiile. Primul egal de dupa eq1 este un semn de atribuire de valoare. Acel dublu egal == din ecuatie este comparatia specifica in python, care conduce la definirea ecuatiei matematice in sage.
sage: ?solve
sage:
sage: solutii = solve( [eq1,eq2,eq3], x,y,z, solution_dict=True )
Cu ?solve, interpreterul sage ne da o droaie de cod de exemplificare. In acest cod imi apare si un exemplu interesant in care se reda dictionarul solutiilor, asta daca vreau sa incep ceva interesant cu ele... Eu vreau, asa ca specific prin acel True dorinta sa mi se construiasca acest dictionar.
Sistemul nostru are doua solutii. Cel mai simplu le redau tragand un loop...
Din pacate, scrierea lor este "lunga". Asa ca trebuie sa fac ceva munca de formatare. Pentru ca in (python si) sage anumite caractere albe (spatii) sunt relevante cum sunt parantezele in altele, trebuie sa-mi dau drumul pe acest site la un latex+verbatim:
(Acele tabulatoare suplineasc ceva de forma paranteza deschisa la inceputul blocului de for si respectiv paranteza inchisa la sfarsitul lui.. Nu sunt lucrurile mai clare asa? Vrea cineva cod cu cat mai multe paranteze?)
Obtinem:
x = ((A*a^2 + a)*C + A*a - sqrt(C*a + 1)*sqrt(B*a + 1)*sqrt(A*a + 1) + 1)/(sqrt(C*a + 1)*sqrt(B*a + 1)*sqrt(A*a + 1)*a)
y = -(C*a - sqrt((A*a^2 + a)*B + (A*a^2 + (A*a^3 + a^2)*B + a)*C + A*a + 1) + 1)/(C*a^2 + a)
z = -(A*a - sqrt(C*a + 1)*sqrt(B*a + 1)*sqrt(A*a + 1) + 1)/(A*a^2 + a)
x = -((A*a^2 + a)*C + A*a + sqrt(C*a + 1)*sqrt(B*a + 1)*sqrt(A*a + 1) + 1)/(sqrt(C*a + 1)*sqrt(B*a + 1)*sqrt(A*a + 1)*a)
y = -(C*a + sqrt((A*a^2 + a)*B + (A*a^2 + (A*a^3 + a^2)*B + a)*C + A*a + 1) + 1)/(C*a^2 + a)
z = -(A*a + sqrt(C*a + 1)*sqrt(B*a + 1)*sqrt(A*a + 1) + 1)/(A*a^2 + a)
Deci pentru sage sunt doua solutii. In cele facute "cu mana pe hartie" avem o forma frumoasa pentru solutii... Sa ne verificam...
sage: ( solutii[0][x] * a + 1 ) . factor()
sqrt(C*a + 1)*sqrt(A*a + 1)/sqrt(B*a + 1)
sage: ( solutii[1][x] * a + 1 ) . factor()
-sqrt(C*a + 1)*sqrt(A*a + 1)/sqrt(B*a + 1)
Daca dorim un cod latex brut pentru ceea ce se vede in prima factorizare de mai sus...
sage: print latex( ( solutii[0][x] * a + 1 ) . factor() )
\frac{\sqrt{C a + 1} \sqrt{A a + 1}}{\sqrt{B a + 1}}