你好,下面是一個對應的三階矩陣求逆的代碼
創(chuàng)新互聯(lián)建站于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目成都網(wǎng)站設計、網(wǎng)站制作網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元農(nóng)安做網(wǎng)站,已為上家服務,為農(nóng)安各地企業(yè)和個人服務,聯(lián)系電話:18980820575
import?warnings
warnings.filterwarnings("ignore")
matrix1?=?[
[1,2,0,0],
[3,4,0,0],
[0,0,4,1],
[0,0,3,2],
]
matrix2?=?[
[1,0,-1,2,1],
[3,2,-3,5,-3],
[2,2,1,4,-2],
[0,4,3,3,1],
[1,0,8,-11,4],
]
matrix3?=?[
[1,0,-1,2,1,0,2],
[1,2,-1,3,1,-1,4],
[2,2,1,6,2,1,6],
[-1,4,1,4,0,0,0],
[4,0,-1,21,9,9,9],
[2,4,4,12,5,6,11],
[7,-1,-4,22,7,8,18],
]
def?step0(m):
n?=?len(m)
l?=?[]
for?i?in?range(0,n):
l.append([])
for?j?in?range(0,n):
if?i?==?j:
l[i].append(1)
else:
l[i].append(0)
return?l
def?step1(m):
n?=?len(m)
"""交換操作記錄數(shù)組?swap"""
swap?=?[]
l?=?[]
for?i?in?range(0,n):
swap.append(i)
l.append([])
for?j?in?range(0,n):
l[i].append(0)
"""對每一列進行操作"""
for?i?in?range(0,n):
max_row?=?m[i][i]
row?=?i
for?j?in?range(i,n):
if?m[j][i]?=?max_row:
max_row?=?m[j][i]
#global?row
row?=?j
swap[i]?=?row
"""交換"""
if?row?!=?i:
for?j?in?range(0,n):
m[i][j],m[row][j]?=?m[row][j],m[i][j]
"""消元"""
for?j?in?range(i+1,n):
if?m[j][i]?!=?0:
l[j][i]?=?m[j][i]?/?m[i][i]
for?k?in?range(0,n):
m[j][k]?=?m[j][k]?-?(l[j][i]?*?m[i][k])
return?(swap,m,l)
def?step2(m):
n?=?len(m)
long?=?len(m)-1
l?=?[]
for?i?in?range(0,n):
l.append([])
for?j?in?range(0,n):
l[i].append(0)
for?i?in?range(0,n-1):
for?j?in?range(0,long-i):
if?m[long-i-j-1][long-i]?!=?0?and?m[long-i][long-i]?!=?0:
l[long-i-j-1][long-i]?=?m[long-i-j-1][long-i]?/?m[long-i][long-i]
for?k?in?range(0,n):
m[long-i-j-1][k]?=?m[long-i-j-1][k]?-?l[long-i-j-1][long-i]?*?m[long-i][k]
return?(m,l)
def?step3(m):
n?=?len(m)
l?=?[]
for?i?in?range(0,n):
l.append(m[i][i])
return?l
def?gauss(matrix):
n?=?len(matrix)
new?=?step0(matrix)
(swap,matrix1,l1)?=?step1(matrix)
(matrix2,l2)?=?step2(matrix1)
l3?=?step3(matrix2)
for?i?in?range(0,n):
if?swap[i]?!=?i:
new[i],new[swap[i]]?=?new[swap[i]],new[i]
for?j?in?range(i+1,n):
for?k?in?range(0,n):
if?l1[j][i]?!=?0:
new[j][k]?=?new[j][k]?-?l1[j][i]?*?new[i][k]???
for?i?in?range(0,n-1):
for?j?in?range(0,n-i-1):
if?l2[n-1-i-j-1][n-1-i]?!=?0:
for?k?in?range(0,n):
new[n-1-i-j-1][k]?=?new[n-1-i-j-1][k]?-?l2[n-1-i-j-1][n-i-1]?*?new[n-1-i][k]
for?i?in?range(0,n):
for?j?in?range(0,n):
new[i][j]?=?new[i][j]?/?l3[i]
return?new
x1?=?gauss(matrix1)
x2?=?gauss(matrix2)
x3?=?gauss(matrix3)
print?(x1)
print?(x2)
print?(x3)
逆矩陣求法:
方法有很多如(伴隨矩陣法,行(列)初等變換等)。以伴隨矩陣法來求其逆矩陣。
1、判斷題主給出的矩陣是否可逆。
2、求矩陣的代數(shù)余子式,A11、A12、A13、A21、A22、A32、A31、A32、A33。
3、求伴隨矩陣。
4、得到逆矩陣。
相關性質(zhì)
(1)A與B的地位是平等的,故A、B兩矩陣互為逆矩陣,也稱A是B的逆矩陣。
(2)單位矩陣E是可逆的。
(3)零矩陣是不可逆的,即取不到B,使OB=BO=E。
(4)如果A可逆,那么A的逆矩陣是唯一的。事實上,設B、C都是A的逆矩陣,則有B=BE =B(AC)=(BA)C=EC=C。
1、首先打開pycharm軟件,新建一個python文件并導入numpy庫。
2、然后創(chuàng)建矩陣A,這里先創(chuàng)建一個兩行兩列的數(shù)組,在用numpy的mat函數(shù)將數(shù)組轉(zhuǎn)換為矩陣。
3、接著計算矩陣A的逆矩陣,逆矩陣是通過A.I求得。
4、求出了矩陣A的逆矩陣后,用矩陣B乘以這個逆矩陣就是矩陣的除法了,即為矩陣B除以矩陣A的值。
新聞名稱:python逆矩陣函數(shù) python求逆矩陣函數(shù)
當前鏈接:http://www.rwnh.cn/article38/doohssp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供云服務器、品牌網(wǎng)站建設、動態(tài)網(wǎng)站、標簽優(yōu)化、品牌網(wǎng)站制作、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)