例題6-8 求矩陣的行列式值
NUM=0 # //A的階數
size=0 # //最大反覆運算次數
t=0 #//標記最大的數所在的行
Max=0.0 # //比較每列時暫時存放最大的數
tmp=0.0 # //用於交換時存放中間變數的
tmp1=0.0 # //存儲中間變數以減少計算量
sign=0 # //標記行交換的次數
n=5
A= [ [0.0 for i in range(n+1)] for j in range(n+1) ] #a [n][n]//係數矩陣
A = [[-6.00, 0.00 , 1.00 ,3.00 , 2.00],
[-1.00 , 5.00 , 0.00 , 1.00 , 7.00],
[8.00 , 3.00 , 2.00 , 1.00 , 7.00],
[0.00 , 1.00 , 5.00 , -3.00 , 2.00],
[1.00 ,15.00 , -3.00, 9.00 , 4.00]]
print("您輸入行列式A的階數:",n)
print("您輸入的矩陣A[][]:\n")
for i in range(0 ,n):
for j in range(0,n):
print( "A[",i,"][",j,"]=",round(A[i][j],4),'\t',end='')
print("")
for i in range(0 , n):
t=i;
Max=A[i][i];
for j in range (i+1 , n ): # //判斷每列的最大數,並將其放到主對角線上
if(abs(Max)<abs(A[j][i])):
#//當某一行大於k時將其賦值給k,並將其所在行標記下來
Max=A[j][i]
t=j
if(abs(Max)<0.000001): # //判斷矩陣是否為奇異陣
print("行列式的值是: 0 ")
break;
if(t != i): # //當t不等於i時交換這兩行的所有元素
sign+=1
for j in range (i , n):
tmp=A[i][j];
A[i][j]=A[t][j];
A[t][j]=tmp;
for j in range (i+1 , n): # //消去過程,化為上三角的形式
tmp1=A[j][i]/A[i][i] # //tmp1避免了p每次變化時都要計算這個
for k in range (i , n ): # //p=i注意了啊!!
A[j][k]=A[j][k]-A[i][k]*tmp1;
#print(round(A[j][k],4),'\t',end='')
print("\n\nSign=",sign)
for i in range(0 ,n):
for j in range(0,n):
print( "A[",i,"][",j,"]=",round(A[i][j],4),'\t',end='')
print("")
tmp1=1
for i in range (0, n): # //求化簡後行列式的值
print(round(A[i][i],4),'*',end='')
tmp1*=A[i][i];
if(sign%2==0):
print("行列式的值是:", round(tmp1,4))
else:
print("行列式的值是:", round(-tmp1,4))
==== RESTART: F:/2018-09勤益科大數值分析/數值分析/PYTHON/EX6-8-3.py ============
您輸入行列式A的階數: 5
您輸入的矩陣A[][]:
A[ 0 ][ 0 ]= -6.0 A[ 0 ][ 1 ]= 0.0 A[ 0 ][ 2 ]= 1.0 A[ 0 ][ 3 ]= 3.0 A[ 0 ][ 4 ]= 2.0
A[ 1 ][ 0 ]= -1.0 A[ 1 ][ 1 ]= 5.0 A[ 1 ][ 2 ]= 0.0 A[ 1 ][ 3 ]= 1.0 A[ 1 ][ 4 ]= 7.0
A[ 2 ][ 0 ]= 8.0 A[ 2 ][ 1 ]= 3.0 A[ 2 ][ 2 ]= 2.0 A[ 2 ][ 3 ]= 1.0 A[ 2 ][ 4 ]= 7.0
A[ 3 ][ 0 ]= 0.0 A[ 3 ][ 1 ]= 1.0 A[ 3 ][ 2 ]= 5.0 A[ 3 ][ 3 ]= -3.0 A[ 3 ][ 4 ]= 2.0
A[ 4 ][ 0 ]= 1.0 A[ 4 ][ 1 ]= 15.0 A[ 4 ][ 2 ]= -3.0 A[ 4 ][ 3 ]= 9.0 A[ 4 ][ 4 ]= 4.0
Sign= 6
A[ 0 ][ 0 ]= 8.0 A[ 0 ][ 1 ]= 3.0 A[ 0 ][ 2 ]= 2.0 A[ 0 ][ 3 ]= 1.0 A[ 0 ][ 4 ]= 7.0
A[ 1 ][ 0 ]= 0.0 A[ 1 ][ 1 ]= 14.625 A[ 1 ][ 2 ]= -3.25 A[ 1 ][ 3 ]= 8.875 A[ 1 ][ 4 ]= 3.125
A[ 2 ][ 0 ]= 0.0 A[ 2 ][ 1 ]= 0.0 A[ 2 ][ 2 ]= 3.0 A[ 2 ][ 3 ]= 2.3846 A[ 2 ][ 4 ]= 6.7692
A[ 3 ][ 0 ]= 0.0 A[ 3 ][ 1 ]= 0.0 A[ 3 ][ 2 ]= 0.0 A[ 3 ][ 3 ]= -7.7578 A[ 3 ][ 4 ]= -9.9972
A[ 4 ][ 0 ]= 0.0 A[ 4 ][ 1 ]= 0.0 A[ 4 ][ 2 ]= 0.0 A[ 4 ][ 3 ]= 0.0 A[ 4 ][ 4 ]= 7.7003
8.0 *14.625 *3.0 *-7.7578 *7.7003 *行列式的值是: -20968.0
>>>
訂閱:
張貼留言 (Atom)
2024_09 作業3 以Node-Red 為主
2024_09 作業3 (以Node-Red 為主 Arduino 可能需要配合修改 ) Arduino 可能需要修改的部分 1)mqtt broker 2) 主題Topic (發行 接收) 3) WIFI ssid , password const char br...
-
python pip 不是内部或外部命令 -- 解決方法 要安裝 Pyqt5 1. 首先,開啟命令提示字元。 2. 輸入 pip3 install pyqt5 好像不能執行 ! ! 錯誤顯示 : ‘ pip3 ’ 不是內部或外部命令、可執行的程式或批...
-
課程講義 下載 11/20 1) PPT 下載 + 程式下載 http://www.mediafire.com/file/cru4py7e8pptfda/106%E5%8B%A4%E7%9B%8A2-1.rar 11/27 2) PPT 下載...
-
• 認 識 PreFix、InFix、PostFix PreFix(前序式):* + 1 2 + 3 4 InFix(中序式): (1+2)*(3+4) PostFix(後序式):1 2 + 3 4 + * 後 序式的運算 例如: 運算時由 後序式的...
沒有留言:
張貼留言