Array tridiagonal en python

Una array tridiagonal es una array que tiene elementos distintos de cero solo en la diagonal principal, diagonal debajo y arriba. Todos los demás elementos son cero. Por esta razón, las arrays tridiagonales de dimensión menor o igual a 3 parecen carecer de sentido.

Ejemplo 1:

[a11, a22, 0, 0, 0, 0]   

[a21, a22, a23, 0, 0, 0]

[0 , a32, a33, a34, 0 , 0 ]

[0 , 0 , a43, a44, a55, 0 ]

[0 , 0 , 0 , a54, a55, a56]

[0 , 0 , 0 , 0 , a65, a66]

Ejemplo 2:

[1, 1, 0, 0, 0, 0]   

[1, 1, 1, 0, 0, 0]

[0, 1, 1, 1, 0, 0]

[0, 0, 1, 1, 1, 0]

[0, 0, 0, 1, 1, 1]

[0, 0, 0, 0, 1, 1]

Acercarse 

  • Tome el tamaño de la array como entrada
  • Comprobar si es mayor que 3
    • si no, sal
    • en caso afirmativo, continúe
  • Tomar elementos de la array como entrada.
  • Ahora ponga cero en todas partes excepto en la diagonal principal y en las diagonales por debajo y por encima de la diagonal principal.

Programa:

Python3

# if you enter number n it will automatically 
# be considered as a square matrix of size n by n
size_of_a_matrix = int(input("Enter size the matrix that you want : "))
   
if size_of_a_matrix <= 3:
      
    # since size should be greater than 3
    print("Please enter the size that is greater than 3")
    exit()
  
diagonal = []
numbers1 = [[0 for j in range(0, size_of_a_matrix)]
            for i in range(0, size_of_a_matrix)]
   
# created a loop to enter numbers
for a in range(size_of_a_matrix):
    numbers1 = int(input(f"Enter the numbers for the main diagonal for position[{a}][{a}] : "))
       
    # appending the values to the list
    diagonal.append(numbers1)
  
diagonalAbove = []
print("*********")
   
# created a loop to enter numbers
for k in range(size_of_a_matrix-1):
    numbers2 = int(input(f"Enter the numbers for diagonal above the main diagonal for position[{k}][{k+1}]: "))
      
    # appending the values to the list
    diagonalAbove.append(numbers2)
  
diagonalBelow = []
print("*********")
   
# created a loop to enter numbers
for z in range(size_of_a_matrix-1):
    numbers3 = int(input(f"Enter the numbers for diagonal below the main diagonal for position[{z+1}][{z}]: "))
      
    # appending the values to the list
    diagonalBelow.append(numbers3)
print("*********")
   
   
def tridiagonal(size_of_a_matrix, diagonal, diagonalAbove, diagonalBelow):
   
    matrix = [[0 for j in range(size_of_a_matrix)]
              for i in range(size_of_a_matrix)]
      
    for k in range(size_of_a_matrix-1):
        matrix[k][k] = diagonal[k]
        matrix[k][k+1] = diagonalAbove[k]
        matrix[k+1][k] = diagonalBelow[k]
      
    matrix[size_of_a_matrix-1][size_of_a_matrix - 1] = diagonal[size_of_a_matrix-1]
   
    # so that the values will print row by row
    for row in matrix:
        print(row)
  
    return "this is the tridiagonal matrix"
  
# printing final values
print(tridiagonal(size_of_a_matrix, diagonal, diagonalAbove, diagonalBelow))

Producción:

salida de nuestro programa

Publicación traducida automáticamente

Artículo escrito por harshsinha03 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *