线性代数/主题:计算机代数系统
外观
< 线性代数
本章中的线性系统规模很小,用手解起来很容易。但是对于大型系统,用计算机解最容易,也最安全。有专门的程序,例如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
计算机给出的通用 系统的解是什么?