Я пытаюсь написать простой код для исключения Гаусса.
import numpy as np
def g_elimination(A,B):
n=A.shape[0]
for i in range(0,n-1):# Pivot Rows where 1st pivot is Row 0
for j in range(i+1,n):#Rows to transform exclude Row 0
B[j]=B[j]-(A[j,i]/A[i,i])*B[i]
A[j]=A[j]-np.dot(A[j,i]/A[i,i],A[i])
def back_substitution(X,A,B):
n=B.shape[0]
for i in reversed(range(0,n)):
X[i]=(B[i]-np.dot([X[:i]],A[i:,:i]))/A[i,i]
A=np.array([[4.0,-2,1],[-2,4,-2],[1,-2,4]])
B=np.array([11,-16,17],dtype='float64')
X=np.zeros(B.shape)
g_elimination(A,B)
back_substitution(X,A,B)
Во время фазы обратной замены я пытаюсь найти скалярное произведение среза строки матрицы A с срезом вектора X. Я получаю сообщение об ошибке
Traceback (most recent call last):
File "main.py", line 25, in <module>
back_substitution(X,A,B)
File "main.py", line 16, in back_substitution
X[i]=(B[i]-np.dot([X[:i]],A[i:,:i]))/A[i,i]
File "<__array_function__ internals>", line 5, in dot
ValueError: shapes (1,2) and (1,2) not aligned: 2 (dim 1) != 1 (dim 0)
Может кто-нибудь помочь мне исправить эту ошибку.