本节目标:
实现一个模拟
MATLAB
的矩阵计算器,可以进行矩阵的点乘和相加
Matlab
是一个著名的数学运算工具包,在各行各业有广泛的应用。我校是国内少数几个购买了它的正版版权的高校,在这一方面比西南某高校跑得快。感兴趣的同学可以到 MVLS 下载试用,无论是解线性代数还是搞人工智能、搞物理模拟还是做光学实验,都堪称神器。
本节 Lab 旨在模拟进行 Matlab
的基础矩阵运算,所有矩阵的表示、格式均仿照 Matlab
。
(好吧,其实我想说的是,这个 Lab 的矩阵表示看上去比较反人类,但这锅我不背!)
我们用 分号 分割矩阵的行,用 逗号 分割矩阵的列。
例如,下面的矩阵:
| 1 2 3 4 |
| 5 6 7 8 |
可以表示为:
[1,2,3,4;5,6,7,8]
我们用 +
表示矩阵 加法,用 *
表示矩阵 点乘。
例如,下面的矩阵运算:
| 1 2 3 | | 9 8 7 |
| 4 5 6 | * | 6 5 4 |
| 7 8 9 | | 3 2 1 |
可以表示为
[1,2,3;4,5,6;7,8,9]*[9,8,7;6,5,4;3,2,1]
输入矩阵时,为了方便,我们采取了 [a,b,c; d,e,f]
这种类型的标记,但是输出时,我们采取正常的矩阵输出形式。也就是传统的 先输出行,再输出列。
例如对于矩阵:
| 1 2 3 4 |
| 5 6 7 8 |
可以输出为:
1 2 3 4
5 6 7 8
从 Github 下载题目,打开 LabSolution
中的 MatrixCalculator
类,在其中编写代码。
- 矩阵在程序中使用 二维数组 表示
- 函数
dot()
和sum()
分别用于计算矩阵的 点乘 和 相加 - 函数
calculate()
用于 解析 输入的矩阵运算表达式- 提示:从表达式解析出矩阵,保存到两个二维数组中,然后根据运算符选择调用
dot()
或者sum()
函数
- 提示:从表达式解析出矩阵,保存到两个二维数组中,然后根据运算符选择调用
- 函数
print()
用于按照格式 输出 一个矩阵- 提示:该函数不需要手动实现
- 主函数
main()
- 提示:你可以通过
Scanner
类从控制台读取输入,然后调用calculate()
函数计算表达式结果,并使用print()
函数打印结果。
- 提示:你可以通过
- 不用检查非法输入
对于从命令行输入的一个矩阵运算表达式,要求计算它的值,并输出到控制台。
例如对于 点乘 的输入样例:
[1,0;0,1]*[9,8;7,6]
输出应该为:
9 8
7 6
对于 加法 的输入样例:
[1,2;3,4]+[4,3;2,1]
输出应该为:
5 5
5 5
你可以在 LabSolution
的 main
函数中调用 validate()
方法,它将自动检查你的结果。
问 main
函数里到底是用 Scanner
手动输入还是用 validate()
自动验证?
答 Scanner
输入是给大家调试用的,交之前请用 validate()
验证。
如果结果正确,请提交到 FTP
。