本文最初写于 2011-07-14于 sohu 博客,这次博客搬家一起搬到这里来。
版权所有,转载请注明出处。
1.1 矩阵和矢量的建立
Maxima 中有许多方法可以生成矩阵和矢量。下面分别来介绍。最直接的方式是直接给出矩阵的每个元素的值。
| (%i1) | A:matrix([1,2,3],[-2,8,3],[1,4,9]); |
|-----|-----|
![](https://box.kancloud.cn/2016-01-24_56a4233bd6840.PNG)
也可以交互式的输入矩阵的每个元素。
使用entermatrix (m, n)函数可以进行交互式的矩阵输入,Maxima将每个元素一一读入。
如果行列维数相同,Maxima会主动询问矩阵是否为对角、对称、反对称或者一般矩阵,这样可以有效减少输入次数。
| (%i2) | m:entermatrix(3,3); |
|-----|-----|
![](https://box.kancloud.cn/2016-01-24_56a4233be20de.PNG)
Maxima 是一个 CAS 系统,所以我们可以完全用符号去定义一个矩阵,比方说:
| (%i3) | A: matrix([a[1,1],a[1,2]],[a[2,1],a[2,2]]); |
|-----|-----|
![](https://box.kancloud.cn/2016-01-24_56a4233bf09d6.PNG)
甚至于可以提供元素值的计算公式,生成矩阵:
<table><tbody><tr><td><span>(%i4) </span></td><td><span>f[i,j]:=1/(i+j);<br/>genmatrix(f,3,3); </span></td></tr></tbody></table>
![](https://box.kancloud.cn/2016-01-24_56a4233c0a964.PNG)
上面的例子中首先定义了一个二元 List 的生成方式。
然后根据这个二元 List 自动的生成了矩阵。这种方式也可以直接生成符号矩阵:
| (%i6) | genmatrix(a,3,3); |
|-----|-----|
![](https://box.kancloud.cn/2016-01-24_56a4233c193c1.PNG)
矢量的输入要简单的多:
| (%i7) | v: [2,3,5]; |
|-----|-----|
![](https://box.kancloud.cn/2016-01-24_56a4233c25da4.PNG)
定义一个矢量,其实和我们用手写矢量出来也差不多。
不过,问题是我们在线性代数常常要把矢量写成「列矢量」,而非如上的「行矢量」表示方式。
我们可以用下面两种不同的方式达成:
| (%i8) | v: transpose([2,3,5]); |
|-----|-----|
![](https://box.kancloud.cn/2016-01-24_56a4233c3380c.PNG)
| (%i9) | v: matrix([2],[3],[5]); |
|-----|-----|
![](https://box.kancloud.cn/2016-01-24_56a4233c40efa.PNG)
在 eigen 程序包中还提供了一个 columnvector 函数实现同样的功能。
<table><tbody><tr><td><span>(%i10) </span></td><td><span>load ("eigen");<br/>v:columnvector ([2,3,5]); </span></td></tr></tbody></table>
![](https://box.kancloud.cn/2016-01-24_56a4233c4db62.PNG)
其实矢量应该是一个一列或一行的矩阵, 但是 Maxima 提供了简单定义行矢量的方法。
这里要强调一点, 一般来说因为矩阵乘法的关系, 我们写成列矢量和行矢量差别很大。
不过 Maxima 其实不太在意这点: 它可以聪明地发现你要做的事, 并且正确得计算出来!
简单的说, 一般而言, 我们不需要麻烦得定义列矢量, 用行矢量即可。
- 前言
- gnuplot 中的数据平滑
- 利用 Maxima 求解常微分方程
- Maxima 的绘图功能 1
- Maxima 的绘图功能 2
- Maxima 的绘图功能 3
- Maxima 矩阵及矢量运算 1
- Maxima 矩阵及矢量运算 3
- Maxima 矩阵及矢量运算 4
- maxima 学习笔记(coeff 函数的应用)
- maxima 代数表达式变换
- maxima 学习笔记(基本微积分)
- maxima 代数方程求解
- Maxima 中的复数运算
- Maxima 的三角函数化简功能
- Maxima 的基本微积分操作
- 利用 gnuplot 绘制时间序列图
- gnuplot 入门教程 1
- gnuplot 入门教程 2
- gnuplot 入门教程 3
- gnuplot 入门教程 4
- gnuplot 读取逗号分隔的数据文件
- scilab 读取处理 wav 文件
- scilab 读取处理 wav 文件 (2)
- Scilab 处理声音数据(补充)
- 利用 SCILAB 设计 FIR 滤波器(窗函数法)
- 利用 SCILAB 设计 FIR 滤波器(Minimax法)
- 利用 SCILAB 设计 iir 滤波器设计(模拟滤波器双线性变换法)
- Scilab 的绘图函数(1)
- Scilab 的绘图函数(2)
- Scilab 的绘图函数(3)
- Scilab 的绘图函数(4)