1. 用python實現三階矩陣的求逆
你好,下面是一個對應的三階矩陣求逆的代碼
importwarnings
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],
]
defstep0(m):
n=len(m)
l=[]
foriinrange(0,n):
l.append([])
forjinrange(0,n):
ifi==j:
l[i].append(1)
else:
l[i].append(0)
returnl
defstep1(m):
n=len(m)
"""交換操作記錄數組swap"""
swap=[]
l=[]
foriinrange(0,n):
swap.append(i)
l.append([])
forjinrange(0,n):
l[i].append(0)
"""對每一列進行操作"""
foriinrange(0,n):
max_row=m[i][i]
row=i
forjinrange(i,n):
ifm[j][i]>=max_row:
max_row=m[j][i]
#globalrow
row=j
swap[i]=row
"""交換"""
ifrow!=i:
forjinrange(0,n):
m[i][j],m[row][j]=m[row][j],m[i][j]
"""消元"""
forjinrange(i+1,n):
ifm[j][i]!=0:
l[j][i]=m[j][i]/m[i][i]
forkinrange(0,n):
m[j][k]=m[j][k]-(l[j][i]*m[i][k])
return(swap,m,l)
defstep2(m):
n=len(m)
long=len(m)-1
l=[]
foriinrange(0,n):
l.append([])
forjinrange(0,n):
l[i].append(0)
foriinrange(0,n-1):
forjinrange(0,long-i):
ifm[long-i-j-1][long-i]!=0andm[long-i][long-i]!=0:
l[long-i-j-1][long-i]=m[long-i-j-1][long-i]/m[long-i][long-i]
forkinrange(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)
defstep3(m):
n=len(m)
l=[]
foriinrange(0,n):
l.append(m[i][i])
returnl
defgauss(matrix):
n=len(matrix)
new=step0(matrix)
(swap,matrix1,l1)=step1(matrix)
(matrix2,l2)=step2(matrix1)
l3=step3(matrix2)
foriinrange(0,n):
ifswap[i]!=i:
new[i],new[swap[i]]=new[swap[i]],new[i]
forjinrange(i+1,n):
forkinrange(0,n):
ifl1[j][i]!=0:
new[j][k]=new[j][k]-l1[j][i]*new[i][k]
foriinrange(0,n-1):
forjinrange(0,n-i-1):
ifl2[n-1-i-j-1][n-1-i]!=0:
forkinrange(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]
foriinrange(0,n):
forjinrange(0,n):
new[i][j]=new[i][j]/l3[i]
returnnew
x1=gauss(matrix1)
x2=gauss(matrix2)
x3=gauss(matrix3)
print(x1)
print(x2)
print(x3)
2. 逆矩陣怎麼求
013. 求逆矩陣怎麼用python源代碼實現
加上頭文件
fromnumpyimport*
矩陣有幾個特有的屬性:
(a).T--返回自身的轉置
(b).H--返回自身的共軛轉置
(c).I--返回自身的逆矩陣
(d).A--返回自身數據的2維數組的一個視圖
4. 求解答,帶小數點的矩陣的逆矩陣怎麼算
只幫你算一個,其它自己算。先寫出增廣矩陣,再行行變換: 1 2 2 1 0 0 (1) 2 1 -2 0 1 0 2 -2 1 0 0 1 1 2 2 1 0 0 上一個矩陣 --> 0 -3 -6 -2 1 0 第一行×(-2)+第二行 0 -6 -3 -2 0 1 第一行×(-2)+第三行, 1 2 2 1 0 0 上一個矩陣 --> 0 1 2 2/3 -1/3 0 第二行×(-1/3) 0 2 1 2/3 0 -1/3 第三行×(-1/3) 1 2 2 1 0 0 --> 0 1 2 2/3 -1/3 0 上一個矩陣 0 0 -3 -2/3 2/3 -1/3 第二行×(-2)+第三行 1 2 2 1 0 0 --> 0 1 2 -2/3 1/3 0 上一個矩陣 0 0 1 2/9 -2/9 1/9 第三行×(-1/3) 1 2 2 1 0 0 上一個矩陣 --> 0 1 0 -10/9 7/9 -2/9 第三行×(-2) +第二行 0 0 1 2/9 -2/9 1/9 1 0 0 25/9 -10/9 2/9 第三行×(-2) +第二行×(-2) +第一行 --> 0 1 0 -10/9 7/9 -2/9 0 0 1 2/9 -2/9 1/9因此,矩陣(1)的逆矩陣是(增廣部分變換後所得) 25/9 -10/9 2/9 -10/9 7/9 -2/9 2/9 -2/9 1/9
5. python 矩陣的問題
這個只是為了聲明數值的具體類型。
注意看,直接寫1,就是int數值型,寫1.那就是float型
6. python怎麼實現矩陣的除法
1、首先打開pycharm軟體,新建一個python文件並導入numpy庫。
7. 求逆矩陣的方法
求矩陣的逆的三種方法:1.待定系數法、2.伴隨矩陣求逆矩陣、3.初等變換求逆矩陣。在數學中,矩陣(Matrix)是一個按照長方陣列排列的復數或實數集合,最早來自於方程組的系數及常數所構成的方陣。這一概念由19世紀英國數學家凱利首先提出。
矩陣是高等代數學中的常見工具,也常見於統計分析等應用數學學科中。在物理學中,矩陣於電路學、力學、光學和量子物理中都有應用;計算機科學中,三維動畫製作也需要用到矩陣。 矩陣的運算是數值分析領域的重要問題。將矩陣分解為簡單矩陣的組合可以在理論和實際應用上簡化矩陣的運算。對一些應用廣泛而形式特殊的矩陣,例如稀疏矩陣和准對角矩陣,有特定的快速運算演算法。關於矩陣相關理論的發展和應用,請參考《矩陣理論》。在天體物理、量子力學等領域,也會出現無窮維的矩陣,是矩陣的一種推廣。
8. 矩陣求逆,請問這段代碼有什麼問題為什麼對於數據比較奇怪的6X6矩陣,算不出正確的逆矩陣
我沒細看你的代碼
首先,第一組循環(先確保增廣矩陣前半部分對角線上所有元素都不為0)應該放到初等變換的過程中,因為變換過程中對角元會變化,不能事先預判
然後,行交換時不應該等到出現零對角元了才交換,而應該總是把模最大的元素換到對角元(這個稱為選主元),因為你這里的數都是浮點數,需要考慮數值穩定性
別的沒看,你先把這兩點改一下再說
再給你個參考程序( MATLAB),是按同一種思路寫的
http://..com/question/874769421823864732