1.编写一个函数来生成一个随机整数数据的“n x n”矩阵,矩阵变量应该是“numpy.ndarray”类型的对象。该函数应将所需的矩阵大小(值为n)作为参数。
2.编写一个可以找到3x3矩阵的行列式的函数。需要使用适当的loop循环而不是library函数。使用上一题中的函数生成3x3矩阵并将此函数应用于该矩阵。
3.编写一个函数,将“n x n”矩阵作为参数,并将内置的numpy行列式函数应用于该矩阵。
import numpy as np
#生成矩阵
def get_mat(n):
array = np.random.randint(1, 1000, n **2)
matrix = np.reshape(array, (n, n))
return matrix
mat = get_mat(3)
print(mat)
#循环计算
def calc1_(mat):
tmp_mat = np.c_[mat, mat[:3, :2]]
z1,z2 = 0, 0
for i in range(3):
z1 += tmp_mat[0, i] * tmp_mat[1, i+1] * tmp_mat[2, i+2]
for i in range(2, 5):
z2 -= tmp_mat[0, i] * tmp_mat[1, i-1] * tmp_mat[2, i-2]
return z1 + z2
#numpy计算
def calc2_(mat):
return np.linalg.det(mat)
print(calc1_(mat))
print(calc2_(mat))
from numpy import random
import numpy
def fun(list):
num = len(list)
sum = sum1 = 0
for z in range(num): # 该for循环作用是计算从左往右的斜乘积和
ss = 1
row = -1
for g in range(z, z + num):
row += 1
ss *= list[row][g % num]
sum += ss
for i in range(num - 1, -1, -1): # 该for循环作用是计算从右往左的斜乘积和
zz = 1
row = -1
for u in range(i, i - num, -1):
row += 1
if u < 0:
zz *= list[row][num + u]
else:
zz *= list[row][u]
sum1 += zz
a = sum - sum1 # a就是该行列式的最终结果
return a
length = int(input('请输入矩阵大小'))
arr1 = random.random(size=(length, length))
print('矩阵类型')
print(type(arr1))
print('矩阵内容')
print(arr1)
if length == 3:
print('3*3矩行列式')
print(fun(arr1))
print('n*n矩行列式')
print(numpy.linalg.det(arr1))
看看这个
【用python做矩阵运算-哔哩哔哩】 https://b23.tv/GyaFTKL