Гауссово исключение без частичного поворота - PullRequest
0 голосов
/ 10 декабря 2018

Добрый вечер всем,

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 ()

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

ZeroDivisionError:деление на ноль

Любой совет будет принята с благодарностью.Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...