-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME
148 lines (115 loc) · 6.76 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
Quantum Calculator in the space
Este proyecto es una libreria de una calculadora de numeros complejos, la cual permite operaciones como:
- Adición de vectores complejos.
- Inverso (aditivo) de un vector complejo.
- Multiplicación de un escalar por un vector complejo.
- Adición de matrices complejas.
- Inversa (aditiva) de una matriz compleja.
- Multiplicación de un escalar por una matriz compleja.
- Transpuesta de una matriz/vector
- Conjugada de una matriz/vector
- Adjunta (daga) de una matriz/vector
- Producto de dos matrices (de tamaños compatibles)
- Función para calcular la "acción" de una matriz sobre un vector.
- Producto interno de dos vectores
- Norma de un vector
- Distancia entre dos vectores
- Revisar si una matriz es unitaria
- Revisar si una matriz es Hermitiana
- Producto tensor de dos matrices/vectores
Para empezar:
Esta libreria esta desarrollada para la solucion de operaaciones entre complejos sin el uso de la funcion complex,
para su uso se debe tener en cuenta:
Prerequesitos:
Uno de los unicos requesitos para el uso de la libreria es tener instalado pyhton y configurado en la carpeta en la cual se quiere llamar a la libreria
Intalacion:
Para la instalacion de esta libreria se puede proceder de dos maneras.
1.En la carpeta en la que se desea descargar la libreria hacer el uso de git y el comando git clone https://github.com/Naetffy/ComplexSpace.git de forma que se obtiene de manera directa la descarga completa de todos los archivos del repositorio dentro de una carpeta llamada ComplexSpace, dentro de la cual esta la libreria.
2.En GitHub hacer la instalacion del repositorio descargandolo como un ZIP y extrayendo este en la carpeta en la cual se quiere hacer el uso de la libreria, esto nos creara una carpeta con el nombre "ComplexSpace-master", este lo cambiamos a "ComplexSpace".
Aclaraciones para su uso:
Las funciones de esta libreria reciben matrices vectores o escalares como parametros, todas los numeros se representan meiante su numero complejo de la forma (a,b) siendo a la parte real del numero y b la parte imaginaria, por ende si queremos pasar un escalar como parametro debemos pasar la tupla (a,b) siendo a y b cualquier valor real. Para la representacion de vectores usaremos listas, con n cantidad de numeros de la forma (a,b). Para la representacion de matrices usaremos listas dentro de listas de la forma [[(a,b)]] la anterior representa la matriz 1*1 donde (a,b) es la representacion de un complejo.
Implemetacion:
Para implementar la libreria en un proyecto se debe hacer el uso de la siguiente sintaxis from ComplexSpace import Complex2, posteriormente se puede hacer el uso de cualquiera de las siguientes funciones:
1. Adición de vectores complejos = Complex2.SumV()
Como parametro acepta 2 listas.
Ejemplo:
Complex2.SumV([(1,2),(2,2)],[(3,2),(1,1)])
retorna 1 vector
2. Inverso (aditivo) de un vector complejo = Complex2.InvV()
Como parametro acepta 1 lista.
Ejemplo:
Complex2.InvV([(1,2),(2,2)])
retorna 1 vector
3. Multiplicación de un escalar por un vector complejo = Complex2.eVec()
Como parametro acepta 1 escalar complejo y 1 lista.
Ejemplo:
Complex2.eVec((1,2),[(1,2),(2,2),(3,3),(3,2),(1,1),(1,1)])
retorna 1 vector
4. Adición de matrices complejas = Complex2.SumM()
Como parametro acepta 2 matrices.
Ejemplo:
Complex2.SumM([[(1,2),(2,1)],[(3,2),(5,4)]],[[(1,2),(2,1)],[(3,2),(5,4)]])
retorna 1 matriz
5. Inverso (aditivo) de una matriz compleja = Complex2.InvM()
Como parametro acepta 1 Matriz.
Complex2.InvM([[(1,2),(2,2)],[(3,3),(3,2)],[(1,1),(1,1)]])
retorna 1 matriz
6. Multiplicación de un escalar por una matriz compleja = Complex2.eMat()
Como parametro acepta 1 escalar complejo y una Matriz.
Complex2.eMat((1,2),[[(1,2),(2,2)],[(3,3),(3,2)],[(1,1),(1,1)]])
retorna 1 matriz
7. Transpuesta de una matriz/vector = Complex2.Tra()
Como parametro acepta 1 Matriz o Vector.
Complex2.Tra([[(1,2),(2,2),(5,5)],[(3,3),(3,2),(4,4)],[(1,1),(1,1),(6,4)]])
retorna 1 matriz o vector
8. Conjugada de una matriz/vector = Complex2.Conj()
Como parametro acepta 1 Matriz o Vector.
Complex2.Conj([[(1,2),(2,2),(5,5)],[(3,3),(3,2),(4,4)],[(1,1),(1,1),(6,4)]])
retorna 1 matriz o vector
9. Adjunta (daga) de una matriz/vector = Complex2.Adj()
Como parametro acepta 1 Matriz o Vector.
Complex2.Adj([[(1,2),(2,2),(5,5)],[(3,3),(3,2),(4,4)],[(1,1),(1,1),(6,4)]])
retorna 1 matriz o vector
10. Producto de dos matrices (de tamaños compatibles) = Complex2.MulM()
Como parametro acepta 2 Matrices.
Complex2.MulM([[(1,1),(2,2),(3,3)],[(3,3),(4,4),(5,5)],[(3,3),(4,4),(5,5)]],[[(1,1),(2,2),(6,6)],[(3,3),(4,4),(5,5)],[(3,3),(4,4),(5,5)]])
retorna 1 matriz
11. Función para calcular la "acción" de una matriz sobre un vector = Complex2.AcMV()
Como parametro acepta una matriz y un vector.
Complex2.AcMV([[(1,1),(2,2),(3,3)],[(3,3),(4,4),(5,5)],[(3,3),(4,4),(5,5)]],[(1,1),(2,2),(3,3)])
retorna 1 vector
12. Producto interno de dos vectores = Complex2.Priv()
Como parametro acepta 2 vectores.
Complex2.PriV([(1,2),(2,2),(3,3)],[(3,2),(1,1),(1,1)])
retorna un complejo
13. Norma de un vector= Complex2.NorV()
Como parametro acepta 1 vector.
Complex2.NorV([(4,3),(6,-4),(14,-7),(0,13)])
retorna un flotante
14. Distancia entre dos vectores = Complex2.DisV()
Como parametro acepta 2 vectores.
Complex2.DisV([(3,0),(1,0),(2,0)],[(2,0),(2,0),(-1,0)])
retorna un flotante
15. Revisar si una matriz es unitaria = Complex2.Unit()
Como parametro acepta 1 Matriz.
Complex2.Unit([[(1,0),(0,0)],[(0,0),(1,0)]])
retorna un valor booleano correspondiente a si es o no una matriz unitaria
16. Revisar si una matriz es Hermitiana= Complex2.Herm()
Como parametro acepta 1 Matriz.
Complex2.Herm([[(1,0),(0,-1)],[(0,1),(1,0)]])
retorna un valor booleano correspondiente a si es o no una matriz hermitana
17. Producto tensor de dos matrices/vectores = Complex2.Port()
Como parametro acepta 2 Matriz o 2 vectores o 1 matriz y 1 vector.
Complex2.Prot([[(1,1),(2,2),(3,3)]],[[(1,1),(2,2),(6,6)],[(3,3),(4,4),(5,5)],[(3,3),(4,4),(5,5)]])
retorna una matriz o un vector
Ejemplo del codigo para el funcionamiento:
from ComplexSpace import Complex2
Resultado = Complex2.eVec((1,2),[(1,2),(2,2),(3,3),(3,2),(1,1),(1,1)])
//Representa la multiplicacion del complejo (1+2i)*[1+2i,2+2i,3+3i,3+2i,1+i,1+i]
print(Resultado)
//El output sera ['-1-2i', '-2-2i', '-3-3i', '-3-2i', '-1-1i', '-1-1i']
Fin codigo ejemplo
Hecho con:
Math - Libreria que nos permite hacer operaciones matematicas como la raiz cuadrada
Realizado por:
Mateo Sebastian Forero Fuentes