ALGO25 / BLOG

Indicii unei matrice: diagonale fără formule greșite

Dedu condițiile diagonalelor pentru indexare de la zero sau unu. Verifică matricele dreptunghiulare și evită numărarea dublă a centrului.

Formulele diagonalelor sunt simple dacă pornești de la coordonate. Devin fragile când memorezi o formulă pentru indexare de la 1 și o aplici într-un program care indexează de la 0.

Desenează un pătrat mic

Pentru o matrice 3×3 indexată de la zero, diagonala principală are coordonatele (0,0), (1,1), (2,2). Pe toate, i=j. Diagonala secundară are (0,2), (1,1), (2,0), deci i+j=2, adică n-1.

Cu indexare de la 1, diagonala principală rămâne i=j, dar secundara are suma indicilor n+1. Nu este o contradicție: fiecare coordonată a crescut cu unu, deci suma crește cu doi.

În matricea 1..9, diagonalele sunt 1,5,9 și 3,5,7. Centrul 5 este comun, deci suma reuniunii este 25.În matricea 1..9, diagonalele sunt 1,5,9 și 3,5,7. Centrul 5 este comun, deci suma reuniunii este 25.Mărește schema ↗

Deasupra și dedesubtul diagonalei

Deasupra diagonalei principale, coloana este mai mare decât linia: i<j. Dedesubt, i>j. Pentru diagonala secundară în indexare de la zero, o celulă din partea dinspre colțul stânga sus are i+j<n-1. Partea opusă are i+j>n-1.

Verifică relația pe un colț cunoscut înainte să o folosești. Pentru n=4, colțul (0,0) are suma zero, iar colțul (3,3) are suma șase. Astfel poți identifica sensul inegalității fără să memorezi o denumire spațială ambiguă.

Centrul se poate număra de două ori

Într-o matrice pătratică de dimensiune impară, diagonalele se intersectează într-o celulă. Dacă aduni separat cele două sume, centrul apare de două ori. Dacă vrei suma elementelor care aparțin cel puțin uneia dintre diagonale, îl scazi o dată sau folosești o singură condiție cu „sau”.

Pentru matricea cu liniile 1 2 3, 4 5 6, 7 8 9, suma principalei este 15 și suma secundarei tot 15. Reuniunea are suma 25, nu 30, deoarece valoarea 5 trebuie numărată o singură dată. La n=1, aceeași regulă devine foarte vizibilă.

Matrice dreptunghiulară nu înseamnă automat două diagonale școlare

Într-o matrice n×m, condiția i=j descrie o diagonală care se oprește când una dintre dimensiuni se termină. Formula i+j=n-1 nu descrie în general diagonala care pornește din colțul dreapta sus, deoarece acel colț are coloana m-1.

Dacă enunțul folosește diagonale într-un dreptunghi, urmărește definiția lui exactă. Nu transfera automat proprietăți ale pătratului, precum intersecția într-un singur centru. Un test 2×4 descoperă confuzia dintre numărul de linii și cel de coloane.

Verificare practică

Folosește întâi valori diferite în fiecare celulă, ca să poți vedea ce ai selectat. Testează n=1, n=2 și n=3 pentru un pătrat. Numără celulele selectate înainte să verifici suma: valori egale sau zero pot masca selectarea greșită.

Pentru implementări complete, urmează diagonalele și marginea matricei. Recapitulează indexarea și transpunerea și compară selecția unei diagonale cu suma unui dreptunghi.

Întrebări frecvente

Care este formula diagonalei principale?

Într-o matrice pătratică, o celulă este pe diagonala principală dacă i == j. Formula este aceeași pentru indexarea de la zero și pentru cea de la unu, dacă ambele coordonate folosesc aceeași convenție.

Care este formula diagonalei secundare la indexarea de la zero?

Pentru o matrice n×n, condiția este i + j == n - 1. La indexarea de la unu devine i + j == n + 1. Nu amesteca formulele celor două convenții.

Se intersectează întotdeauna diagonalele unei matrice pătratice?

Au o celulă comună numai când n este impar: celula centrală. Dacă aduni elementele ambelor diagonale ca reuniune de celule, numără centrul o singură dată.