Python 标量变量的索引无效
我想实现一个三对角矩阵向量的解算器,即Ax=b。在编写循环部分时,它显示“标量变量的索引无效”。我想知道为什么以及如何修复它。这是我的密码Python 标量变量的索引无效,python,matrix,Python,Matrix,我想实现一个三对角矩阵向量的解算器,即Ax=b。在编写循环部分时,它显示“标量变量的索引无效”。我想知道为什么以及如何修复它。这是我的密码 import numpy as np def tmv_solver(a,b,c,d): a = np.array(a) b = np.array(b) c = np.array(c) d = np.array(d) n = len(a) x = [] b_star = [] d_star =
import numpy as np
def tmv_solver(a,b,c,d):
a = np.array(a)
b = np.array(b)
c = np.array(c)
d = np.array(d)
n = len(a)
x = []
b_star = []
d_star = []
b_star = b[0]
d_star = d[0]
for i in range(1,n):
b_star = np.append(b_star,b[i]-a[i+1]/b_star[i]*c[i])
d_star = np.append(d_star,d[i+1]-a[i+1]/b_star[i]*d_star[i])
if b_star[i] == 0:
return 'Error'
x[-1] = d_star[-1]/b_star[-1]
for i in range(n-1,-1):
x.append((d_star[i]-b_star[i+1]*x[i])/b_star[i])
return x
#small test
a = [1,1,1]
b = [-2,-2,-2,-2]
c = [1,1,1]
d = [0.4,0.4,0.4,0.4]
y = tmv_solver(a,b,c,d)
print y
这个问题出现在b_-star=np.append(b_-star,b[i]-a[i+1]/b_-star[i]*c[i])
for'invalid index to scalar variable'
任何帮助都将不胜感激 用正确的格式在问题中发布代码。不要给我们它的图像。很抱歉,我已经再次编辑了它。
np.append(b_-star,b[I]-a[I+1]/b_-star[I]*c[I])
<代码>-a[i+1]将尝试以无效索引访问a
,因为n
已定义为a
的len()
。正常情况下,进程将在没有范围(1,n)中i的无效索引的情况下终止:
,但在访问a
时,您正在向索引中添加1。实际上,该错误表明您在该点之前存在问题。由于它特别引用标量,请注意您有b_star=b[0]
,它只是-2
。你不能用b_-star[i]
来索引这个数字。所以我的重点是将b_-star的值初始化为b[0]。在这种情况下,我应该以b_star.append(b[0])
的形式写吗?在问题中用正确的格式发布代码。不要给我们它的图像。很抱歉,我已经再次编辑了它。np.append(b_-star,b[I]-a[I+1]/b_-star[I]*c[I])
<代码>-a[i+1]将尝试以无效索引访问a
,因为n
已定义为a
的len()
。正常情况下,进程将在没有范围(1,n)中i的无效索引的情况下终止:
,但在访问a
时,您正在向索引中添加1。实际上,该错误表明您在该点之前存在问题。由于它特别引用标量,请注意您有b_star=b[0]
,它只是-2
。你不能用b_-star[i]
来索引这个数字。所以我的重点是将b_-star的值初始化为b[0]。在这种情况下,我应该写为b_star.append(b[0])
?