Recordem que un nombre complex
té una part real
()
i una part imaginària
().
Direm que el conjugat d’un nombre complex
és senzillament el mateix nombre però amb la part imaginària canviada de
signe. Així doncs, si
,
el conjugat de
,
que anomenarem
,
és
.
Nosaltres representarem els nombres complexos amb tuples de dos
elements:
serà representat com (a,b)
Una matriu quadrada (amb mida ) de nombres complexos és hermítica si és igual a la seva transposta-conjugada: Per a tot , tenim . O, dit d’una altra manera, si transposem (canviem files per columnes) i fem el conjugat de tots els seus elements, la matriu no canvia.
Escriure una funció es_hermitica(m)
que, donada una matriu
quadrada de nombres complexos, retorni
True si
és hermítica, i False en cas contrari.
Fixem-nos que tal com hem dit més amunt,
serà una matriu quadrada de tuples de dos elements.
Exemple de matriu hermítica:
que nosaltres representarem així:
m = [[(-1,0),(1,-2),(0, 0)],
[(1, 2),(0, 0),(0,-1)],
[(0, 0),(0, 1),(1, 0)]]
La funció té una matriu quadrada de tuples de dos elements que representen nombres complexos.
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.
>>> 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