请问怎样在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在高等数学中的应用
对于任意函数y=f(x),其泰勒展开式为
其中 为余项,也就是泰勒展开式的误差.MATLAB语句为
>>fxs=input('输入y=f(x)的表达式','s'); %输入原始条件,fxs是字符串
>>K=input('输入泰勒级数展开式的阶K');
>>a=input('展开的位置a=');
>>b=input('展开的区间半宽度b=');
>>x=linspace(a-b,a+b); %构成自变量数组,确定其长度和步长
>>lx=length(x); dx=2*b/(lx-1);
>>y=eval(fxs); %求出y的准确值
>>subplot(1,2,1), plot(x,y,'.'), hold on %y的准确值用点线绘出
%求出a点的一阶导数,注意求导后数组长度减少1
>>Dy=diff(y)/dx; Dya(1)=Dy(round(lx-1)/2);
>>yt(1,:)=y(round(lx/2))+Dya(1)*(x-a); %求y的一阶泰勒展开,绘图
>>plot(x,yt(1,:))
>>for k=2:K
>>Dy=diff(y,k)/(dx^k); Dya(k)=Dy(round(lx-k)/2); %求a点k阶导数
>>yt(k,:)=yt(k-1,:)+Dya(k)/prod(1:k)*(x-a).^k; %求y的k阶导数
>>plot(x,yt(k,:)); %绘图
>>e(k,:)=y-yt(k,:); %求出yt的误差
>>end
>>title([fxs,'的各阶泰勒级数曲线']), %注意如何组成标注的字符串
>>grid, hold off, subplot(1,2,2)
>>for k=1:K plot(x,e(k,:)), hold on, end %绘制误差曲线
>>title([fxs,'的各阶泰勒级数误差曲线']),grid,hold off
执行此程序,输入fxs=cos(x),K=5,a=0.5,b=2,所得曲线见图3.2(又变为误差曲线).读者可以改变其坐标系范围以仔细观测最关心的部分,也可输入其他函数做验算,注意输入函数应符合元素群运算规则.