一個矩陣代數分析的輔助程序

人們在處理機械臂關節矩陣時,需要大量的手工相乘代數運算。 由於是推導公式,而不是進行數值計算,計算機不能直接參與協助。
在推導過程中,有大量的多項式代數相乘,手工抄寫極易出錯。

筆者於是想通過python程序來協助完成部分任務。
編寫了如下程序,用以實現兩個代數4*4矩陣的乘法。

目前程序的輸出還比較粗糙,如果哪位程序大佬能幫助修正,非常感謝。
本程序有參考numpy中文文檔羣裏以及網絡上 幽蘭@幽香、defias和leo的程序語法,在此對他們表示感謝。

程序調試過程中,需要一個exel文件: test1.xlsx 大家可以加我微信索取,以便進行測試。微信號是 a18705416479


# Authored by Tom_Gong  email: [email protected]

################################################

import xlrd
import xlwt
m=0
n=5
a=''
b=''
c='0'

workbook = xlwt.Workbook() #注意Workbook的開頭W要大寫
sheet1 = workbook.add_sheet('sheet1',cell_overwrite_ok=True)
sheet2 = workbook.add_sheet('sheet2',cell_overwrite_ok=True)

borders = xlwt.Borders()  # Create borders
 
borders.left = xlwt.Borders.MEDIUM  # 添加邊框-虛線邊框
borders.right = xlwt.Borders.MEDIUM  # 添加邊框-虛線邊框
borders.top = xlwt.Borders.MEDIUM  # 添加邊框-虛線邊框
borders.bottom = xlwt.Borders.MEDIUM 
borders.left_colour = 0x90 # 邊框上色
borders.right_colour = 0x90
borders.top_colour = 0x90
borders.bottom_colour = 0x90
 
style = xlwt.XFStyle()  # Create style
style.borders = borders


data = xlrd.open_workbook('test1.xlsx')
table = data.sheets()[0] 
for i in range (0,4):
    for j in range(0,4):
       #for k in range(0,4):
           for l in range(0,4):
            a=str(table.cell_value(j,l))
            b=str(table.cell_value(5+l,i))
            if ( a!='0'and b!='0'):
     
              c=c+'+'+'('+a+')'+'*'+'('+b+')'
              
              a=''
              b=''
           c=c.replace('0+','')
           c=c.replace('(1)*','')
           c=c.replace('*(1)','')

           sheet1.write(j+1,i+1,c,style)

           

   

           c='0'
          




#保存該excel文件,有同名文件時直接覆蓋
workbook.save('test2.xls')
print( '創建excel文件完成!')


程序中用到的附帶文件test1.xlsx
https://download.csdn.net/download/tom13a/11441923
這個文件也可以自己做一個,新建一個文件名問test1.xlsx的exel文件,sheet1裏面左上角放上兩個4乘以4表,中間隔一行,一共展九行四列。每個表裏面盛放要相乘的矩陣即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章