簡體   English   中英

如何在沒有 numpy 和用戶輸入的情況下在 Python 上創建三對角矩陣?

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

我有一份數值分析作業。 我需要創建一個矩陣,它必須是三對角矩陣,代碼會詢問將有多少列,以及 de 值是多少。 而且我不應該使用 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)

閱讀您的評論並在鏈接中查看您的示例,這里是另一個代碼,其中 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) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM