python求逆矩陣的方法,Python 如何求矩陣的逆

我就廢話不多說了,大家還是直接看代碼吧~

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/531959.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/531959.shtml
英文地址,請注明出處:http://en.pswp.cn/news/531959.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

plsql存過聲明游標_plsql編程學習之游標一

oralce plsql編程的游標游標分類1顯示游標2隱式游標隱式游標,oracle自動管理,不用聲明,打開和關閉,ORACLE自動處理,使用隱式游標%FOUND時,需要加上 SQL%FOUND顯示游標,需要自己聲明,…

用命令行編譯java并生成可執行的jar包

用命令行編譯java并生成可執行的jar包 1.編寫源代碼。 編寫源文件:CardLayoutDemo.java并保存,例如:I:\myApp\CardLayoutDemo.java。程序結構如下:package test;import java.awt.*; import javax.swing.*; //更多包的導入...clas…

python計時器單位,python(計時器)

計時器要求:定制一個計時器的類start 和 stop方法代表啟動計時和停止計時假設計時器對象 t1,print(t1)和直接調用t1 均顯示結果當計時器未啟動或已停止計時,調用stop方法能給予溫馨提示兩個計時器對象可以相加: t1 t2只能使用提供…

查詢分析300萬筆記錄_給你100萬條數據的一張表,你將如何查詢優化?

1.兩種查詢引擎查詢速度(myIsam 引擎)InnoDB 中不保存表的具體行數,也就是說,執行select count(*) from table時,InnoDB要掃描一遍整個表來計算有多少行。MyISAM只要簡單的讀出保存好的行數即可。注意的是,當count(*)語句包含 whe…

poj 3321 Apple Trie

/*poj 3321 Apple Trie 這道題的關鍵是如何將一個樹建成一個一維數組利用樹狀數組來解題!可以利用dfs()來搞定,我們在對一個節點深搜后,所經過的節點的數目就是該節點的子樹的數目所以我們利用start[i]數組來記錄 i 節…

php美團項目分享,美團項目(純代碼)(示例代碼)

一.框架搭建1.icon規格要求可從文檔中查找,搜索app icon.2.因為很多界面重復利用,所以不用storyboarda.刪除stroyboard,在設置中Info -> Main storyboard file base name 項直接去除b.創建ZXHomeViewController(UICollectionViewController)和ZXNavigationController(UINavi…

ioc spring 上機案例_Spring的IoC入門案例

1、創建工程,導入坐標1.1 創建工程1.2 導入坐標xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">4.0.0org.examplespring_01_io…

java中父類與子類, 不同的兩個類中的因為構造函數由于遞歸調用導致棧溢出問題...

1 /*2 對于類中對成員變量的初始化和代碼塊中的代碼全部都挪到了構造函數中,3 并且是按照java源文件的初始化順序依次對成員變量進行初始化的,而原構造函數中的代碼則移到了構造函數的最后執行4 */5 import static java.lang.System.out;6 7 public clas…

liunx php的項目地址,在 Linux 配置 PHP 項目

在 Linux 配置 PHP 項目一, 搭建測試環境軟件環境:(PHP 項目)PHP5.4Apache(httpd2.4)mysql5.7二, 安裝1掛載:1. 把 iso 的鏡像文件放到虛擬機 Linux 的 CD/ROM(在右下角 (網絡適配器 / 橋接模式) 旁有個光盤, 點擊連接, 之后頁面出現一個光盤)2. 使用掛載命令, 把 CD/ROM 設備里…

springwebflux 頁面_【SpringBoot WEB系列】WebFlux靜態資源配置與訪問

上一篇博文介紹SpringMVC的靜態資源訪問,那么在WebFlux中,靜態資源的訪問姿勢是否一致呢I. 默認配置與SpringBoot的默認配置一樣,WebFlux同樣是classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/…

java中TreeSet集合如何實現元素的判重

1 /*2 看一下部分的TreeSet源碼....3 public class TreeSet<E> extends AbstractSet<E>4 implements NavigableSet<E>, Cloneable, java.io.Serializable5 {6 private transient NavigableMap<E,Object> m;7 //NavigableMap繼承SortedMap&…

php中改變函數路由,通過PHP重啟路由器以更換IP(原創)

在采集大批量數據時常常會觸發對方服務器的“自我保護”&#xff0c;請求過于頻繁就限制訪問。這時需要停留很長一段時間(十幾分鐘到幾十分鐘不等)才能恢復訪問&#xff0c;這樣采集數據的速度就受到非常大的限制。解決方法有兩個&#xff1a;1 通過圖片識別繞過驗證碼機制&…

axure 畫小程序效果圖_APP詳情頁如何用Axure畫出來

詳情頁是App原型中比較復雜的頁面類型&#xff0c;熟悉它的常用套路有助于快速畫出。之前的文章已經講解了APP常見功能中的頁面模板、下導航、上導航、列表頁怎么畫出來&#xff0c;請繼續關注浪子教你畫APP原型后續的其他功能模塊。APP詳情頁往往包含上導航&#xff0c;內容區…

HashSet中實現不插入重復的元素

/* 看一下部分的HashSet源碼.... public class HashSet<E>extends AbstractSet<E>implements Set<E>, Cloneable, java.io.Serializable {static final long serialVersionUID -5024744406713321676L;private transient HashMap<E,Object> map;privat…

tuxedo錯誤碼6_TUXEDE返回的所有錯誤代碼

TUXEDE返回的所有錯誤代碼tuxedo/include/atmi.h定于了TUXEDE返回的所有錯誤代碼。/** tperrno values - error codes* The man pages explain the context in which the following error codes* can return.*/#define TPMINVAL 0 /* minimum error message */#define TPEABORT…

java中finally和return的執行順序

注意&#xff1a;return的位置。。。從這幾個例子中可以看到&#xff0c;如果try之前沒有有條件的return&#xff0c;則try..catch..finally語句塊中的語句都是順序執行&#xff08;如果try中或者catch中 有return語句&#xff0c;那么先執行該return&#xff0c;然后執行final…

oracle如何設置權限,ORACLE的權限設置

創建用戶create user abc identified by 123;----------------------------------------------------授權grant create session,create table to abcgrant create sysdba to database----------------------------------------------------然后conn abc密碼&#xff1a;123----…

有關try..catch..finally處理異常的總結

//看一下下面的程序&#xff0c;你能正確的寫出不同的testEx2()方法時&#xff0c;程序的最終打印出來的數據嗎....先不要看下面的答案 public class ExceptionTest { public ExceptionTest() { } boolean testEx() throws Exception { boolean ret true; try { ret te…

oracle key的含義,v$session SERIAL#字段的含義

liyx&#xff1a;#!/bin/bash||#Write by liyx||||#數據庫服務器地址||DBHOSTlocalhost||#數據庫登錄名||USERNAMEroot||#數據庫密碼||PASSWORDroot||#需要備份的數據庫 或 輸入類似 db1 db2 的列表清單 例 DBNAMES"all"||DBNAMES"ess_simple"||#備份MYSQL…

java.util.Scanner簡單應用

import java.util.Scanner; import java.io.*; public class FileScannerTest{public static void main(String args[]){ //**************Scanner 的一般用//1.public Scanner(InputStream source),利用InputStream 對象進行構造Scanner myScanner1 new Scanner(System.in);w…