跳转到内容

线性代数/主题:计算机代数系统

来自维基教科书,开放世界中的开放书籍
线性代数
 ← 行等价 主题:计算机代数系统 主题:投入产出分析 → 

本章中的线性系统规模很小,用手解起来很容易。但是对于大型系统,用计算机解最容易,也最安全。有专门的程序,例如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

计算机给出的通用 系统的解是什么?

解决方案

线性代数
 ← 行等价 主题:计算机代数系统 主题:投入产出分析 → 
华夏公益教科书