跳轉到內容

線性代數/主題:計算機代數系統

來自華夏公益教科書
線性代數
 ← 行等價 主題:計算機代數系統 主題:投入產出分析 → 

本章中的線性系統規模很小,用手解起來很容易。但是對於大型系統,用計算機解最容易,也最安全。有專門的程式,例如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

使用計算機求解本章開頭提到的兩個問題。

  1. 這是靜力學問題。
  2. 這是化學問題。
問題 2

使用計算機求解第一小節中的這些方程組,或得出“多解”或“無解”的結論。

問題 3

使用計算機求解第二小節中的這些方程組。

問題 4

計算機給出的通用 系統的解是什麼?

解決方案

線性代數
 ← 行等價 主題:計算機代數系統 主題:投入產出分析 → 
華夏公益教科書