MATLAB软件是由美国Mathworks公司推出的用于数值计算和图形处理的科学计算系统环境。作为一个人机交互的数学系统环境,它拥有一个强大的数学函数库(包括各种初等函数的算法,也包括矩阵运算、矩阵分析等高层次数学算法),内容集中了日常数学处理中的各种功能,包括高效的数值计算、矩阵运算、信号处理和图形生成等功能。与利用C语言或FORTRAN语言作数值计算的程序设计相比,MATLAB使用非常方便,可以节省大量的编程时间。
初次接触MATLAB是在控制课上,当时就感叹它在工程领域的强大作用。随着逐渐的接触和熟悉,慢慢的发现数学计算功能才是它得以迅速发展的根本原因。而我本身对高等数学的学习总是不甚理想。因此,自然而然的想到用MATLAB来帮助自己。在慢慢的结合过程中,我发现MATLAB在验证复杂矩阵运算、进行科学运算和函数图像分析等方面都有很大的作用,对我的帮助不小。下面就这三个方面的作用
1、验证矩阵运算
我们都做过矩阵的运算,大概都会有一种感受,就是繁杂。对于多行多列的矩阵运算,更是容易出错。如何来检验学习效果呢,这就需要验证结果。参考书的答案难免出现错误,而且如果是实际问题的话,又哪来的参考答案呢?还有一种方法,那就是自己编程解决。可是实在太麻烦了。例如说在考虑两个矩阵 A 和 B 的乘积问题时,在 C 语言中实现就并不仅仅是一组双重循环的问题。双重循环当然是矩阵乘积所必需的,除此之外要考虑的问题很多:A 和 B 有一个是复数矩阵怎么考虑;其中一个是复数矩阵时怎么考虑;全部是实系数矩阵时又怎么管理;这样就要在一个程序中有4个分支,分别考虑这 4 种情况。然后还得判断这两个矩阵是否可乘。所以说,没有一定时间,用 C 语言不可能编写出考虑各种情况的子程序。然而有了 MATLAB 这样的工具,问题就变得非常简单了。我们只需打开MATLAB,在命令窗口执行简单的操作便能完成运算。
例如:计算A*B,其中A= 1 2 3 B= 3 4 5
7 8 9 6 7 8
5 4 3 8 9 4
在MATLAB的命令窗口中键入
>> A=[1 2 3;7 8 9;5 4 3];
>> B=[3 4 5;6 7 8;8 9 4];
>> A.*B
ans =
3 8 15
42 56 72
40 36 12
其中“A=[1 2 3;7 8 9;5 4 3]; B=[3 4 5;6 7 8;8 9 4];”为负值语句,矩阵内的行用“;”隔开。A.*B代表A*B。
这个例子很简单,但足以说明要表达的意思。MATLAB可以完成你所需要的任何矩阵运算,还包括一些常用的变换。以后再遇见多行多列的复杂矩阵运算时,我们就可以不用劳神了,有了MATLAB一切轻松解决。
2、科学运算
常见的正弦,余弦,正切,与切等计算,一般的编程语言就能实现,甚至复杂一点的计算器也可以解决。但是他们能做求导,积分运算吗?我想是很困难的。而MATLAB利用其符号运算工具箱可以对该函数进行解析推导,得出诸如高阶导数、积分、Taylor 幂级数展开等。利用diff(),simple(),taylor()等函数,推导的结果可以直接得到。在一些题目中,我们首先要确定解题方向,然后再具体解决。可以利用MATLAB对我们的思考方向作一些推测,看是否符合题目要求。这样,可以节省我们的大量计算时间,对正确把握题目要求,确定做题方向有很好的帮助。
例如在计算某函数的极值时,可以利用求导来解决。可是存在的函数本身很复杂,求导起来非常麻烦。利用MATLAB的解析推导,问题迎刃而解。下面的例子说明了在MATLAB中求导过程的简单。
例:
求导
>> syms x;
>> f=x.^3*sin(x);
>> diff(f)
ans =
3*x^2*sin(x)+x^3*cos(x)
“syms x”定义了一个变量x ,diff()是求导函数。具体用法可以在帮助中获取。
求二阶导数
>> syms x;
>> f=x.^3*sin(x);
>> diff(f,x,2)
ans =
6*x*sin(x)+6*x^2*cos(x)-x^3*sin(x)
3、画图
在高等数学的学习中,我们常常面临一些有关图形的问题。有些需要我们画出准确的图形,再对其仔细分析;有些图形本身是由表达式给出的,常常超出我们的想象,根本不知其所型;还有一些可以想象出来,却因绘图能力不及难以描绘。这些难处都影响了我们的正常学习。
用 C 这类语言,绘制图形也是一个难点。但使用 MATLAB 这类高级语言,完成这样的工作就是几个直观语句的事。且得出的图形美观准确、可以将语句毫不变化地移植到另外的机器上,得出完全一致的结果,如下所示。
例:做出 的图
在MATLAB中键入:
>> X=-2:0.01:2;
>> Y=X.^3-X.^2-X+1;
>> plot(X,Y)
得到如下结果:
较复杂的例子来自MATLAB的3-D DEMO。
〉〉z=peaks(25);
〉〉mesh(z);
非常简单,仅仅几个命令就直观的显示出来了。(注意大小写,MATLAB对大小写是敏感的)
可以看到MATLAB在画图方面,功能是非常强大的。不仅平面图可以画,立体图也可以画。还可以依据你的要求画出点状分布、直方图等。你能想到的,它基本上都能满足你了。只要你需要这样的一个直观表现,MATLAB可以轻而易举的帮你实现。
讲了这么多,一直都是泛泛而谈。一方面是MATLAB的功能实在太强大,难以一一详尽,再者我也不愿将这篇短文变成MATLAB的纸版帮助。(详尽的使用说明在MATLAB里都可以找到)我只是将我使用MATLAB的一些体会写在这里。
对于数学我一直是敬畏的。学习的过程中总是出现这样、那样的困难。,有了MATLAB,问题多少有了改变。不敢说,从此数学学习路途一帆风顺,但最起码,在这条路上又多了一个可信的助手!听说在美国的一些大学里,MATLAB是攻读学位的大学生、硕士生、博士生必须掌握的基本工具。它正成为对数值线性代数以及其他一些高等应用数学课程进行辅助教学的有益工具。我希望同学们也能尽快的认识和利用MATLAB,在数学学习方面有所帮助。