如何在 Python 上创建一个三边形矩阵,没有 numpy 和用户的输入?



我有一个数值分析的家庭作业。我需要创建一个矩阵,它需要是三对角的,代码会询问有多少库仑,以及什么是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)

编辑:这两个循环可以分为一个:

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) 

相关内容

  • 没有找到相关文章

最新更新