Python 标量变量的索引无效

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 =

我想实现一个三对角矩阵向量的解算器,即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 = []
    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])