Анимационная демонстрация сжатого хранения трехдиагональной матрицы Визуализируйте свой код с помощью анимации

图码-数据结构可视化动画版

三对角矩阵是仅在主对角线、其下方和上方的对角线上具有非零元素的矩阵。 所有其他元素均为零。 因此,维数小于或等于 3 的三对角矩阵似乎毫无意义。

示例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]

示例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]

方法 

  • 将矩阵的大小作为输入
  • 检查是否大于3
    • 如果没有,退出
    • 如果是,请进一步进行
  • 将矩阵的元素作为输入
  • 现在,除了主对角线以及主对角线下方和上方的对角线之外,所有地方都置零。

程序:

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))


              

输出:

我们程序的输出


Независимо от того, стремитесь ли вы к успеху на экзаменах, профессиональному развитию или просто из чистого интереса, этот сайт визуализации структур данных и алгоритмов станет бесценным ресурсом.

Перейдите на этот сайт и начните свое учебное путешествие!

Вот распространенные: [Описание на C] «Структуры данных и алгоритмы» Реализация структур данных на JAVA Основы структур данных и алгоритмов (Циндаоский университет - Ван Чжо) Структуры данных и алгоритмы Структуры данных Ван Дао Реализация структур данных на C Ускоренный курс структур данных для подготовки к финальному экзамену Видеоурок по структурам данных на C Версия учебника Структуры данных Янь Вэйминь Структуры данных Хао Бин Структуры данных для вступительных экзаменов в аспирантуру Структуры данных JAVA Алгоритмы и основы Структуры данных Ван Дао 2022 Изучение структур данных Структуры данных Маленькая черепаха Ван Чжо Изучение структур данных Структуры данных Чжэцзянский университет Повторение структур данных Структуры данных Ма Шибин Учебник по структурам данных с нуля Структуры данных и алгоритмы Введение в структуры данных Объяснение задач по структурам данных для вступительных экзаменов в аспирантуру Повторение структур данных к финальному экзамену Компьютерный уровень 2