2019年1月27日 星期日

範例6-5 利用 LU分解 矩陣

範例6-5 利用 LU分解 矩陣

 n=3
 2  1  -3
-1  3   2
 3  1  -3

n=4
8   1   3    2
2   9  -1  -2
1   3   2  -1
1   0   6    4


#/*********** LU Decomposition for solving linear equations **********/
#n=3
n=4
print("Enter the order of matrix ! ",n)

a=  [ [0.0 for i in range(n+1)]  for j in range(n+1) ]       #[n][n],
l=  [ [0.0 for i in range(n+1)]  for j in range(n+1) ]       #[n][n],
u=  [ [0.0 for i in range(n+1)]  for j in range(n+1) ]       #[n][n],
                                 
'''
a =[ [0.0 ,   0.0 , 0.0 , 0.0  , 0.0 , 0.0 ,   0.0 , 0.0,   0.0 , 0.0 ],
        [0.0 ,2.0 ,  1.0 , -3.0 , 0.0 , 0.0 , 0.0   , 0.0 , 0.0,   0.0  ] ,
        [0.0 ,-1.0 , 3.0 , 2.0,  0.0  , 0.0 , 0.0 ,   0.0 , 0.0,   0.0 ] ,
        [0.0 ,3.0 ,  1.0 , -3.0 , 0.0  , 0.0 , 0.0 ,   0.0 , 0.0,   0.0] ,
        [0.0 ,0.0 ,   0.0 , 0.0 , 0.0  , 0.0 , 0.0 ,   0.0 , 0.0,   0.0 ] ,
        [0.0 ,0.0 ,   0.0 , 0.0 , 0.0  , 0.0 , 0.0 ,   0.0 , 0.0,   0.0  ] ,
        [0.0 ,0.0 ,   0.0 , 0.0 , 0.0  , 0.0 , 0.0 ,   0.0 , 0.0,   0.0 ] ,
        [0.0 ,0.0 ,   0.0 , 0.0 , 0.0  , 0.0 , 0.0 ,   0.0 , 0.0,   0.0 ] ,
        [0.0 ,0.0 ,   0.0 , 0.0 , 0.0  , 0.0 , 0.0 ,   0.0 , 0.0,   0.0 ]  ]


'''
a =[ [0.0 ,   0.0 , 0.0 , 0.0  , 0.0 , 0.0 ,   0.0 , 0.0,   0.0 , 0.0 ],
        [0.0 , 8.0 ,  1.0 ,  3.0 , 2.0 , 0.0 , 0.0   , 0.0 , 0.0,   0.0  ] ,
        [0.0 , 2.0 ,  9.0 ,  -1.0,  -2.0  , 0.0 , 0.0 ,   0.0 , 0.0,   0.0 ] ,
        [0.0 , 1.0 ,  3.0 ,  2.0  ,  -1.0  , 0.0 , 0.0 ,   0.0 , 0.0,   0.0] ,
        [0.0 , 1.0 ,  0.0 ,  6.0 , 4.0  , 0.0 , 0.0 ,   0.0 , 0.0,   0.0 ] ,
        [0.0 ,0.0 ,   0.0 , 0.0 , 0.0  , 0.0 , 0.0 ,   0.0 , 0.0,   0.0  ] ,
        [0.0 ,0.0 ,   0.0 , 0.0 , 0.0  , 0.0 , 0.0 ,   0.0 , 0.0,   0.0 ] ,
        [0.0 ,0.0 ,   0.0 , 0.0 , 0.0  , 0.0 , 0.0 ,   0.0 , 0.0,   0.0 ] ,
        [0.0 ,0.0 ,   0.0 , 0.0 , 0.0  , 0.0 , 0.0 ,   0.0 , 0.0,   0.0 ]  ]

# //print the new matrix
print("Enter all coefficients of matrix :")
for i in range(1,n+1):
    for j in range(1,n+1):
        print( "a[",i,"][",j,"]=",round(a[i][j],4),'\t',end='')
    print("")

   
#//********** LU decomposition *****//
for k in range (1 , n+1):
    u[k][k]=1;
    for i in range (k, n+1):
        sum1=0.0
        for p in range (1, k):
            sum1+=l[i][p]*u[p][k]
        l[i][k]=a[i][k]-sum1

    for j in range (k+1 , n+1):
        sum1=0.0
        for p in range(1, k):
            sum1+=l[k][p]*u[p][j]
        u[k][j]=(a[k][j]-sum1)/l[k][k]
       
#//******** Displaying LU matrix**********//
print("\n\nL matrix is ")
for i in range(1,n+1):
    for j in range(1,n+1):
        print( "L[",i,"][",j,"]=",round(l[i][j],4),'\t',end='')
    print("")
       

