給出乙個多元一次方程組,對於n個未知數,方程組中需要包含n個方程,如:
如何用程式設計的方式求解多元一次方程組?常用的方法就是加減消元法,如下面的方程組:
a11x1+a12x2+a13x3+…+a1n
xn=a10
a21x1+a22x2+a23x3+…+a2n
xn=a20
a31x1+a32x2+a33x3+…+a3n
xn=a30
an1x1+an
2x2+an
3x3+…+annxn
=an0
當a11不為0時,將第1個方程各項同時乘以a21/a11,並用第2個方程減去,就可以把第2個方程中x1的係數消為0。如果a11等於0,則需要找到1個x1的係數不為0的方程,將其移到第乙個。用同樣的方法,可以消去第1個之後所有方程式中,x1的係數,如下:
a11x1+a12x2+a13x3+…+a1n
xn=a10
0+b22x2+b23x3+…+b2n
xn=b20
0+b32x2+b33x3+…+b3n
xn=b30
0+bn
2x2+bn
3x3+…+bnnxn
=bn0
此時,繼續再來考察b22的情況,用類似的方法,繼續消去第2個之後的所有方程式中,x2的係數……這樣執行下去,直到消去第n個方程式中xn
-1的係數為止。此時的方程組已經變為下面的形式:
a11x1+a12x2+a13x3+…+a1n
xn=a10
0+b22x2+b23x3+…+b2n
xn=b20
0+0+c33x3+…+c3n
xn=c30
0+0+0+…+mnnxn
=mn0
現在,就可以從第n個方程開始,一步一步求解了:
xn=mn
0/mnn
……x3=(c30-…-c3n
xn)/c33
x2=(c30-b23x3-…-b2n
xn)/b22
x1=(c30-a12x2-a13x3-…-a1n
xn)/a11
如果在計算中,a11,b22,c33等引數中出現0,則說明方程組無解或有無窮解。
用集算器求解多元一次方程組的解法如下:
在c1中求出方程組的方程數,在a3中迴圈,用加減消元法逐步消除xn
的係數。首先,在b4的迴圈中,從第k個方程式起,尋找xk
的係數不為0的第1個方程式,如果未找到,則說明該項無法消元。在第7行的**中,將xk
的係數不為0的方程式移到第k行。在第8、9行,將k+1行起的方程式中,xk
的係數消去。
各步消元執行完畢後,在a10中,就可以從最後乙個方程起,逐步求解。其中,用序列result來儲存解。如果出現無解或無窮解的情況,返回error。考慮到雙精度數在計算中可能存在誤差,求解時保留4位小數。
計算完成後,在a13中,可以檢視到結果:
如果需要求解新的方程組:
7x1+2x2+9x3-x4=0
2x1+9x2-x4=0
9x1+11x3-x4=0
x1+x2+x3 =1
只需要修改檔案equinput.txt:
用同樣的程式就可以計算,計算後,可以在a13中讀取結果:
另外,引數列表也可以不用檔案讀入,而是直接填寫在集算器中,計算過程是類似的。
多元一次方程
變數 矩陣 c1,cn 矩陣尺寸 1 n 引數 矩陣 11,nn 矩陣尺寸 n n 結果 矩陣 r1,rn 矩陣尺寸 n 1 求變數cn c1 cn 1類同處理 表示式cn可以訪問 選擇 編碼服務 進行獲取,上僅提供1 9的計算表示式。資料反演 疊加聲音的分離等。因分子分母內容相仿,僅表達分母部份即...
高斯消元求解多元一次方程組
最近剛接觸高斯消元,懂得不多,但是這玩意琢磨起來很有意思。我們把一系列方程 a1x1 b1x2 c1x3 m1 a2x1 b2x2 c2x3 m2 a3x1 b3x2 c3x3 m3 看成是矩陣 然後,把矩陣變成.然後就可以把矩陣化為上三角。最後一排一定是xn mn,然後求解倒數第二排,由於解出了乙...
三元一次方程組演算法 我和三元一次方程組
不 滿 但是現在的選拔制度慢慢變了味兒 你也會我也會,那咋選拔啊?於是就有了所謂的 偏難怪 我一直以為這個題目是偏難怪,因為一直以來學生掌握的都不太好,所以我從感情上對於它們是很不友好的,因為我只喜歡那種從字裡行間散發出正氣的題目。緣 來事情的轉機出現在若干年前。那是乙個陽光明媚的上午,督導組到教室...