python求逆矩阵的方法,Python 如何求矩阵的逆「建议收藏」

python求逆矩阵的方法,Python 如何求矩阵的逆「建议收藏」我就废话不多说了,大家还是直接看代码吧~importnumpyasnpkernel=np.array([1,1,1,2]).reshape((2,2))print(kernel)print(np.linalg.inv(kernel))注意,Singularmatrix奇异矩阵不可求逆补充:python+numpy中矩阵的逆和伪逆的区别定义:对于矩阵A,如果存在一个矩阵B,使得A…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

我就废话不多说了,大家还是直接看代码吧~

import numpy as np

kernel = np.array([1, 1, 1, 2]).reshape((2, 2))

print(kernel)

print(np.linalg.inv(kernel))

b14af8225d2bac426e6d5a932815669f.png

注意,Singular matrix奇异矩阵不可求逆

79116c75da0ce332071a1ed3e9b55986.png

补充:python+numpy中矩阵的逆和伪逆的区别

定义:

对于矩阵A,如果存在一个矩阵B,使得AB=BA=E,其中E为与A,B同维数的单位阵,就称A为可逆矩阵(或者称A可逆),并称B是A的逆矩阵,简称逆阵。(此时的逆称为凯利逆)

矩阵A可逆的充分必要条件是|A|≠0。

伪逆矩阵是逆矩阵的广义形式。由于奇异矩阵或非方阵的矩阵不存在逆矩阵,但可以用函数pinv(A)求其伪逆矩阵。

基本语法为X=pinv(A),X=pinv(A,tol),其中tol为误差,pinv为pseudo-inverse的缩写:max(size(A))*norm(A)*eps。

函数返回一个与A的转置矩阵A’ 同型的矩阵X,并且满足:AXA=A,XAX=X.此时,称矩阵X为矩阵A的伪逆,也称为广义逆矩阵。

pinv(A)具有inv(A)的部分特性,但不与inv(A)完全等同。

如果A为非奇异方阵,pinv(A)=inv(A),但却会耗费大量的计算时间,相比较而言,inv(A)花费更少的时间。

代码如下:

1.矩阵求逆

import numpy as np

a = np.array([[1, 2], [3, 4]]) # 初始化一个非奇异矩阵(数组)

print(np.linalg.inv(a)) # 对应于MATLAB中 inv() 函数

# 矩阵对象可以通过 .I 求逆,但必须先使用matirx转化

A = np.matrix(a)

print(A.I)

2.矩阵求伪逆

import numpy as np

# 定义一个奇异阵 A

A = np.zeros((4, 4))

A[0, -1] = 1

A[-1, 0] = -1

A = np.matrix(A)

print(A)

# print(A.I) 将报错,矩阵 A 为奇异矩阵,不可逆

print(np.linalg.pinv(A)) # 求矩阵 A 的伪逆(广义逆矩阵),对应于MATLAB中 pinv() 函数

这就是矩阵的逆和伪逆的区别

截至2020/10/4,matrix函数还可以使用,但已经过时,应该是mat函数这种。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

时间: 2021-03-09

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/171661.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 狂神说Linux_狂神说docker笔记

    狂神说Linux_狂神说docker笔记Linux在服务器端,很多大型项目都是部署在Linux服务器上利用VM + Centos7搭建本地Linux系统你可以使用 man [命令]来查看各个命令的使用文档,如 :man cp。概念云服务器就是一个远程电脑Linux中一切皆文件根目录/,所有的文件都挂载在这个节点下/bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。/boot: 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。/dev : dev是Device(设备

    2022年8月9日
    8
  • 海龟交易_海龟交易法则的核心

    海龟交易_海龟交易法则的核心入行十多年,见过不少充满灵性的投资人,选股能力非常出色,但是在买卖时机、投入资金多寡上的不足使得他们的盈利水平并不理想。没有别的原因,是缺少一个交易系统。一个完整的交易系统,包括:·市场

    2022年8月2日
    9
  • 什么是SQL_SQL SERVER

    什么是SQL_SQL SERVER参考:SQL中的declare用法sql中的变量定义declare变量是在批处理或过程的主体中用DECLARE语句声明的,并用SET或SELECT语句赋值。而SQL中是以GO语句来区分批处理的。所以在例子中一个简单的if语句中定义的变量,可以在if语句外面使用。…

    2022年8月20日
    5
  • Android错误之ListView加载错位_ListView图片错位

    又遇到ListView加载item时,多个item中的图片会错位的情况现象如下图,同一个人的头像显示的乱七八糟找了一张图,很好地说明了问题的原因问题原因就在于convertView的重用,当重用 convertView 时,最初一屏显示 7 条记录, getView 被调用 7 次,创建了 7 个 convertView,当 Item1 划出屏幕, Item8 进入屏幕时,这时没有为 Item8

    2022年3月11日
    48
  • C++ — TranslateMessage函数

    C++ — TranslateMessage函数TranslateMessage是用来把虚拟键消息转换为字符消息。由于Windows对所有键盘编码都是采用虚拟键的定义,这样当按键按下时,并不得字符消息,需要键盘映射转换为字符的消息。 TranslateMes…

    2025年9月4日
    9
  • uname命令详解_uname -r

    uname命令详解_uname -r博客搬家,原地址:https://langzi989.github.io/2018/12/25/uname命令说明/使用uname命令可以帮助我们了解当前使用的系统的硬件信息,内核信息,处理器信息和当前使用的系统信息等。该命令可以在Fedora,Debian,CentOS,SUSELinux或者其他Linux操作系统的发行版本上运行。uname命令的使用方法在网络上已经有很多,甚…

    2025年8月13日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号