Python 实现线性代数计算器

我的梦境 提交于 2020-04-26 13:35:57

计算逆序数,运用O(N^2)的算法计算

# 逆序数计算
def reversePairs(nums):
    """
    计算数组的逆序数,输入数组,返回逆序数
    """
    res, n= 0, len(nums)
    for i in range(1,n):
        for j in range(0,i):
            if nums[j]>nums[i]:
                res +=1
    return res

nums = [4,6,1,5,2,3]
res = reversePairs(nums)
print(res)

任意数字行列式的计算

# 数字行列式计算
def determinant(matrix):
    """
    计算numpy矩阵的行列式,输入numpy矩阵,返回行列式的值
    """
    return np.linalg.det(matrix)
A = np.array([(3,-1,0,7),(1,0,1,5),(2,3,-3,1),(0,0,1,-2)],dtype=np.int32)
res = determinant(A)
print(res)

字母行列式,使用sympy符号计算功能

# 符号行列式的计算
a = sym.symbols('a')
b = sym.symbols('b')
c = sym.symbols('c')
d = sym.symbols('d')
A = sym.Matrix(
    [[a,1,0,0],[-1,b,1,0],[0,-1,c,1],[0,0,-1,d]]
)
A
sym.det(A)

计算矩阵的秩,内部使用SVD分解算法

# 计算数字矩阵的秩
def rank(matrix):
    """
    计算numpy矩阵的秩,输入numpy矩阵,返回矩阵的秩
    """
    return np.linalg.matrix_rank(matrix)

A = np.array([(2,-1,2),(4,0,2),(0,-3,3)],dtype=np.int32)
res = rank(A)
print(res)

计算矩阵的逆矩阵

# 计算矩阵的逆矩阵
def inverse(matrix):
    """
    计算numpy矩阵的逆,输入numpy矩阵,返回矩阵的逆矩阵
    """
    return np.linalg.inv(matrix)
A = np.array([(0,0,0,2),(1,2,0,0),(3,4,0,0),(0,0,5,0)],dtype=np.int32)
res = inverse(A)
print(res)

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!