第一讲Matlab基本数值计算(最新整理)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 2 3
5、求矩阵的行列式、逆矩阵、特征值和特征向量
5 7 6 5
A
7 6
10 8
8 10
7
9
5 7 9 10
6、求下列向量组的秩和它的一个最大无关组,并将其余向量用该最
大无关组线性表示。
1 (4, 3,1,3),2 (2, 1,3,5),3 (1, 1, 1, 1),4 (3, 2,3, 4),5 (7, 6, 7, 0)
2012 年数学建模培训材料——Matlab 软件的使用
第一讲 Matlab 基本数值计算
一、矩阵 在 Matlab 中,一个矩阵可以使数学意义上的矩阵,也可以是标量
或者向量。对于一个标量(一个数)可以将之作为11 的矩阵,而向 量(一行或一列)则可以认为是1 n 或者 n1的矩阵。另外,一个 0 0 矩阵在 Matlab 中被认为是空矩阵,用“[]”表示。 1、矩阵的创建
2012 年数学建模培训材料——Matlab 软件的使用
外部数据文件可以是以保存的 Matlab 工作空间,也可以是文本 (.txt)文件,或者是电子表格创建的文件(.xls).
例:已知一个文本格式的数据文件 E:\Mathmodel\data1.txt >> load e:\Mathmodel\data1.txt 得到一个变量名与文件名相同的矩阵(data1)。注意:文件的扩 展名不能省略。 例:已知一个 Excel 文件的路径为 E:\Mathmodel\data2.xls a. 缺省操作: >> 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];
⑵多项式求根 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)
2012 年数学建模培训材料——Matlab 软件的使用
分别为单位矩阵、
随机矩阵、零矩阵和对角阵,试通过数ຫໍສະໝຸດ Baidu计算验证
A2
E 0
R
S
RS
2
。
3、设 a=(1,2,3),b=(2 ,4,3),分别计算 a./b,a.\b,a/b,a\b,分析结果的意义。
4、求矩阵方程的通解
2 1 1
1 2 1
1 1 2
1 1 1
x1 x2 x3 x4
上机练习
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。
2、设有分块矩阵
A
E33 O23
R32 S22
,其中
E,R,O,S
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 %次数不同的多项式相加减,要在低次数组前面补零。
det(A) 返回方阵 A 的行列式
inv(A) 返回 A 的逆矩阵
null(A) 返回 A 的零空间的基,即 Ax 0 的基础解系
norm(A)
返回矩阵 A 的 2-范数,即 A 2
max ( AT A)
[V,D]=eig(A) 返回方阵 A 的特征值和特征向量,其中 D 为特征值
构成的对角阵,每个特征值对应的 V 的列为属于该特征值的一个特
或用初等行变换的方法:
>> rref([A b])
二、数组
2012 年数学建模培训材料——Matlab 软件的使用
代数中的数组是指有顺序的一列数,或称向量,在 Matlab 中除 了行向量和列向量外,实际上矩阵也是数组的一种表现形式,相当于 将矩阵的列按顺序接成一个列向量。因此二维数组的元素有两种定位 方式:二维下标(subscripts)和一位索引(index)
2012 年数学建模培训材料——Matlab 软件的使用
>> A+B,A-B,A*B
矩阵的转置(A.'),矩阵的共轭转置(A')。
矩阵的除法:左除 A\B,类似于求 A1B ,右除 B/A,类似于 BA1 。
例:分别解矩阵方程 AX B 和 XA B 。
⑵矩阵分析
rank(A) 求矩阵 A 的秩
2012 年数学建模培训材料——Matlab 软件的使用
p=[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)
矩阵的创建可以有以下几种形式 ⑴直接输入 >> 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]) ⑶对矩阵进行裁剪或拼接 ⑷从外部文件装入数据
4、二重积分
Matlab 提供了一个计算矩形区域上二重积分的函数 dblquad
z=dblquad(fun,a,b,c,d) %求二元函数 fun(x,y)在 a x b,c y d 上
的二重积分
例如 计算 xex2y2 dxdy ,其中 D : 0 x 2, 2 y 2
D
>> fun=inline('x.*exp(x.^2+y.^2)','x','y'); %inline 函数
>> A=[1 4 ;3 7; 2 0], diff(A) %按 A 的各列作差分 diff(fun) %对符号函数 fun 求导 diff(fun,‘u’,n) %返回符号函数 fun 对变量 u 的 n 阶导数。
2012 年数学建模培训材料——Matlab 软件的使用
2、梯形积分法
z=trapz(x,y) %x,y 要求是同维向量,当被积函数表达式未知时比
>> fun=inline('1+x+y.^2','x','y'); %被积函数
>> c=inline('-sqrt(2*x-x^2)');d=inline('sqrt(2*x-x^2)'); %内积分上下限
2012 年数学建模培训材料——Matlab 软件的使用
>> dblquad2(fun,0,2,c,d)
较有用
例 求积分 1 ex2 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)
>> a=[1 2 3 1];b=[2 1]; [q,r]=deconv(a,b) 验证: conv(q,b)+r ⑷特征多项式 poly(A) 思考:如何求矩阵 A 的特征值? ⑸多项式求值 polyval y=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)
8、 求 多 项 式 p(x) x4 x3 x2 9x 10 的 所 有 根 , 并 计 算 p(x) 分 别 在
征向量。如果只有一个输出,则得到特征值构成的列向量
例:求线性方程组的通解
x1x1 x2x2 x3x3 x4x41 1 2x1 2x2 x3 x4 1
>> A=[1 -1 1 -1;-1 1 1 -1;2 -2 -1 1];b=[1 1 -1]';
>> x0=A\b
>> null(A,'r')
例如:>> 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) a0xn a1xn1 an 在 Matlab 中 表 示 为
2012 年数学建模培训材料——Matlab 软件的使用
7、设有两个多项式 p(x) 3x4 2x3 5x 4, q(x) x2 6x 2 ,计算 p(x) q(x) ,
p(x) q(x) , p(x)q(x), p(x) / q(x) , ( p(x)) ', ( p(x)q(x)) ', ( p(x) / q(x)) ' 。
>> dblquad(fun,0,2,-2,2)
对于一般的不是矩形区域的二重积分,可以通过换元积分法将其化
为矩形区域,或者可以参考自编程序 dblquad2.m
例 计算 (1 x y2 )dxdy, D : x2 y2 2x
D
先化为二次积分
2
dx
2xx2 (1 x y2 )dy
0
2xx2