【发布时间】:2020-02-17 16:54:42
【问题描述】:
我正在尝试为高斯消除编写一个简单的代码。
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)
在反向替换阶段,我试图找到矩阵行切片的点积 带有向量 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)
谁能帮我纠正这个错误。
【问题讨论】:
-
[X[:i]]- 为什么np.dot这个术语周围的括号 -
wwii - 感谢您指出这一点。我修复了那个错误。
标签: python numpy numpy-ndarray