不能在逆矩阵函数上将序列乘以"浮点数"(Python 3.6)



>我正在尝试制作一个反转输入 4 x 4 矩阵的函数

我不允许使用模块或数组,只允许使用"列表"和"嵌套列表推导">

这是我所有基于高斯乔丹消除的脚本

matrix=[]
i=0
for i in range(4):
row= []
a,b,c,d=input("Enter the row: ").split()
row.append(float(a))
row.append(float(b))
row.append(float(c))
row.append(float(d))

matrix.append(row)
print ("The matrix you entered : ","n")
for row in matrix:
print((row))
def inverse(matrix):
Default=[[1,0,0,0],
[0,1,0,0],
[0,0,1,0],
[0,0,0,1]]
Default[1]-=float(matrix[1][0]/matrix[0][0])*Default[0]
Default[2]-=float(matrix[2][0]/matrix[0][0])*Default[0]
Default[3]-=float(matrix[3][0]/matrix[0][0])*Default[0]
matrix[1]-=float(matrix[1][0]/matrix[0][0])*matrix[0]
matrix[2]-=float(matrix[2][0]/matrix[0][0])*matrix[0]
matrix[3]-=float(matrix[3][0]/matrix[0][0])*matrix[0]
Default[2]-=(matrix[2][1]/matrix[1][1])*Default[1]
Default[3]-=(matrix[3][1]/matrix[1][1])*Default[1]
matrix[2]-=(matrix[2][1]/matrix[1][1])*matrix[1]
matrix[3]-=(matrix[3][1]/matrix[1][1])*matrix[1]
Default[3]-=(matrix[3][2]/matrix[2][2])*Default[2]
matrix[3]-=(matrix[3][2]/matrix[2][2])*matrix[2]
Default[3]=Default[3]/(matrix[3][3])
matrix[3]=matrix[3]/(matrix[3][3])
Default[2]-=Default[3]*(matrix[2][3])
Default[1]-=Default[3]*(matrix[1][3])
Default[0]-=Default[3]*(matrix[0][3])
matrix[2]-=matrix[3]*(matrix[2][3])
matrix[1]-=matrix[3]*(matrix[1][3])
matrix[0]-=matrix[3]*(matrix[0][3])
Default[2]=Default[2]/(matrix[2][2])
matrix[2]=matrix[2]/(matrix[2][2])
Default[1]-=Default[2]*(matrix[1][2])
Default[0]-=Default[2]*(matrix[0][2])
matrix[1]-=matrix[2]*(matrix[1][2])
matrix[0]-=matrix[2]*(matrix[0][2])
Default[1]=Default[1]/(matrix[1][1])
matrix[1]=matrix[1]/(matrix[1][1])
Default[0]-=Default[1]*(matrix[0][1])
matrix[0]-=matrix[1]*(matrix[0][1])
Default[0]=Default[0]/(matrix[0][0])
matrix[0]=matrix[0]/(matrix[0][0])
return Default
print(inverse(matrix))

我不确定我的方法是否正确,甚至这个脚本也会崩溃并显示 [类型错误:无法将序列乘以"float"]

有谁知道我应该在代码上修复什么?我真的很感激你的帮助

您正在尝试将列表乘以浮点数。这不符合您的预期(它不执行元素乘法(。

即使这会抛出相同的错误:

float(3)*[1,2].

您应该进行以下更改:

Default[1]-= [float(matrix[1][0]/matrix[0][0])*i for i in Default[0]]

在各自的地方。

最新更新