我正在尝试制作一个逆输入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))
我不确定我的方法是否正确,甚至此脚本也会因[Typeerror:Ca n't乘法乘以'float']而崩溃
有人知道我应该在代码上解决什么吗?感谢您的帮助
答案 0 :(得分:0)
您正在尝试将列表乘以浮点数。那不符合您的期望(它不执行元素乘法)。
即使这将引发相同的错误:
float(3)*[1,2]
。
您应该进行以下更改:
Default[1]-= [float(matrix[1][0]/matrix[0][0])*i for i in Default[0]]
在各个地方。