Python 无部分旋转的高斯消去法

Python 无部分旋转的高斯消去法,python,linear-algebra,numerical-analysis,Python,Linear Algebra,Numerical Analysis,大家晚上好 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):

大家晚上好

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中研究高斯消去比例的部分旋转问题,对于上面的大部分代码,我都遵循了课堂上给出的格式,但我唯一不完全确定的是,我如何避免被零除?方向不是很清楚,所以我试着输入一个空的列表,但仍然出现以下错误


ZeroDivisionError回溯(最近一次呼叫上次) 在() ---->1 SPP()

在SPP()中

ZeroDivision错误:被零除


如有任何建议,将不胜感激。谢谢大家!

您是否尝试过用try…来包围错误部分。。。除了block,我刚刚试过了,但是在下一行中仍然需要r的值。我知道我应该在第6行编辑我如何计算s(可能在下一行编辑我如何计算p),但我不确定我应该如何做。
---> 14             r=abs(a[p[i]][k]/s[p[i]])
     15             if r>rm:
     16                 rm=r