# Ejercicios Lineal Python


```python
#6 .- Numpy y álgebra lineal numérica
import numpy as np
```


```python
#Definimos la matriz A
A = np.array([[1, 0, 1, 0],[-1, 2, -1, 2],[3, 1, 3, 1],[0, -1, 0, -1]])
```


```python
#Definimos D = A^20 e imprimimos el resultado
D = np.linalg.matrix_power(A,20)
print("D = {}".format(D))
```

    D = [[ 47804687500  18259765625  47804687500  18259765625]
     [-84324218750 -32208984375 -84324218750 -32208984375]
     [125154296875  47804687500 125154296875  47804687500]
     [ 18259765625   6974609375  18259765625   6974609375]]



```python
#Definimos la matriz B
B = np.array([[5, 4], [3, -5]])

print("El det(A) es: {}".format(np.linalg.det(A)))
print("El det(B) es: {}".format(np.linalg.det(B)))

#Dado que el determinante de A es cero, eso quiere decir que la matriz no es
#invertible, pero el determinante de B es distinto de cero, por lo que B es una matriz 
#invertible y su determinante es -37.
```

    El det(A) es: 0.0
    El det(B) es: -37.000000000000014



```python
# 7.- Sympy y álgebra lineal simbólica
import sympy as sp
```


```python
#Definimos las matrices A y B con SymPy
A = sp.Matrix([[1, 0, 1, 0],[-1, 2, -1, 2],
               [3, 1, 3, 1],[0, -1, 0, -1]])
B = sp.Matrix([[5,4],[3,-5]])
```


```python
# Calculamos nuevamente los determinantes de las matrices, pero
# ahora con SymPy
print("El det(A) es: {}".format(A.det()))
print("El det(B) es: {}".format(B.det()))
```

    El det(A) es: 0
    El det(B) es: -37



```python
print("Forma escalonada reducida de A \n{}".format(A.rref()))
print("Ya que A tiene dos variables pivote, el rango(A) = 2")
```

    Forma escalonada reducida de A 
    (Matrix([
    [1, 0, 1, 0],
    [0, 1, 0, 1],
    [0, 0, 0, 0],
    [0, 0, 0, 0]]), (0, 1))
    Ya que A tiene dos variables pivote, el rango(A) = 2



```python
# 8.- Implementando regla de Cramer

#Tenemos el siguiente sistema de ecuaciones:
#
# -2x_1 + 6x_2 + 6x_3 + 8x_4 - 4x_5 = 6
# 7x_1 - 2x_2 + 6x_3 + 4x_4 + 3x_5 = 14
# -4x_1 + 7x_2 + 5x_3 + 5x_4 + 6x_5 = 36
# 5x_1 + 3x_2 - 4x_3 + 8x_4 + 2x_5 = 40
# 6x_1 + 8x_2 + 6x_3 + 1x_4 - 9x_5 = 79

#Ahora, sean la matriz C y las matrices C1,C2,C3,C4,C5
C = sp.Matrix([[-2, 6, 6, 8, -4],
               [7, -2, 6, 4, 3],
               [-4, 7, 5, 5, 6],
               [5, 3, -4, 8, 2],
               [6, 8, 6, 1, 9]])

C1 = sp.Matrix([-2, 7, -4, 5, 6])
C2 = sp.Matrix([6, -2, 7, 3, 8])
C3 = sp.Matrix([6, 6, 5, -4, 6])
C4 = sp.Matrix([8, 4, 5, 8, 1])
C5 = sp.Matrix([-4, 3, 6, 2, 9])

# Definimos además la variable b que guarda la matriz de 1 x n
b = sp.Matrix([6, 14, 36, 40, 79])

#Y para ahorrarnos código, definimos el det(C) en una variable
detC = C.det()
```


```python
# Calculamos las soluciones x1,x2,x3,x4,x5, para facilidad
# de impresion, las definimy las mostramos

# Para x1
S = C.col_insert(0, b)
S.col_del(1)

x1 = S.det() / detC
print("La solución x1 es: = {}".format(x1))

# Para x2
S = C.col_insert(1, b)
S.col_del(2)

x2 = S.det() / detC
print("La solución x2 es: = {}".format(x2))

# Para x3
S = C.col_insert(2, b)
S.col_del(3)

x3 = S.det() / detC
print("La solución x3 es: = {}".format(x3))

# Para x4
S = C.col_insert(3, b)
S.col_del(4)

x4 = S.det() / detC
print("La solución x4 es: = {}".format(x4))

# Para x5
S = C.col_insert(4, b)
S.col_del(5)

x5 = S.det() / detC
print("La solución x5 es: = {}".format(x5))
```

    La solución x1 es: = 3
    La solución x2 es: = 5
    La solución x3 es: = -1
    La solución x4 es: = 0
    La solución x5 es: = 3



