你好,下面是一個(gè)對(duì)應(yīng)的三階矩陣求逆的代碼
成都創(chuàng)新互聯(lián)公司主營(yíng)隴川網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,app軟件開(kāi)發(fā)公司,隴川h5小程序定制開(kāi)發(fā)搭建,隴川網(wǎng)站營(yíng)銷(xiāo)推廣歡迎隴川等地區(qū)企業(yè)咨詢(xún)
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)
"""對(duì)每一列進(jìn)行操作"""
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)
工具/材料:電腦、Python、Pycharm
1、首先,打開(kāi)Python,定義一個(gè)數(shù)組,其值為空。
2、接著,輸入數(shù)組的長(zhǎng)度,保存在變量中。
3、用for循環(huán),控制輸入數(shù)組的各元素。
4、從鍵盤(pán)逐一輸入數(shù)組各元素,并添加到數(shù)組中。
5、使用函數(shù),將數(shù)組倒序(逆序)排列。
6、最后,輸出倒序(逆序)排序后的數(shù)組值。
7、運(yùn)行程序,輸入數(shù)組的各元素值后,電腦會(huì)將數(shù)組倒序(逆序)排列并輸出。
在寫(xiě)python程序時(shí),常能用到一些函數(shù)和方法,總結(jié)一下,保存起來(lái),方便查詢(xún)。
一、內(nèi)置函數(shù)
# abs()獲取數(shù)字絕對(duì)值
# chr(i)數(shù)字轉(zhuǎn)換為字符類(lèi)型
# divmod() 獲取兩個(gè)數(shù)值的商和余數(shù)
# enumerate() 將可遍歷序列組合為索引序列
# float()轉(zhuǎn)換為浮點(diǎn)數(shù)
# format() 格式化字符串
# int()轉(zhuǎn)換為整數(shù)?
# input() 接受用戶(hù)輸入內(nèi)容
# len() 計(jì)算元素個(gè)數(shù)
# max() 返回最大值
# min() 返回最小值
# math.ceil() 返回指定數(shù)值的上舍整數(shù)
# open()打開(kāi)文件并返回文件對(duì)象
# pow() 冪運(yùn)算
# print()打印輸出?
# range() 生成器
# reversed()反轉(zhuǎn)所有元素
# round()四舍五入求值
# sorted()對(duì)可迭代對(duì)象進(jìn)行排序?
# str() 轉(zhuǎn)換為字符串
# sum() 求和
# set() 創(chuàng)建集合
# tuple() 將序列轉(zhuǎn)換為元組
# zip()將可迭代對(duì)象打包成元組
二、方法
# append() 添加列表元素
# capitalize()首字母轉(zhuǎn)換為大寫(xiě)?
# count()字符出現(xiàn)次數(shù)
# close() 關(guān)閉文件
# decode() 解碼字符串
# dict.keys() 獲取字典所有的鍵
# find()字符串首次出現(xiàn)的索引
# f.read() 讀取文件內(nèi)容
# dict.update()更新字典
# dict.items() 獲取字典鍵/值對(duì)
# dict.get() 返回指定鍵的值
# encode() 編碼字符串
# list.sort() 排序列表元素
# index() 元素首次出現(xiàn)的索引
# isdigit() 判斷字符串是否只由數(shù)字組成
# isupper() 是否所有字母都為大寫(xiě)
# isnum() 判斷字符串是否由字母和數(shù)字組成
# islower() 是否所有字母都為小寫(xiě)
# isdecimal() 檢查字符串是否只包含十進(jìn)制字符
# isalpha() 檢測(cè)字符串是否為純字母
# random.shuffle()隨機(jī)排序
# random.sample()返回?zé)o重復(fù)隨機(jī)數(shù)列表
# random.choice() 返回一個(gè)隨機(jī)元素
# random.randint() 生成指定范圍的隨機(jī)整數(shù)
# random.randrange() 生成指定范圍的指定遞增基數(shù)隨機(jī)整數(shù)
# pop() 刪除列表中的元素
# remove()刪除列表中的指定元素
# strip()去除空格
# lstrip()去除左側(cè)空格
# rstrip() 去除右側(cè)空格
# readline() 讀取單行內(nèi)容
# root.after() Tkinter中等待一段時(shí)間后再執(zhí)行命令
# str.isnumeric() 驗(yàn)證字符串是否為數(shù)字(適用于Unicode)
# split()分割字符串
# ord() 將字符轉(zhuǎn)換為整數(shù)
# replace() 字符串替換
# ljust() 左對(duì)齊填充
# rjust() 左對(duì)齊填充
# readlines() 讀取所有行內(nèi)容
# datetime.datetime.now() 返回指定時(shí)區(qū)的本地日期時(shí)間
# datetime.datetime.today() 獲取當(dāng)前本地日期的date對(duì)象
# datetime.utcnow() 返回當(dāng)前UTC時(shí)間的datetime對(duì)象
# time.strptime()把時(shí)間字符串解析為元組
# time.time()返回當(dāng)前時(shí)間的時(shí)間戳
# time.sleep()暫停指定秒數(shù)
# time.strftime() 返回指定格式的日期字符串
# time.mktime() 接收時(shí)間元組并返回時(shí)間戳
# os.getcwd() 獲取當(dāng)前工作目錄
# os.listdir() 獲取指定路徑下的目錄和文件列表
# os.makedirs() 遞歸創(chuàng)建目錄
# os.rename() 重命名目錄或文件
# os.path.exists() 判斷路徑是否存在
# upper() 全部轉(zhuǎn)換為大寫(xiě)字母
# lower()? 全部轉(zhuǎn)換為小寫(xiě)字母
# sys.stdout.write() 標(biāo)準(zhǔn)輸出打印
# sys.stdout.flush()刷新輸出?
# shutil.copy() 復(fù)制單個(gè)文件到另一文件或目錄
# write() 寫(xiě)入文件內(nèi)容
# winsound.Beep() 打開(kāi)電腦揚(yáng)聲器
# zfill() 在字符串前面填充0
三、循環(huán)語(yǔ)句
# break終止當(dāng)前循環(huán)
# continue 終止本循環(huán)進(jìn)入下一次循環(huán)
# with open() as file 以with語(yǔ)句打開(kāi)文件(數(shù)據(jù)保存)
四、轉(zhuǎn)義字符
\ 行尾續(xù)行符
\' 單引號(hào)?
\'' 雙引號(hào)
\a 響鈴
\e 轉(zhuǎn)義
\n 換行
\t 橫向制表符
\f 換頁(yè)
\xyy 十六進(jìn)制yy代表的字符
\\反斜杠符號(hào)
\b 退格
\000 空
\v 縱向制表符
\r 回車(chē)
\0yy 八進(jìn)制yy代表的字符
\other 其他的字符以普通格式輸出
atan()方法返回x的反正切值,以弧度表示。
Syntax
以下是atan()方法的語(yǔ)法:
atan(x)
注意:此函數(shù)是無(wú)法直接訪(fǎng)問(wèn)的,所以我們需要導(dǎo)入math模塊,然后需要用math的靜態(tài)對(duì)象來(lái)調(diào)用這個(gè)函數(shù)。
參數(shù)
x -- 這必須是一個(gè)數(shù)值。
返回值
此方法返回 x 的反正切值,以弧度表示。
例子
下面的例子顯示atan()方法的使用。
#!/usr/bin/python
import math
print "atan(0.64) : ", math.atan(0.64)
print "atan(0) : ", math.atan(0)
print "atan(10) : ", math.atan(10)
print "atan(-1) : ", math.atan(-1)
print "atan(1) : ", math.atan(1)
當(dāng)我們運(yùn)行上面的程序,它會(huì)產(chǎn)生以下結(jié)果:
atan(0.64) : 0.569313191101
atan(0) : 0.0
atan(10) : 1.4711276743
atan(-1) : -0.785398163397
atan(1) : 0.785398163397
acos()方法返回x的反余弦值,以弧度表示。
以下是acos()方法的語(yǔ)法:acos(x)
注意:此函數(shù)是無(wú)法直接訪(fǎng)問(wèn)的,所以我們需要導(dǎo)入math模塊,然后需要用math的靜態(tài)對(duì)象來(lái)調(diào)用這個(gè)函數(shù)。x -- 這必須是在范圍內(nèi)的數(shù)字值-1到1,如果x大于1,則它會(huì)產(chǎn)生一個(gè)錯(cuò)誤。
擴(kuò)展資料
python運(yùn)行的兩種方式
1、命令行:python +需要執(zhí)行的代碼
特點(diǎn):會(huì)立即看到效果,用于代碼調(diào)試,寫(xiě)到內(nèi)存中,不會(huì)永久保存
2、寫(xiě)到文件里面:python +執(zhí)行文件的位置
特點(diǎn):可以永久保存。
過(guò)程:
1、啟動(dòng)python解釋器
2、將內(nèi)容從硬盤(pán)讀取到內(nèi)存中
3、執(zhí)行python代碼
(再次強(qiáng)調(diào):程序在未運(yùn)行前跟普通文件無(wú)異,只有程序在運(yùn)行時(shí),文件內(nèi)所寫(xiě)的字符才有特定的語(yǔ)法意義)