És hermítica? X92033


Statement
 

pdf   zip

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

Una matriu MM quadrada (amb mida n×nn \times n) de nombres complexos és hermítica si és igual a la seva transposta-conjugada: Per a tot 1i,jn1 \leq i,j \leq n, tenim Mij=Mji*M_{ij}=M^{\ast}_{ji}. O, dit d’una altra manera, si transposem MM (canviem files per columnes) i fem el conjugat de tots els seus elements, la matriu MM no canvia.

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

Exemple de matriu hermítica:

[112i01+2i0i0i1]\left[\begin{array}{ccc} {-1} & {1-2i} & {0} \\ {1+2i} & {0} & {-i} \\ {0} & {i} & {1} \end{array}\right]

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