《MATLAB》课程论文
摘要
MATLAB 是国际公认的优秀科技应用软件,是计算机辅助分析
与设计、算法研究和应用开发的基础工具和首选平台,是目前科学
研究领域最流行的应用软件,其特点概括为:
(1)高效率的数值计算方法及符号计算功能,使用户从繁杂的
数学运算分析中更加简单化。
(2)完备的图形处理功能,实现计算结果和编程的可视化。
(3)友好的用户界面及接近数学表达式的自然化语言,使学习
者易于学习和掌握。
(4)功能丰富的应用工具箱,为用户提供了大量方便而实用的
处理工具,而且具备很强的开放性。
MATLAB 在微积分上、高等代数、多项式、数学分析、概率
论、数理统计、复变函数、数值计算、图论、图像处理等等各领域
有着重要的应用。
本文基于 MATLAB7.0 版本主要分析以下几点:
(1)通过软件分析 MATLAB 在微积分上的应用
(2)通过软件分析 MATLAB 在高等代数上的应用
(3)通过软件分析 MATLAB 绘图功能
- 1 -
目录
《MATLAB》课程论文........................................................... - 1 -
摘要.....................................................................................- 1 -
目录.....................................................................................- 2 -
1、MATLAB 在微积分上的应用...............................................- 3 -
1.1、MATLAB 求数值微分......................................................................... - 3 -
1.2、MATLAB 求积分................................................................................- 3 -
2、MATLAB 在高等代数上的应用........................................... - 4 -
2.1、向量组的线性相关性.........................................................................- 4 -
2.2、矩阵及线性方程组的解..................................................................... - 5 -
2.2.1、矩阵的分析 ............................................................................ - 5 -
2.2.2、线性方程组的解......................................................................- 6 -
3、MATLAB 的绘图功能.........................................................- 8 -
3.1、绘制二维图形.................................................................................. - 8 -
3.1.1、基本绘图 plot 函数的使用........................................................ - 8 -
3.1.2、其它绘图函数......................................................................... - 9 -
3.1.3、直角坐标、极坐标与对数坐标的比较...................................... - 10 -
3.2、绘制三维图形.................................................................................- 11 -
3.2.1、绘制三维曲面的基本函数 .......................................................- 11 -
3.2.2、绘制标准三维曲面 .................................................................- 11 -
3.2.3、其它三维图形....................................................................... - 12 -
结语...................................................................................- 12 -
- 2 -
1、MATLAB 在微积分上的应用
1.1、MATLAB 求数值微分
MATLAB 有二种方式实现数值的微分,也就有二种方法来求函
数 f(x)导的导数。一是用多项式或样条函数 g 对 f 进行逼近,然后用
g 函数的导数作为 f 函数的导数;二是用 MATLAB 提供 diff 函数计算
向前差分,间接求导。例如:f(x)=x4+4x3+2x2+6;为了比较二种
方法求出导数与实际导数的误差,求出 f’(x)=4x3+12x2+4x,并绘出
他们在区间[-5,5]内以 0.01 为步长的图像。
程序 M 文件如下:
f=inline('x.^4+4*x.^3+2*x.^2+6');
g=inline('4*x.^3+12*x.^2+4*x');
x=-5:0.01:5;
p=polyfit(x,f(x),5);
dp=polyder(p);
dpx=polyval(dp,x);
dx=diff(f([x,5.01]))/0.01;
gx=g(x);
plot(x,dpx,x,dx,'.',x,gx,'-');
程序运行后图像如右图:
由图可知,三条曲线高度接近,结果表明,两种求导方法求得
导数与实际非常接近。
1.2、MATLAB 求积分
MATLAB 积分一般是用一个解析式给出,此时有两种方法求积
;
分,也可能用一个表格形式给出,此时用 trapz 函数计算。
计算 I=
第一种方法建立函数文件 ex.m
function ex=ex(x)
ex=exp(2*x);
在命令窗口输入以下命令:
I=quadl('ex',1,2);
得到结果为:
I =
23.6045
- 3 -
第二直接使用内联函数求解,在命令窗口输入:
g=inline(‘exp(2*x)’);
I=quadl(g,1,2)
结果为:
I =
23.6045
用 trapz 函数计算:
X=1:0.01:2;
Y=exp(2*x);
trapz(X,Y)
ans=
23.6053
而计算二重积分,则使用 MATLAB 提供的 dblquad 函数,调用
格式为:I=dblquad(f,a,b,c,d,tol,trace)调用方式和 quadl 函数类
同,不再赘述。
2、MATLAB 在高等代数上的应用
在高等代数的学习过程中,往往为无法验证计算结果的正确性而
感到烦恼。使用 Matlab 不仅简单、迅速地计算出繁杂的代数运算结
果,而且使用方便、集成度高且结果稳定可靠。Matlab 的优势就在
于不仅功能强大,而且其运算指令简洁明了,使用时也不需要复杂的程
序语言,方便实用,很容易掌握。Matlab 在向量组的线性相关性、矩
阵及线性方程组、相似矩阵与二次型等方面有很强大的计算功能和
应用能力。
2.1、向量组的线性相关性
求列向量组 A 的一个最大线性无关组可用命令 rref(A)将 A 化成
阶梯形的行最简形式,其中单位向量对应的列向量即为最大线性无
关组所含向量,其它列向量的坐标即为其对应向量用最大线性无关
组线性表示的系数。
求下列矩阵的列向量的最大无关组(高等代数习题第三章第 11
题数据为例):
A=
- 4 -
编写程序 M 文件如下:
A=[6 1 1 7;4 0 4 1;1 2 -9 0;-1 3 -16 -1;2 -4 22 3];
b=rref(A)
求得结果如下:
即 b=
记矩阵 A 的四个列向量分别为 a1,a2,a3,a4,则 a1,a2,a4 是向量组的一个极大无关组,且有
a3=a1-5a2。
2.2、矩阵及线性方程组的解
2.2.1、矩阵的分析
矩阵分析是高等代数的重要内容,Matlab 提供大量的方式求矩
阵的逆、矩阵的秩、矩阵转置、矩阵的特征值和特征向量、特征多
项式、特征根等。
下面用一个矩阵分别求它的秩、逆、装置、特征值、特征向
量、特征多项式、特征根。
A=
在命令窗口输入的命令如下:
>> A=[1 2 2;-4 3 0;0 -1 0];
>> inv(A)
结果如图:
可知 inv()函数求矩阵逆简便快捷
继续输入命令:
>> rank(A)
ans=3
>>[v,d]=eig(A)
(rank()函数求矩阵的秩)
- 5 -
结果如图:
由 v,d 可知,矩阵 A 的第一列向量
特征值为:1.5000 + 2.3979i;
它的特征向量为:
[0.2942 - 0.4703i,0.7845,-0.1471 +0.2351i],
其他列向量或行向量亦可求出特征值与特征向量。
>>p=poly(A)
p =
1.0000 -4.0000 11.0000 -8.0000
(由 P 可以得到特征多项式为:f(x)=x3-4x2+11x-8)
>> roots(p)
ans =
1.5000 + 2.3979i
1.5000 - 2.3979i
1.0000
(roots() 函数可由特征多项式系数计算出特征根)
2.2.2、线性方程组的解
线性方程组是高等代数核心内容,在 Matlab 中,关于线性方程
组的解法分两类:一类是直接解,另一类是迭代解法,这两种又有
多种实现的方式,各有优缺点,下面利用程序详细分分析 Matlab 如
何解线性方程组。
例:用不同方法求解下列线性方程组的解
(1)直接解法,包括矩阵除法、矩阵求逆、矩阵分解(包括
LU 分解、QR 分解、Cholesky 分解)三种,程序如下;
>> A=[5 1 -1 0;1 1 3 -1;-1 -1 2 5;0 0 2 4];
>> b=[1;2;3;-1];
- 6 -
//矩阵除法
x=A\b
x =
2.0625
-7.3125
2.0000
-1.2500
>>x=inv(A)*b
x =
//矩阵求逆法
//矩阵分解法以 LU 分解为例
2.0625
-7.3125
2.0000
-1.2500
>> [L,U]=lu(A);
>> x=U\(L\b)
x =
2.0625
-7.3125
2.0000
-1.2500
(2)迭代解法,包括 Jacobi 迭代法、Gauss-Serdel 迭代法、
超松弛迭代、两步迭代法
以 Jacobi 迭代法解上题,建立函数文件 jacobi.m,程序代码如
下:
function [y,n]=jacobi(A,b,x0,eps)
if nargin==3
eps=1.0e-6;
elseif nargin<3
error
return
end
D=diag(diag(A));
L=-tril(A,-1);
U=-triu(A,1);
B=pinv(D)*(L+U);
f=pinv(D)*b;
y=B*x0+f;
n=1;
- 7 -
while norm(y-x0)>=eps
x0=y;
y=B*x0+f;
n=n+1;
end
以迭代初值为 0,迭代精度为 10-6,在命令窗口输入:
>> [x,n]=jacobi(A,b,[0;0;0;0],1.0e-6)
x =
2.0625
-7.3125
2.0000
-1.2500
n =41
Matlab 在高等代数中线性方程通解,非线性方程的最优化求
解,相似矩阵与二次型等个方面都有广泛的应用,我们可以通过
Matlab 可以简单快捷地解出高等代数的复杂的运算结果,这给我们
学习高等代数提供极大的便利,验证计算结果的正确性。
3、MATLAB 的绘图功能
强大的绘图功能是 Matlab 特点之一,在 Mtalab 提供的函数,
用户根据细节考虑分为高层绘图操作和低层绘图操作。以下都是用
高层绘图操作来体现 Matlab 的绘图功能。
3.1、绘制二维图形
3.1.1、基本绘图 plot 函数的使用
绘制二维图形的基本函数为 plot 函数,提供一组 x 坐标及对应
的 y 坐标,这样就可以绘制分别以 x、y 为横、纵坐标的二维曲线。
调用格式为:plot(x,y)
绘制四组图实现 plot 函数的绘制功能。
(1)绘制一般曲线,例:y=2ex2xsinx;
(2)当 x 是向量,y 是有一维与 x 同维的矩阵时,则绘出曲线条数
等于 y 矩阵另一维数,x 作为这些曲线共同坐标。
(3)x,y 是同维矩阵,x,y 对应元素为横纵坐标分别绘制条数等于矩
阵列数的曲线。
(4)绘制对个输入参数,含选项的 plot 函数。
- 8 -