当前位置:文档之家› 第一讲Matlab基本数值计算(可编辑修改word版)

第一讲Matlab基本数值计算(可编辑修改word版)

第一讲Matlab 基本数值计算一、矩阵在Matlab 中,一个矩阵可以使数学意义上的矩阵,也可以是标量或者向量。

对于一个标量(一个数)可以将之作为1⨯1 的矩阵,而向量(一行或一列)则可以认为是1⨯n 或者n ⨯1的矩阵。

另外,一个0 ⨯0 矩阵在Matlab 中被认为是空矩阵,用“[]”表示。

1、矩阵的创建矩阵的创建可以有以下几种形式⑴直接输入>> A=[1 2 3;4 3 7;2 4 1]注意:每行间的元素用逗号或空格分开,行与行之间用分号或回车分开,矩阵标示是一对中括号[ ]。

也可以采用数组编辑器(Array Editor)像在Excel 电子表格中据那样输入数据。

⑵通过语句和函数产生常用的特殊矩阵:zeros:全零矩阵,ones:全1 矩阵,eye:单位矩阵,rand:随机矩阵,diag:对角阵等。

例:>> A=ones(3,4)>> E=eye(3)>> D=diag([3 5 2])⑶对矩阵进行裁剪或拼接⑷从外部文件装入数据外部数据文件可以是以保存的Matlab 工作空间,也可以是文本(.txt)文件,或者是电子表格创建的文件(.xls).例:已知一个文本格式的数据文件E:\Mathmodel\data1.txt>> load e:\Mathmodel\data1.txt得到一个变量名与文件名相同的矩阵(data1)。

注意:文件的扩展名不能省略。

例:已知一个Excel 文件的路径为E:\Mathmodel\data2.xlsa.缺省操作:>> NUMBER=xlsread('E:\Mathmodel\data2.xls')>>[NUMBER,TXT]=xlsread('E:\Mathmodel\data2.xls')默认操作是从第一个工作表(sheet1)中提取数据。

b.从指定的工作表(而不是第一个)中提取数据:>> NUMBER=xlsread('E:\Mathmodel\data2.xls','S2')或者>> NUMBER=xlsread('E:\Mathmodel\data2.xls',2)c.从指定的工作表中读取指定区域的数据:>> NUMBER=xlsread('E:\Mathmodel\data2.xls',2,'g3:i8')2、Matlab 的矩阵运算⑴基本运算矩阵的加(+)、减(-)、乘(*)、乘方(^)运算法则与代数中的定义完全一致。

例如:>> A=[1 2;3 4];B=[3 1;4 8];>> A+B,A-B,A*B矩阵的转置(A.'),矩阵的共轭转置(A')。

矩阵的除法:左除 A\B ,类似于求 A -1B ,右除 B/A,类似于BA -1 。

例:分别解矩阵方程 AX = B 和 XA = B 。

⑵矩阵分析rank(A)求矩阵 A 的秩 det(A)返回方阵 A 的行列式inv(A)返回 A 的逆矩阵 null(A)返回 A 的零空间的基,即 Ax = 0 的基础解系norm (A ) 返回矩阵 A 的 2-范数,即 [V,D]=eig(A) 返回方阵 A 的特征值和特征向量,其中 D 为特征值构成的对角阵,每个特征值对应的 V 的列为属于该特征值的一个特征向量。

如果只有一个输出,则得到特征值构成的列向量例:求线性方程组的通解⎧x 1 - x 2 + x 3 - x 4 = 1 ⎪-x + x + x - x = 1 ⎨ 1 2 3 4 ⎪2x - 2x - x + x = -1 ⎩1 2 3 4>> A=[1 -1 1 -1;-1 1 1 -1;2 -2 -1 1];b=[1 1 -1]';>> x0=A\b>> null(A,'r')或用初等行变换的方法:>> rref([A b])二、数组( A T A )maxA 2代数中的数组是指有顺序的一列数,或称向量,在Matlab 中除了行向量和列向量外,实际上矩阵也是数组的一种表现形式,相当于将矩阵的列按顺序接成一个列向量。

因此二维数组的元素有两种定位方式:二维下标(subscripts)和一位索引(index)例如:>> A=[1 2 3 ;4 5 6;7 8 9],>> A(1,3),>> A(7)思考:1.这两者之间的转换公式?利用Matlab 帮助学习sub2ind 和ind2sub 的用法。

2.观察命令>> A=A(:)的结果。

生成等差数组的两个非常有用的指令:a:s:b 生成首项为a,步长(公差)为s,末项不超过b 的等差数列,当步长为1 时可以省略。

linspace(a,b,n) 生成首项是a,末项是b,项数为n 的等差数列。

数组的运算:a+b a-b a.*b a./b a.\b a.^b要求数组a 和b 有相同的维数。