```python
# 9.- Python y conjeturas matemáticas

# Define términos iniciales de Tribonacci
a,b,c=0,0,1
# Se van a mostrar 15 términos
for j in range(15):
    print("El término {} de la sucesión de Tribonacci es {}".format(j,a))
    # Ahora cambiamos a,b,c de acuerdo a la recursión de Tribonacci
    a,b,c=b,c,a+b+c
    
# Definimos la matriz T de la siguiente forma

T = sp.Matrix([[0,0,1], [1,0,1],[0,1,1]])

# Usamos un ciclo for para calcular las potencias de T de 1 a 7

print(" ")
for i in range(8):
    print("T a la {} potencia es: \n{}\n".format(i, (T**(i+1))))
```

    El término 0 de la sucesión de Tribonacci es 0
    El término 1 de la sucesión de Tribonacci es 0
    El término 2 de la sucesión de Tribonacci es 1
    El término 3 de la sucesión de Tribonacci es 1
    El término 4 de la sucesión de Tribonacci es 2
    El término 5 de la sucesión de Tribonacci es 4
    El término 6 de la sucesión de Tribonacci es 7
    El término 7 de la sucesión de Tribonacci es 13
    El término 8 de la sucesión de Tribonacci es 24
    El término 9 de la sucesión de Tribonacci es 44
    El término 10 de la sucesión de Tribonacci es 81
    El término 11 de la sucesión de Tribonacci es 149
    El término 12 de la sucesión de Tribonacci es 274
    El término 13 de la sucesión de Tribonacci es 504
    El término 14 de la sucesión de Tribonacci es 927
     
    T a la 0 potencia es: 
    Matrix([[0, 0, 1], [1, 0, 1], [0, 1, 1]])
    
    T a la 1 potencia es: 
    Matrix([[0, 1, 1], [0, 1, 2], [1, 1, 2]])
    
    T a la 2 potencia es: 
    Matrix([[1, 1, 2], [1, 2, 3], [1, 2, 4]])
    
    T a la 3 potencia es: 
    Matrix([[1, 2, 4], [2, 3, 6], [2, 4, 7]])
    
    T a la 4 potencia es: 
    Matrix([[2, 4, 7], [3, 6, 11], [4, 7, 13]])
    
    T a la 5 potencia es: 
    Matrix([[4, 7, 13], [6, 11, 20], [7, 13, 24]])
    
    T a la 6 potencia es: 
    Matrix([[7, 13, 24], [11, 20, 37], [13, 24, 44]])
    
    T a la 7 potencia es: 
    Matrix([[13, 24, 44], [20, 37, 68], [24, 44, 81]])
    



```python
# Conjetura:
# Podemos notar que la sucesión de los números de Tribonacci comienza
# como 0, 0, 1 y cada número siguiente es el resultado de la suma de
# los 3 antecesores.
# 
# Además, tenemos que los primeros términos de esta sucesión son:
# 0, 0, 1, 1, 2, 4, 7, 13, 24, 44, 81...
#
# Observamos que la primera fila de cada matriz es parte de la
# sucesión, y en la siguiente potencia, en el último término
# de la primera fila, aparece el siguiente en la sucesión de Tribonacci
#
# Además, también notamos que el elemento a_33 en la matriz, 
# es siguiente en la sucesión después del último elemento
# de la primera fila.
#
# Heidi Lizbeth Gómez de la Torre 317266245
```


```python

```

d289a7b3c42d504066fe2412d2180eeaef364a9e
ipynb
Jupyter Notebook
Proyectos/.ipynb_checkpoints/ProyectoPython-checkpoint.ipynb
BethGomez44/Algebra-Lineal
4ee9646a8b68a40946a58e0f772c6bfa7242a26d
Apache-2.0
Proyectos/.ipynb_checkpoints/ProyectoPython-checkpoint.ipynb
BethGomez44/Algebra-Lineal
4ee9646a8b68a40946a58e0f772c6bfa7242a26d
Apache-2.0
Proyectos/.ipynb_checkpoints/ProyectoPython-checkpoint.ipynb
BethGomez44/Algebra-Lineal
4ee9646a8b68a40946a58e0f772c6bfa7242a26d
Apache-2.0
Qwen/Qwen-72B
1. YES
2. YES