print("\n\nU matrix is ")
for i in range(1,n+1):
    for j in range(1,n+1):
        print( "U[",i,"][",j,"]=",round(u[i][j],4),'\t',end='')
    print("")



========= RESTART: F:/2018-09勤益科大數值分析/數值分析/PYTHON/EX6-5-1.py ========
Enter the order of matrix !  4
Enter all coefficients of matrix :
a[ 1 ][ 1 ]= 8.0 a[ 1 ][ 2 ]= 1.0 a[ 1 ][ 3 ]= 3.0 a[ 1 ][ 4 ]= 2.0
a[ 2 ][ 1 ]= 2.0 a[ 2 ][ 2 ]= 9.0 a[ 2 ][ 3 ]= -1.0 a[ 2 ][ 4 ]= -2.0
a[ 3 ][ 1 ]= 1.0 a[ 3 ][ 2 ]= 3.0 a[ 3 ][ 3 ]= 2.0 a[ 3 ][ 4 ]= -1.0
a[ 4 ][ 1 ]= 1.0 a[ 4 ][ 2 ]= 0.0 a[ 4 ][ 3 ]= 6.0 a[ 4 ][ 4 ]= 4.0


L matrix is 
L[ 1 ][ 1 ]= 8.0 L[ 1 ][ 2 ]= 0.0 L[ 1 ][ 3 ]= 0.0 L[ 1 ][ 4 ]= 0.0
L[ 2 ][ 1 ]= 2.0 L[ 2 ][ 2 ]= 8.75 L[ 2 ][ 3 ]= 0.0 L[ 2 ][ 4 ]= 0.0
L[ 3 ][ 1 ]= 1.0 L[ 3 ][ 2 ]= 2.875 L[ 3 ][ 3 ]= 2.2 L[ 3 ][ 4 ]= 0.0
L[ 4 ][ 1 ]= 1.0 L[ 4 ][ 2 ]= -0.125 L[ 4 ][ 3 ]= 5.6 L[ 4 ][ 4 ]= 4.8052


U matrix is 
U[ 1 ][ 1 ]= 1 U[ 1 ][ 2 ]= 0.125 U[ 1 ][ 3 ]= 0.375 U[ 1 ][ 4 ]= 0.25
U[ 2 ][ 1 ]= 0.0 U[ 2 ][ 2 ]= 1 U[ 2 ][ 3 ]= -0.2 U[ 2 ][ 4 ]= -0.2857
U[ 3 ][ 1 ]= 0.0 U[ 3 ][ 2 ]= 0.0 U[ 3 ][ 3 ]= 1 U[ 3 ][ 4 ]= -0.1948
U[ 4 ][ 1 ]= 0.0 U[ 4 ][ 2 ]= 0.0 U[ 4 ][ 3 ]= 0.0 U[ 4 ][ 4 ]= 1
>>> 


======== RESTART: F:/2018-09勤益科大數值分析/數值分析/PYTHON/EX6-5-1.py ===========
Enter the order of matrix !  3
Enter all coefficients of matrix :
a[ 1 ][ 1 ]= 2.0 a[ 1 ][ 2 ]= 1.0 a[ 1 ][ 3 ]= -3.0
a[ 2 ][ 1 ]= -1.0 a[ 2 ][ 2 ]= 3.0 a[ 2 ][ 3 ]= 2.0
a[ 3 ][ 1 ]= 3.0 a[ 3 ][ 2 ]= 1.0 a[ 3 ][ 3 ]= -3.0


L matrix is 
L[ 1 ][ 1 ]= 2.0 L[ 1 ][ 2 ]= 0.0 L[ 1 ][ 3 ]= 0.0
L[ 2 ][ 1 ]= -1.0 L[ 2 ][ 2 ]= 3.5 L[ 2 ][ 3 ]= 0.0
L[ 3 ][ 1 ]= 3.0 L[ 3 ][ 2 ]= -0.5 L[ 3 ][ 3 ]= 1.5714


U matrix is 
U[ 1 ][ 1 ]= 1 U[ 1 ][ 2 ]= 0.5 U[ 1 ][ 3 ]= -1.5
U[ 2 ][ 1 ]= 0.0 U[ 2 ][ 2 ]= 1 U[ 2 ][ 3 ]= 0.1429
U[ 3 ][ 1 ]= 0.0 U[ 3 ][ 2 ]= 0.0 U[ 3 ][ 3 ]= 1
>>> 

沒有留言:

張貼留言

Messaging API作為替代方案

  LINE超好用功能要沒了!LINE Notify明年3月底終止服務,有什麼替代方案? LINE Notify將於2025年3月31日結束服務,官方建議改用Messaging API作為替代方案。 //CHANNEL_ACCESS_TOKEN = 'Messaging ...