数理基础(线性代数)------矩阵行列式、特征值、特征向量、伴随矩阵、其次和非齐次线性方程组求解

矩阵函数的封装

1.定义函数,实现求矩阵的行列式

def Isdet(A):
    # 矩阵的行数=列数:方阵,只有方阵才有行列式
    if A.shape[0]==A.shape[1]:
        print('A是方阵,存在行列式。|A|=',np.linalg.det(A))
    else:
        print('A不是方阵,不存在行列式')

2.定义函数,实现求矩阵的秩

def Rank(A):
    rA=np.linalg.matrix_rank(A)
    print('矩阵的秩:',rA)

3.定义函数,判断矩阵是否有逆矩阵,若存在,输出逆矩阵

def Isinv(A):
    # 如果行列式的值不等于0,存在逆矩阵
    if np.linalg.det(A)!=0:
        print('存在逆矩阵,为\n',np.linalg.inv(A))
    else:
        print('不存在逆矩阵')

4.定义函数,实现求矩阵的伴随矩阵

def Bansui(A):
    Bs=np.linalg.inv(A)*np.linalg.det(A)
    print('矩阵的伴随矩阵:\n',Bs)

5.定义函数,判断齐次线性方程组AX=0的解的情况,若存在唯一解并输出

#方法一
def JudgeA(A):
    # 如果行列式|A|≠0,存在唯一零解;|A|=0,存在无穷解
    if np.linalg.det(A)!=0:
        print('存在唯一零解',np.linalg.solve(A,[0,0,0]))
    else:
        print('存在无穷解')
#方法二
def Judge2(A):
    #如果 R(A)=n,存在唯一零解;R(A)<n,存在无穷解 (n:未知数的个数=列数)
    if np.linalg.matrix_rank(A)==A.shape[1]:
        print('存在唯一零解', np.linalg.solve(A, [0, 0, 0]))
    else:
        print('存在无穷解')

6.定义函数,判断非齐次线性方程组AX=b的解的情况,若存在唯一解并输出

def JuAXb(A,b):
    rA=np.linalg.matrix_rank(A)  #系数矩阵的秩
    Ab=np.c_[A,b]
    rAb=np.linalg.matrix_rank(Ab)  #增广矩阵的秩
    #如果系数矩阵的秩 ≠ 增广矩阵的秩 :无解
    if rA!=rAb:
        print('方程组AX=b无解')
    #如果系数矩阵的秩 =增广矩阵的秩 =n :唯一解  (n:未知数的个数=系数矩阵的列数)
    elif rA==rAb==A.shape[1]:
        print('方程组AX=b有唯一解,为',np.linalg.solve(A,b))
    #如果系数矩阵的秩 =增广矩阵的秩 <n :无穷解
    else:
        print('方程组AX=b有无穷解')

7.定义函数,实现求矩阵的特征值与特征向量

def Iseig(A):
    a,b=np.linalg.eig(A)
    print('特征值:',a)
    print('特征向量 \n',b)

8.代码运行

if __name__ == '__main__':
    A=np.array([[2,-1,0],
                [1,3,1],
                [0,1,2]])
    print('A=\n',A)
    Isdet(A)
    Rank(A)
    Isinv(A)
    Bansui(A)
    JudgeA(A)
    b=[1,2,0]
    JuAXb(A,b)
    Iseig(A)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小飞龙程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值