a 和b 之一也可以是一个标量,例如a 是标量,则先将其扩充为与b 同维数,全部元素都为 a 的数组,再参与相应的运算。

举例>> a=[1 3 5 7;2 4 6 8;9 11 13 15];b=[3 2 1 1;2 3 2 1;3 4 2 1];观察a+b,a-b,a.*b,a./b,a.\b,a.^b,2+a,2.^a,a.^2三、多项式1、多项式的创建Matlab 中,多项式(Polynomial)是由一个向量表示,它的系数是按降序排列的。

多项式 P(x) =a x n+a x n-1+ a 在Matlab 中表示为0 1np=[a0,a1,…an],是一个n+1 维数组。

如果多项式中缺某幂次项,则应认为该幂次项的系数为0.Poly(A),如果A 为方阵,则创建矩阵A 的特征多项式,若A 是数组A=[a0,a1,…an],则创建(x-a0)(x-a1)…(x-an)生成的多项式的系数向量。

例如>> A=[1 2;3 4]; p=poly(A)>> A=[1 2 3 4]; p=poly(A)poly2str(P,’x’)把多项式数组转换成字符串。

例如poly2str(A,'x')2、多项式的运算⑴多项式的加减法>> a=[1 3 5 7];b=[2 4 6 8];>> c=a+b>> poly2str(a,'x')>> poly2str(b,'x')>> poly2str(c,'x')>> d=[1 3 4 6 -5] %d 表示一个4 次多项式>> e=[0 c]+d %次数不同的多项式相加减,要在低次数组前面补零。

⑵多项式求根roots(p)⑶多项式的乘法和除法p=conv(a,b) %生成多项式a 和b 的乘积[q,r]=deconv(a,b) %多项式a 除以b,商为q,余式为r例>> a=[1 3 5];b=[2 4 6]; p=conv(a,b)>> a=[1 2 3 1];b=[2 1]; [q,r]=deconv(a,b)验证:conv(q,b)+r⑷特征多项式poly(A)思考:如何求矩阵A 的特征值?⑸多项式求值polyvaly=polyval(p,x) %求多项式p 在x 处的值,即y=p(x),x 可以是向量。

例画出多项式p(x) = 4x3- 2x2+ 7 的图形>> p=[4 -2 0 7];>> x=-1:0.1:1;y=polyval(p,x);>> plot(x,y)⑹多项式求导polyder(p)p=polyder(a) %返回多项式a 的导数p=polyder(a,b) %返回多项式的乘积a*b 的导数[q,d]=polyder(a,b) %返回多项式的商a/b 的导数,表示为q/d四、数值微积分1、diff 数值差分或符号微分diff(A) %对向量或矩阵A 的差分diff(A,n) %对向量或矩阵A 的n 阶差分例>> A=[2 3 6 1 0 6],diff(A),diff(A,2)>> A=[1 4 ;3 7; 2 0],diff(A) %按A 的各列作差分diff(fun) %对符号函数fun 求导diff(fun,‘u’,n) %返回符号函数fun 对变量u 的n 阶导数。

⎰2 2、梯形积分法z=trapz(x,y) %x,y 要求是同维向量,当被积函数表达式未知时比较有用例 求积分 1 e -x 2 dx-1 >> x=-1:0.1:1;y=exp(-x.^2);>> trapz(x,y)3、高精度数值积分z=quad(fun,a,b) 或 z=quadl(fun,a,b) %函数 fun 在区间[a,b]上的定积分例 >> quadl('exp(-x.^2)',-1,1)4、二重积分Matlab 提供了一个计算矩形区域上二重积分的函数 dblquadz=dblquad(fun,a,b,c,d) %求二元函数 fun(x,y)在 a ≤ x ≤ b , c ≤ y ≤ d 上的二重积分例如 计算⎰⎰ xe x 2 + y 2dxdy ,其中D : 0 ≤ x ≤ 2, -2 ≤ y ≤ 2D>> fun=inline('x.*exp(x.^2+y.^2)','x','y'); %inline 函数>> dblquad(fun,0,2,-2,2)对于一般的不是矩形区域的二重积分,可以通过换元积分法将其化为矩形区域,或者可以参考自编程序 dblquad2.m例 计算⎰⎰(1+ x + y 2 )dxdy , D : x 2 + y 2 ≤ 2xD先化为二次积分 ⎰0 dx + x + y 2 )dy>> fun=inline('1+x+y.^2','x','y'); %被积函数>> c=inline('-sqrt(2*x-x^2)');d=inline('sqrt(2*x-x^2)'); %内积分上下限⎣ ⎦ >> dblquad2(fun,0,2,c,d)上机练习1、执行下列指令,观察其运行结果,理解其意义⑴ [1 2;3 4]+10-2i; ⑵ [1 2;3 4].*[0.1 0.2;0.3 0.4];⑶ [1 2;3 4].\[20 10;9 2];⑷ [1 2;3 4].^2 。

相关主题