線性代數/主題:計算機代數系統
外觀
< 線性代數
本章中的線性系統規模很小,用手解起來很容易。但是對於大型系統,用計算機解最容易,也最安全。有專門的程式,例如LINPACK,可以完成這項工作。另一個流行的工具是通用的計算機代數系統,包括商業軟體包,如Maple、Mathematica或MATLAB,以及免費軟體包,如SciLab、Sage或Octave。
例如,在網路主題中,我們需要求解以下方程組。
它可以用手計算,但會花費很長時間,而且容易出錯。使用計算機更好。
我們以在Maple中求解該系統為例說明(對於另一個系統,使用者手冊會詳細說明所需的精確語法)。係數陣列可以這樣輸入
> A:=array( [[1,-1,-1,0,0,0,0], [0,1,0,-1,0,-1,0], [0,0,1,0,-1,1,0], [0,0,0,1,1,0,-1], [0,5,0,10,0,0,0], [0,0,2,0,4,0,0], [0,5,-2,0,0,50,0]] );
(將行放在單獨的行上不是必需的,但為了清晰起見這樣做)。常數向量以類似的方式輸入。
> u:=array( [0,0,0,0,10,10,0] );
然後系統就被解出來了,就像變魔術一樣。
> linsolve(A,u); 7 2 5 2 5 7 [ -, -, -, -, -, 0, - ] 3 3 3 3 3 3
Mathematica可以使用以下命令求解此方程組
RowReduce[({{1, -1, -1, 0, 0, 0, 0, 0}, {0, 1, 0, -1, 0, -1, 0,
0}, {0, 0, 1, 0, -1, 1, 0, 0}, {0, 0, 0, 1, 1, 0, -1, 0}, {0, 5,
0, 10, 0, 0, 0, 10}, {0, 0, 2, 0, 4, 0, 0, 10}, {0, 5, -2, 0, 0,
50, 0, 0}})]
這將返回以下輸出
{{1, 0, 0, 0, 0, 0, 0, 7/3}, {0, 1, 0, 0, 0, 0, 0, 2/3}, {0, 0, 1, 0,
0, 0, 0, 5/3}, {0, 0, 0, 1, 0, 0, 0, 2/3}, {0, 0, 0, 0, 1, 0, 0, 5/
3}, {0, 0, 0, 0, 0, 1, 0, 0}, {0, 0, 0, 0, 0, 0, 1, 7/3}}
具有無窮多解的系統以相同的方式求解
——計算機只需返回引數化解。
本主題的答案使用Maple作為計算機代數系統。特別是,所有這些都在運行於MS-DOS NT版本4.0下的Maple V上測試過。(在所有這些中,載入線性代數包的初步命令以及Maple對回車鍵的響應都被省略了。)其他系統有類似的命令。
- 問題 1
使用計算機求解本章開頭提到的兩個問題。
- 這是靜力學問題。
- 這是化學問題。
- 問題 2
使用計算機求解第一小節中的這些方程組,或得出“多解”或“無解”的結論。
- 問題 3
使用計算機求解第二小節中的這些方程組。
- 問題 4
計算機給出的通用 系統的解是什麼?