如何在没有 numpy 和用户输入的情况下在 Python 上创建三对角矩阵?

How can I create a Triadiagonal Matrix on Python, without numpy and with user's input?

我得到了数值分析的作业。我需要创建一个矩阵,它需要是三对角矩阵,代码会询问会有多少列,以及什么是德值。而且我不应该使用 numpy 等

我研究了很多,但没有答案。还在努力写。寻求帮助。谢谢!

我只对一个方阵(维度:(n+1,n+1))做了。在下面的代码中,a是对角线,b是上面的对角线,c是下面的对角线。

def tridiagonal(n,a,b,c):
    M = [ [0 for j in range(n)] for i in range(n) ]
    for k in range(n):
        M[k][k] = a
    for k in range(n-1):
        M[k][k+1] = b
        M[k+1][k]=c
    return(M)

编辑:2 个循环可以归为一个:

def tridiagonal(n,a,b,c):
    M = [ [0 for j in range(n)] for i in range(n) ]
    for k in range(n-1):
        M[k][k] = a
        M[k][k+1] = b
        M[k+1][k]=c
    M[n-1][n-1]=a
    return(M)

阅读您的评论并在 link 中查看您的示例,这里是另一个代码,其中 L1、L2 和 L3 是表示对角线的 3 个列表,上面的对角线和下面的对角线:

def tridiagonal(n,L1,L2,L3):
    M = [ [0 for j in range(n)] for i in range(n) ]
    for k in range(n-1):
        M[k][k] = L1[k]
        M[k][k+1] = L2[k]
        M[k+1][k]= L3[k]
    M[n-1][n-1]= L1[n-1]
    return(M)

您只需用您的特定值定义 3 个列表。

谢谢@PharaohOfParis。 我已经稍微更改了您的代码。现在完美了!

def tridiagonal(n):
  values1 = []
  values2 = [0]
  print("Enter R values ")
  for i in range(0, n):
    values1.append(float(input()))

  for i in range(0, n):
    values2.append(values1[i])

  print(values1)
  print(values2)

  M = [ [0 for j in range(n)] for i in range(n) ]
  for k in range(n-1):
    M[k][k] =values1[k]+values2[k]
    M[k][k+1] = -values1[k+1]
    M[k+1][k]= -values1[k+1]
  M[n-1][n-1]= values1[n-1]+values2[n-1]
  print(M)

tridiagonal(5)