基于python随机生成线性代数对称矩阵

基于python随机生成对称矩阵

对称矩阵的基本性质:

1、每个实方形矩阵都可写作两个实对称矩阵的积,每个复方形矩阵都可写作两个复对称矩阵的积。

2、若对称矩阵A的每个元素均为实数,A是Symmetric矩阵。

3、一个矩阵同时为对称矩阵及斜对称矩阵当且仅当所有元素都是零的时候成立。

4、如果X是对称矩阵,那么对于任意的矩阵A,AXAT也是对称矩阵。

5、n阶实对称矩阵,是n维欧式空间V(R)的对称变换在单位正交基下所对应的矩阵。

def setChuMat(long=4, minVal=0, maxVal=10, minNum=-5, maxNum=10, inver=False, *args, **kwargs) -> Matrix:
    """
    生成分块矩阵
    :param long: 分块矩阵的长度
    :param minNum: 分块矩阵包含的最小数
    :param maxNum: 分块矩阵包含的最大数
    :param inver: 是否可逆
    :param args:
    :param kwargs:
    :return: 返回分块矩阵

    >>> setChuMat()

    """
    x = long % 2  # 判断矩阵的行数是否为奇数
    matlong = int(long / 2)
    y = long - matlong
    if x == 0:  # 直接生成两个相同维度分块
        chuMat = diag(setDetMat(matlong, minVal, maxVal, minNum, maxNum, inver),
                      setDetMat(matlong, minVal, maxVal, minNum, maxNum, inver))
    else:  # 若矩阵的维度为基数,则用两个不同维度的可逆矩阵生成
        chuMat = diag(setDetMat(matlong, minVal, maxVal, minNum, maxNum, inver),
                      setDetMat(y, minVal, maxVal, minNum, maxNum, inver))
    return chuMat

记得导包

import numpy as np
import random
import sympy
from sympy import *

你可能感兴趣的:(python,数学,线性代数,python,矩阵)