momente şi schiţe de informatică şi matematică
To attain knowledge, write. To attain wisdom, rewrite.

Daţi-mi un exemplu...

Excel | Octave
2015 dec

Dacă tot facem Excel pe la clasa a X-a şi algebră liniară pe la clasa a XI-a - hai să dăm un exemplu de sistem de ecuaţii liniare. Bineînţeles că sunt păţit: cerând elevilor de-a IX-a să-ţi zică despre mulţimea zilelor săptămânii, obţii mereu "luni, marţi, ..."; extrem de rar, dacă tot ceri răspunsuri - vei obţine poate "joi, luni, duminică, ..." sau poate "lundi, mardi, jeudi, ...". Cineva mi-a dat "exemplu" de sistem de ecuaţii "2x = 4, 2y = 4" şi a rămas foarte nedumerit: este un exemplu ingenios, putem adăuga la nesfârşit ecuaţii "2z = 4, 2t = 4, etc." - dar… nu prezintă interes; culmea este că i-am cerut să încerce un alt exemplu şi ingenios cum este, mi-a dat "3x=6, 3y=6, 3z=6"…

Poate că înţelegerea lucrurilor ar necesita un mic act de judecată. Cum adică "să dăm un exemplu…"? Ce "să dăm"? Ce este de dat într-o ecuaţie a sistemului: nişte coeficienţi - care pot fi aleşi oricum - şi un termen liber, care poate fi eventual dedus având dată o soluţie. Desigur (mai ales că am amintit de Excel, în cerinţa noastră), ar fi de bun simţ să evităm alegerile banale - recunoscând totuşi că putem reduce orice sistem liniar la o formă "banală", precum "2x=4, 2y=5, 2z=6".

Imaginea de mai jos redă o alegere pentru coeficienţii a trei ecuaţii cu câte trei necunoscute: celulele A1, B1 şi C1 conţin coeficienţii din prima ecuaţie, celulele A2, B2 şi C2 conţin coeficienţii din a doua ecuaţie, ş.a.m.d.; celulele din coloana A conţin coeficienţii primei necunoscute, celulele din coloana B conţin coeficienţii celei de-a doua necunoscute, ş.a.m.d.

Să zicem că am vrea (1, 2, 3) drept soluţie a sistemului; termenii liberi necesari pot fi găsiţi înmulţind matricea A1:C3 cu vectorul-coloană al soluţiei (transpusul vectorului (1, 2, 3)). Am selectat celulele D1:D3 şi am tastat formula care se vede pe imagine, angajând funcţiile MMULT() care produce rezultatul înmulţirii a două matrice şi TRANSPOSE(), care furnizează transpusa unei matrice; în final tastăm combinaţia de două taste CTRL + ENTER (nu simplu ENTER, fiindcă rezultatul are de ocupat celulele grupate anterior D1:D3). Cu notaţia uzuală, sistemul rezultat este:

$\begin{cases}2.5x + 3y -1.25z &= 4.75 \\ -x + 5.15y + 4.125z &= 21.675 \\ 3.45x - 4y + 2.35z &= 2.5 \end{cases}$

Cum am (re)găsi acum, soluţia acestui sistem? Selectăm de exemplu celulele A6:A8 şi tastăm =Mmult(Minverse(A1:C3), D1:D3), iar apoi CTRL + ENTER:

Putem avea diverse alte ilustrări ale faptului că am putea folosi Excel (sau Google Sheets de pe care am luat imaginile de mai sus, sau altă aplicaţie de calcul tabelar) drept suport pentru abordarea unor teme şi subiecte de matematică; dar este îndoielnic dacă este şi potrivit să procedăm astfel, de vreme ce dispunem de variante mai fireşti. De exemplu, putem folosi Octave:

octave:1> A = [2.5, 3, -1.25; -1, 5.15, 4.125; 3.45, -4, 2.35]
A =
   2.5000   3.0000  -1.2500
  -1.0000   5.1500   4.1250
   3.4500  -4.0000   2.3500

octave:2> B = A*[1; 2; 3]
B =
    4.7500
   21.6750
    2.5000

octave:3> X = linsolve(A, B)
X =
   1.00000
   2.00000
   3.00000

Am introdus matricea A (pe care o reprezentam în Excel prin celulele A1:C3), folosind ',' pentru a separa elementele unei linii şi ';' pentru separarea liniilor; apoi am calculat un vector coloană B şi am rezolvat ecuaţia A*X=B, invocând funcţia linsolve().

Putem imagina uşor (cu Octave, nu cu Excel) şi un exemplu ceva mai sofisticat:

octave:1> A = 100*(rand(4, 4) + i*rand(4, 4))
A =
   47.2028 + 69.6538i   92.5993 + 81.6753i   68.6215 + 80.8788i   69.6419 + 20.6108i
   66.6598 + 48.7040i   49.1259 + 31.5402i    4.6764 + 48.9171i   69.0974 + 42.1461i
   10.8707 +  1.0906i   56.9541 + 49.2274i   93.7018 + 17.4943i   58.3932 + 38.2811i
   21.9795 + 20.3255i   76.9878 + 22.1635i   45.9363 + 50.2709i   11.9255 + 10.3146i

octave:2> B = 1000*(rand(4, 1) + i*rand(4, 1))
B =
   511.635 + 442.013i
    69.472 + 333.953i
   586.874 +  48.402i
   820.507 + 940.027i

octave:3> X = A \ B
X =
  -14.1068 -  3.7809i
    4.4817 + 18.6102i
    7.7250 - 13.2349i
    4.7343 -  4.3140i

Am generat aleatoriu matricea complexă A (cu numere complexe ca elemente) şi un vector complex B; apoi am obţinut soluţia ecuaţiei matriceale AX=B (pe care o şi putem verifica: rezultatul A*X trebuie să coincidă cu vectorul B).

vezi Cărţile mele (de programare)

docerpro | Prev | Next