[英]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.