És hermítica? X92033


Statement
 

pdf   zip

thehtml

Recordem que un nombre complex a+bi té una part real (a) i una part imaginària (b). Direm que el conjugat d’un nombre complex a+bi és senzillament el mateix nombre però amb la part imaginària canviada de signe. Així doncs, si c = a+bi, el conjugat de c, que anomenarem c, és abi. Nosaltres representarem els nombres complexos amb tuples de dos elements: a+bi serà representat com (a,b)

Una matriu M quadrada (amb mida n × n) de nombres complexos és hermítica si és igual a la seva transposta-conjugada: Per a tot 1 ≤ i,jn, tenim Mij=Mji. O, dit d’una altra manera, si transposem M (canviem files per columnes) i fem el conjugat de tots els seus elements, la matriu M no canvia.

Escriure una funció es_hermitica(m) que, donada una matriu m quadrada de nombres complexos, retorni True si m és hermítica, i False en cas contrari. Fixem-nos que tal com hem dit més amunt, m serà una matriu quadrada de tuples de dos elements.

Exemple de matriu hermítica:




−11−2i0 
1+2i0i
0i1 



que nosaltres representarem així:

m = [[(-1,0),(1,-2),(0, 0)],
     [(1, 2),(0, 0),(0,-1)],
     [(0, 0),(0, 1),(1, 0)]]

Entrada

La funció té una matriu quadrada de tuples de dos elements que representen nombres complexos.

Observacions

Una matriu hermítica amb nombres reals com a elements és senzillament una matriu simètrica.

Un cop definida la funció, en provar-la al REPL de Python us hauria de sortir el mateix que podeu observar més avall.

Sample session
>>> es_hermitica([[(1, 0), (0, -1)], [(0, 1), (1, 0)]])
True
>>> es_hermitica([[(2, 0), (0, -1)], [(0, 1), (1, 0)]])
True
>>> es_hermitica([[(0, 0), (1, 0)], [(1, 0), (0, 0)]])
True
>>> es_hermitica([[(0, 1), (1, 0)], [(1, 0), (0, 0)]])
False
>>> es_hermitica([[(0, 0), (0, -1)], [(0, 1), (0, 0)]])
True
>>> es_hermitica([[(1, 0), (0, 0)], [(0, 0), (-1, 0)]])
True
>>> es_hermitica([[(-1, 0), (1, -2), (0, 0)], [(1, 2), (0, 0), (0, -1)], [(0, 0), (0, 1), (1, 0)]])
True
>>> es_hermitica([[(1, 0), (1, 1), (0, 2)], [(1, -1), (5, 0), (-3, 0)], [(0, -2), (-3, 0), (0, 0)]])
True
>>> es_hermitica([[(1, 0), (1, 1), (0, 2)], [(1, -1), (5, 1), (-3, 0)], [(0, -2), (-3, 0), (0, 0)]])
False
Information
Author
Jordi Delgado
Language
Catalan
Other languages
Spanish
Official solutions
Python
User solutions
Python