基于python解線性矩陣方程(numpy中的matrix類)
這學(xué)期有一門運(yùn)籌學(xué),講的兩大塊兒:線性優(yōu)化和非線性優(yōu)化問題。在非線性優(yōu)化問題這里涉及到拉格朗日乘子法,經(jīng)常要算一些非常變態(tài)的線性方程,于是我就想用python求解線性方程。查閱資料的過程中找到了一個極其簡單的解決方式,也學(xué)到了不少東西。先把代碼給出。
import numpy as np # A = np.mat('1 2 3;2 -1 1;3 0 -1') A = np.array([[1, 2, 3], [2, -1, 1], [3, 0, -1]]) b = np.array([9, 8, 3]) x = np.linalg.solve(A, b) print(x)
是不是很簡潔?因為調(diào)用了強(qiáng)大的包numpy~ 我們想解決的問題是求解矩陣方程Ax=bAx=b。在這里調(diào)用numpy中的線性代數(shù)包np.linalg,使用其中的function->solve(A, b)。幾行代碼就解決了問題。在這里solve函數(shù)有兩個輸入,第一個輸入是矩陣,可以采用numpy里的矩陣數(shù)據(jù)類型或者最常用的數(shù)組數(shù)據(jù)類型。第二個輸入是右端項b,一個一維numpy數(shù)組即可。函數(shù)返回方程的解,shape和b是相同的。如果矩陣A是奇異的或者不是方陣,函數(shù)就會報錯。
好了,問題得到了絕佳的解決,大不了把python當(dāng)計算器來用唄~
下面是補(bǔ)充知識:numpy中的matrix類
matrix類是numpy中的一個過時的類,可能會在未來被移除。因為現(xiàn)在大多數(shù)人都會用更加靈活好用的ndarray,移除它也是可以理解的。
>>> a = np.matrix('1 2; 3 4') >>> a matrix([[1, 2], [3, 4]]) >>> np.matrix([[1, 2], [3, 4]]) matrix([[1, 2], [3, 4]])
matrix有兩種構(gòu)造方式,從第二種我們看到和一般的數(shù)組類型一模一樣,在這里我們就能窺到matrix其實就是繼承了ndarray,基于ndarray。拿matrix進(jìn)行線性代數(shù)運(yùn)算是因為它有很多方便的函數(shù)。
matrix.T transpose:返回矩陣的轉(zhuǎn)置矩陣 matrix.H hermitian (conjugate) transpose:返回復(fù)數(shù)矩陣的共軛元素矩陣 matrix.I inverse:返回矩陣a逆矩陣 matrix.A base array:返回矩陣基于的數(shù)組<br data-filtered="filtered">matrix.AI flattened ndarray: 返回展平的數(shù)組
其他的很多類方法不再介紹,以上四個是最基本的類似語法糖的函數(shù)。
需要注意的是,ndarray類型同樣能方便地進(jìn)行轉(zhuǎn)置和求逆。
A = np.array([[1, 2], [3, 4]]) print(A.T) A_I = np.linalg.inv(A)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
在windows系統(tǒng)中實現(xiàn)python3安裝lxml
本文主要給大家簡單介紹了下在windows以及l(fā)inux系統(tǒng)中使用Python安裝LXML模塊的教程,非常簡單實用,有需要的小伙伴可以參考下2016-03-03使用Python判斷質(zhì)數(shù)(素數(shù))的簡單方法講解
這篇文章主要介紹了使用Python判斷質(zhì)數(shù)(素數(shù))的簡單方法講解,經(jīng)常被用來做科學(xué)計算的Python處理這種小問題當(dāng)然手到擒來^_-需要的朋友可以參考下2016-05-05Python集合魔法解鎖數(shù)據(jù)去重技巧應(yīng)用實例
這篇文章主要為大家介紹了Python集合魔法解鎖數(shù)據(jù)去重技巧應(yīng)用實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11Python+Selenium隨機(jī)生成手機(jī)驗證碼并檢查頁面上是否彈出重復(fù)手機(jī)號碼提示框
這篇文章主要介紹了Python+Selenium隨機(jī)生成手機(jī)驗證碼并檢查頁面上是否彈出重復(fù)手機(jī)號碼提示框,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09解決python錯誤提示:TypeError: expected string or&nb
這篇文章主要介紹了解決python錯誤提示:TypeError: expected string or bytes-lik問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01使用pandas對兩個dataframe進(jìn)行join的實例
今天小編就為大家分享一篇使用pandas對兩個dataframe進(jìn)行join的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06Python調(diào)用系統(tǒng)底層API播放wav文件的方法
這篇文章主要介紹了Python調(diào)用系統(tǒng)底層API播放wav文件的方法,涉及Python使用pywin32調(diào)用系統(tǒng)底層API讀取與播放wav文件的相關(guān)操作技巧,需要的朋友可以參考下2017-08-08