晚上好,

a=[[1, 2, -1], [-2, 4, 1], [2, 2, 3]]

b=[-4,6, 1]

n=3

def SPP(): 

    for i in range(1,n):
        s=[0]*3
        p=[0]*3
        for j in range(1,n): 
            s[i]+=max(s[i], abs(a[i][j]))
        p[i]=i
    for k in range(1,n-1):
        rm=0
        for i in range(k,n): 
            r=abs(a[p[i]][k]/s[p[i]])
            if r>rm:
                rm=r
                j=1
            else:
                pass
        temp=p[k]
        p[k]=p[j]
        p[j]=temp
        for i in range(k+1,n): 
            a[p[i]][j]=a[p[i]][k]/a[p[k]][k]
            for j in range(k+1,n):
                a[p[i]][j]=a[p[i]][j]-a[p[i]][k]*a[p[k]][j]
    for k in range (1,n-1):
        for i in range(k+1,n):
            b[p[i]]=b[p[i]]-a[p[i]][k]*b[p[k]]
    for i in range(n,0,-1):
        s=b[p[i]]
        x=s/a[p[i]]
        for j in range(i+1,n): 
            s=s-a[p[i]][j]*x[j]

我正在研究Python中的Gaussian Elimination缩放部分旋转问题,我正在遵循上面给出的大多数代码中给出的格式,但我唯一不确定的是如何绕过零除以零?方向不是很清楚,所以我试着把一个空列表,但我仍然有以下错误 .


()----> 1 SPP()中的ZeroDivisionError Traceback(最近一次调用)

在SPP()

---> 14             r=abs(a[p[i]][k]/s[p[i]])
     15             if r>rm:
     16                 rm=r

ZeroDivisionError:除以零

任何建议将不胜感激 . 谢谢!