第4章数值计算1

Download Report

Transcript 第4章数值计算1

第4章 数值计算 (1)
第4章 数值计算 (1)
主要内容:
①数据分析;
②矩阵分析;
③多项式运算;
④数值插值和拟合;
⑤数值积分和微分 。
MATLAB 7.X程序设计
2/75
第4章 数值计算 (1)
4.1 概述
数值计算的特点:
1)数值计算是定义在数值数组的基础上,在计
算之前必须定义变量并赋值。
2)数值计算有误差。
3)数值计算的计算速度较快。
4)数值计算除定义了算术运算、关系运算和逻
辑运算三种,还提供了许多运算函数。
MATLAB 7.X程序设计
3/75
第4章 数值计算 (1)
4.2 数据分析
4.2.1统计分析
1 最大值和最小值
1)求向量的最大和最小值
• y=max(X) 返回向量X的最大值存入y,如果X中
包含复数元素,则按模取最大值。
• [y,I]=max(X) 返回向量X的最大值存入y,最大
值的序号存入I,如果X中包含复数元素,则按
模取最大值。
• 求向量X的最小值的函数是min(X),用法和
max(X)完全相同。
MATLAB 7.X程序设计
4/75
第4章 数值计算 (1)
例 4-1 已 知 x=[-43,72,9,16,23,47] ,
求向量x的最大值和最小值。
y=max(x)
%求向量x中的最大值
[y,l]=max(x) %求向量x中的最大值及其该元
素的位置
z=min(x)
%求向量x中的最小值
[z,m]=min(x) %求向量x中的最小值及其该元
素的位置
MATLAB 7.X程序设计
5/75
第4章 数值计算 (1)
2)求矩阵A的最大值和最小值
• max(A)
返回一个行向量,向量的第i个元素是矩阵A的第i
列上的最大值。
[Y,U]=max(A)
返回行向量Y和U,Y向量记录A的每列的最大值,U
向量记录每列最大值的行号。
• max(A,[],dim)
dim取1或2。dim取1时,该函数和max(A)完全相同;
dim取2时,该函数返回一个列向量,其第i个元素
是A矩阵的第i行上的最大值。
• 求矩阵最小值的函数是min,其用法和max完全相同。
MATLAB 7.X程序设计
6/75
第4章 数值计算 (1)
• 例4-2
分别求三阶魔方矩阵中各列和各行元
素
中的最大值,并求整个矩阵的最大值和
最小值。
MATLAB 7.X程序设计
7/75
第4章 数值计算 (1)
3)同型的向量或矩阵比较
• U=max(A,B)
A,B是两个同型的向量或矩阵,结果U是与A,B
同型的向量或矩阵,U的每个元素等于A,B对
应元素的较大者。
• U=max(A,n)
n是一个标量,结果U是与A同型的向量或矩阵,
U的每个元素等于A对应元素和n中的较大者。
• min函数的用法和max完全相同。
MATLAB 7.X程序设计
8/75
第4章 数值计算 (1)
例 4-3 分析下列程序的功能。
x=[4 5 6;1 4 8];
y=[1 7 5;4 5 7];
p=max(x,y) ;
P
分析:取两个2×3的二维数组x和y同一位
置上的元素值大者构成一个新矩阵p。
MATLAB 7.X程序设计
9/75
第4章 数值计算 (1)
2 平均值和中值
求数据序列平均值的函数是mean,求数据序列
中值的函数是median。
• mean(X)
返回向量X的算术平均值。
• median(X)
返回向量X的中值。
• mean(A)
返回一个行向量,其第i个元素是A的第i列的
算术平均值。
MATLAB 7.X程序设计
10/75
第4章 数值计算 (1)
• median(A)
返回一个行向量,其第i个元素是A的第i列
的中值。
• mean(A,dim)
当dim为1时,该函数等同于mean(A);当
dim为2时,返回一个列向量,其第i个元素
是A的第i行的算术平均值。
• median(A,dim)
当dim为1时,该函数等同于median(A);当
dim为2时,返回一个列向量,其第i个元素
是A的第i行的中值。
MATLAB 7.X程序设计
11/75
第4章 数值计算 (1)
例4-4 已知x=[1 8 4 2;9 6 2 5;3 6 7 1],从
不同维方向求出其平均值和中值。
• median(x)
median(x,1)
%按列方向,求数组的中值
• median(x,2)
• mean(x)
%按行方向,求数组的中值
mean(x,1)
%按列方向,求数组的平均值
• mean(x,2)
%按行方向,求数组的平均值
MATLAB 7.X程序设计
12/75
第4章 数值计算 (1)
3 求和与求积
• sum(X)
返回向量X各元素的和。
• prod(X)
返回向量X各元素的乘积。
设A是一个矩阵,函数的调用格式为:
• sum(A)
返回一个行向量,其第i个元素是A的第i列的元素和。
• prod(A)
返回一个行向量,其第i个元素是A的第i列的元素乘积。
MATLAB 7.X程序设计
13/75
第4章 数值计算 (1)
• sum(A,dim)
当dim为1时,该函数等同于sum(A);当dim为2
时,返回一个列向量,其第i个元素是A的第i行
的各元素之和。
• prod(A,dim)
当dim为1时,该函数等同于prod(A);当dim为2
时,返回一个列向量,其第i个元素是A的第i行
的各元素乘积。
MATLAB 7.X程序设计
14/75
例4-5
第4章 数值计算 (1)
已知x=[4 5 6;1 4 8],分析矩阵x
的每行、每列元素的乘积和全部元
素的乘积。
sum(x)
sum(x,1)
%求数组各列元素的和
sum(x,2)
%求数组各行元素的和
sum(sum(x))
%求数组所有元素的和
MATLAB 7.X程序设计
15/75
第4章 数值计算 (1)
prod(x)
prod(x,1)
%求数组各列元素的乘积
prod(x,2)
%求数组各行元素的乘积
prod(prod(x))
%求数组所有元素的乘积
MATLAB 7.X程序设计
16/75
第4章 数值计算 (1)
4
累加和与累乘积
• cumsum(X)
返回向量X累加和向量。
• cumprod(X)
返回向量X累乘积向量。
• cumsum(A)
返回一个矩阵,其第i列是A的第i列的累加
和向量。
MATLAB 7.X程序设计
17/75
第4章 数值计算 (1)
• cumprod(A)
返回一个矩阵,其第i列是A的第i列的累乘积向
量。
• cumsum(A,dim)
当dim为1时,该函数等同于cumsum(A);
当dim为2时,返回一个矩阵,其第i行是A
的第i行的累加和向量。
• cumprod(A,dim)
当dim为1时,该函数等同于cumprod(A);
当dim为2时,返回一个向量,其第i行是A
的第i行的累乘积向量。
MATLAB 7.X程序设计
18/75
例4-6
第4章 数值计算 (1)
已知a = [1 2 3; 3 9 6; 4 10 8;
4 0 7],求矩阵a的每行、每列元
素的乘积和全部元素的累加和。
cumsum(a)
%求矩阵的各列元素的累加和
cumsum(a,2)
%求矩阵的各行元素的累加和
cumprod(a)
cumprod(a,1)
%求矩阵的各列元素的累乘积
cumprod(a,2)
%求矩阵的各行元素的累乘积
MATLAB 7.X程序设计
19/75
第4章 数值计算 (1)
5 标准方差
• 对 于 向 量 x , std(x , flag) 返 回 一 个 标 准 方 差 。
flag取0或1。
• 对于矩阵A,std(A)返回一个行向量,它的各个元
素便是矩阵A各列或各行的标准方差。
Y=std(A,flag,dim)
其中dim取1或2。当dim=1时,求各列元素的标准方
差;当dim=2时,则求各行元素的标准方差。flag
取0或1。缺省flag=0,dim=1。
MATLAB 7.X程序设计
20/75
第4章 数值计算 (1)
例 4-7 已知a = [1 2 3; 3 9 6; 4 10 8;4 0
7],从不同维方向求出其标准方差。
std(a)
std(a,0,1)
std(a,1,1)
std(a,0,2)
std(a,1,2)
%按列方向求矩阵a的标准方差
%按列方向求矩阵a的标准方差
%按行方向求矩阵a的标准方差
%按列方向求矩阵a的标准方差
MATLAB 7.X程序设计
21/75
第4章 数值计算 (1)
6 排序
sort(X)
返回一个对向量X中的元素按升序排列的新向量。
[Y,I]=sort(A,dim,MODE)
对矩阵A的各列或各行重新排序,
Y
是排序后的矩阵;
I
记录Y中的元素在排序前A中位置;
dim 指明对A的列还是行进行排序;
MODE为排序的方式。
MATLAB 7.X程序设计
22/75
第4章 数值计算 (1)
按升序排列行函数sortrows的调用格式:
B = sortrows(A)
按升序排列A 的列,其中A为矩阵或行向量。
B = sortrows(A,column)
以指定的列向量排序矩阵
[B,index] = sortrows(A)
排序时返回向量的序号。
如果A 为列向量,B = A(index);
如果A 为m-by-n 矩阵,B = A(index,:)。
MATLAB 7.X程序设计
23/75
第4章 数值计算 (1)
例 4-8
已 知 a = [1 2 3; 3 9 6; 4
10 8; 4 0 7],对矩阵排序。
sort(a,1)
sort(a,1,'ascend')
%对矩阵a的各列进行升序排列
sort(a,2)
sort(a,2,'ascend')
%对矩阵a的各行进行升序排列
sort(a,1,'descend')
%对矩阵a的各列进行降序排列
sort(a,2,'descend')
%对矩阵a的各行进行降序排列
MATLAB 7.X程序设计
24/75
第4章 数值计算 (1)
例4-9 分析下列语句的功能。
a=['one ','two
sortrows(a)
','three ','four ','five']
MATLAB 7.X程序设计
25/75
第4章 数值计算 (1)
4.2.2 协方差和相关系数
•
cov(x)
求向量x的协方差。
• cov(A)
求协方差矩阵,对角线元素是A中各列的方差。
• corrcoef(X)
返回从矩阵X形成的一个相关系数矩阵。
MATLAB 7.X程序设计
26/75
第4章 数值计算 (1)
例 4-10
计 算 x的 协 方 差 、 y的 协 方 差 、
x与y的互协方差。
x=[1 2 3 4 5];
y=[2 4 6 8 10];
cx=cov(x)
cy=cov(y)
cxy=cov(x,y)
MATLAB 7.X程序设计
27/75
第4章 数值计算 (1)
4.2.3 傅立叶变换
函数名
fft
fft2
fftn
fftshift
Ifft
ifft2
ifftn
ifftshift
含义
离散傅立叶变换
二维离散傅立叶变换
n维离散傅立叶变换
将零延迟移到频谱中心
离散傅立叶反变换
二维离散傅立叶反变换
n维离散傅立叶反变换
逆fftshift
MATLAB 7.X程序设计
28/75
第4章 数值计算 (1)
例4-11 求行向量(0,0.1 ,0.2 …,3.14)
的离散傅立叶变换,并通过傅立叶
反变换验证结果是正确的。
MATLAB 7.X程序设计
29/75
第4章 数值计算 (1)
4.3 矩阵操作
4.3.1 矩阵的结构变换
1 转置
转置运算的操作符: ‘
求A的转置,运算表达式为 A‘
其中A可以是行向量、列向量和矩阵。
MATLAB 7.X程序设计
30/75
第4章 数值计算 (1)
例4-12 分析下列语句的执行结果。
a=[1 2 3];
b=a′ %行向量的转置
a=[1; 2; 3];
b=a′ %列向量的转置
a=[1 2; 2 3; 3 4];
b=a′
%矩阵的转置
a=[1+2*i 3-4*i];
b=a′ %复数矩阵的转置
MATLAB 7.X程序设计
31/75
第4章 数值计算 (1)
2
对角阵
• X = diag(v,k)
当v 是n个元素的向量时,返回有第k个对
角线的n+abs(k)顺序的方阵,k = 0(可省
略)代表主对角线,k > 0代表上方的次对
角线, k < 0代表下方的次对角线。
• v = diag(X,k)
返回第k 条对角线构成的列向量,k = 0
(可省略) 时,返回主对角线。
MATLAB 7.X程序设计
32/75
第4章 数值计算 (1)
diag也允许嵌套使用,格式为:
diag(diag(A))
内部的diag取A的对角元素,外diag利
用取出的列向量构成对角阵。
例4-13 编程求出n阶魔方矩阵的各对角线。
MATLAB 7.X程序设计
33/75
第4章 数值计算 (1)
3 对称变换
上下对称交换函数:flipud
左右对称变换函数:fliplr
•
B = flipud(A)
返回上下方向翻转的矩阵。如果是列向量,
返回相反顺序的向量;如果是行向量,返
回原向量。
•
B = fliplr(A)
返回水平方向翻转的矩阵。如果是行向量,
返回相反顺序的向量;如果是列向量,返
回原向量。
MATLAB 7.X程序设计
34/75
第4章 数值计算 (1)
以指定的维翻转矩阵的函数flipdim,格式为:
B = flipdim(A,dim)
返回以指定的维翻转矩阵。dim =1,以行方向翻
转;dim =2,以列方向翻转。
flipdim(A,1) 等 价 flipud(A), flipdim(A,2) 等 价
fliplr(A)。
MATLAB 7.X程序设计
35/75
第4章 数值计算 (1)
例 4-14
分 析 下 列 语 句 的 功 能 。
a=[1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16];
flipud(a)
%flipdim(A,1)
fliplr(a)
%flipdim(A,2)
a=[1; 2; 6; 7; 8];
flipud(a)
a=[1 2 6 7 8];
flipud(a)
%上下方向翻转矩阵
% 水平方向翻转矩阵
%列向量的上下方向翻转
%行向量的上下方向翻转
MATLAB 7.X程序设计
36/75
第4章 数值计算 (1)
•
•
4 旋转
B = rot90(A)
返回A的逆时针旋转90度的矩阵
B = rot90(A,k)
返回A的逆时针旋转k×90度的矩阵,其中k
为正整数。
• 例4-15
已知a=[1 2; 6 7; 8 0],分析下列语句
的功能。
rot90(a)
rot90(a,2)
rot90(a,3)
37/75
MATLAB 7.X程序设计
第4章 数值计算 (1)
5 重组
B = reshape(A,m,n)
返回矩阵A的元素重组的m×n 的矩阵B。如
果A没有m×n 个元素,结果错误。
例 4-16 建立有12个元素的行向量,并分别重组
为3×4和2×6的矩阵。
MATLAB 7.X程序设计
38/75
第4章 数值计算 (1)
6 下三角和上三角矩阵
•
tril (X)
提取X的下三角矩阵
•
tril (X,K)
提取X的主对角线上和第K条对角线上、下的
元素。其中K =0是主对角线,K >0是主对角线
的上面,K< 0是主对角线的下面。
MATLAB 7.X程序设计
39/75
第4章 数值计算 (1)
• triu
(X)
提取X的上三角矩阵.
• triu (X,K)
提取X的主对角线上和第K条对角线上的
元素。其中K =0是主对角线,K >0是主
对角线的上面,K< 0是主对角线的下面。
MATLAB 7.X程序设计
40/75
第4章 数值计算 (1)
例4-17 求出3阶魔方矩阵的各下三角阵和各上三
角阵。
MATLAB 7.X程序设计
41/75
第4章 数值计算 (1)
例 4-18 分析下列程序的功能。
a=-4:4
A=reshape(a,3,3)
%把一维数组a重组为二维数组
a1=diag(A,1)
%取A阵第一对角线的元素
A1=diag(a1,-1)
%产生以a1数组元素为第一下对角线元素的二维数组
flipudA=flipud(A) %上下方向翻转矩阵A
fliplrA=fliplr(A) %水平方向翻转矩阵A
rot90A=rot90(A)
%逆时针旋转90度矩阵A
MATLAB 7.X程序设计
42/75
第4章 数值计算 (1)
例 4-19 将 三 个 2×2 的 矩 阵 x,y 和 z 组 合
成两个新矩阵:
(1)组合成一个43的矩阵,其中第一列为
按列顺序排列的x矩阵元素,第二列为按
列顺序排列的y矩阵元素,第三列为按列
顺序排列的z矩阵元素。
(2)按照x,y和z的列顺序组合成一个行向
量。
MATLAB 7.X程序设计
43/75
第4章 数值计算 (1)
4.3.2矩阵分析
1 逆矩阵
inv(A)
求方阵A的逆矩阵
求伪逆的函数为:pinv(A)
例4-20 求矩阵的逆。
a=[-1 2 0;-2 3 0;3 0 2]; inv(a)
MATLAB 7.X程序设计
44/75
第4章 数值计算 (1)
例4-21 解方程组
 2 x1  2 x2  x3  x4  4
4 x  3x  x  2 x  6
 1
2
3
4

8
x

3
x

3
x

4
x

12
1
2
3
4

3 x1  3 x2  2 x2  2 x4  6
MATLAB 7.X程序设计
45/75
第4章 数值计算 (1)
A=[2 2 -1 1;4 3 -1 2;8 3 -3 4;3 3 -2 -2];
b=[4 6 12 6]';
x=inv(A)*b
执行结果为:
x=
0.6429
0.5000
-1.5000
0.2143
由执行结果可知方程组的解为:
0.6429 0.5000 -1.5000 0.2143 。
MATLAB 7.X程序设计
46/75
第4章 数值计算 (1)
例4-22 求矩阵X,使满足:AXB = C。
A=[1 2 3;2 2 1;3 4 3];
B=[2,1;5 3];
C=[1 3;2 0;3 1];
X=A\C/B
MATLAB 7.X程序设计
47/75
第4章 数值计算 (1)
例4-23
求方程组的最小范数解。
2 x 4 x  7 x  4 x  8

 1 2
3
4

9
x

3
x

5
x

6
x

5

 1
2
3
4
MATLAB 7.X程序设计
48/75
第4章 数值计算 (1)
2秩
rank(A)
求A的秩
例4-24 求矩阵的秩:
(1)a=[4 2 -6;7 5 4 ;3 4 9];R=rank(a)
(2)a=[5 4 -2 ;4 5 2;-2 2 8] ; R=rank(a)
MATLAB 7.X程序设计
49/75
第4章 数值计算 (1)
3 行列式
det(A)
求方阵A对应的行列式的值
例4-25 求任意阶魔方矩阵的行列式。
n=input('please input the order
of magic matrix');
a=magic(n);
det(a)
MATLAB 7.X程序设计
50/75
例4-26
第4章 数值计算 (1)
求例4-24中方阵的行列式和逆:
定义函数文件 qiuni:
function ii=qiuni(a)
%a matrix
ad=det(a)
if ad==0
disp('no inverse')
ii=pinv(a);
else
ii=inv(a);
end
在命令窗口输入语句:
a=[4 2 -6;7 5 4 ;3 4 9];
ii=qiuni(a)
MATLAB 7.X程序设计
51/75
第4章 数值计算 (1)
4 迹
trace(A)
求矩阵A的迹,返回sum(diag(A))
例4-27 求三阶魔方矩阵的迹。
方法1:trace(magic(3))
执行结果为:
ans =
15
方法2:sum(diag(trace(magic(3))))
MATLAB 7.X程序设计
52/75
第4章 数值计算 (1)
•
5 范数
1) 向量的范数
norm
norm
norm
norm
(x)
求向量x的2—范数
(x,1)
求向量x的1—范数
(x,inf) 求向量x的无穷大范数 max(abs(A))
(x,-inf)求向量x的负无穷大范数min(abs(A))
• 2) 矩阵的范数
norm (A,1) 求矩阵的1—范数
norm (A,2) 求矩阵的2—范数
norm (A,inf) 求矩阵的无穷大—范数
MATLAB 7.X程序设计
53/75
第4章 数值计算 (1)
例4-28 求向量( 0 1 2 3)的范数。
x = [0 1 2 3] ;
norm(x,1)
%求x的1—范数
norm(x)
%求x的2—范数
norm(x,inf) %求x的—范数
norm(x,-inf) %求x的-—范数
MATLAB 7.X程序设计
54/75
第4章 数值计算 (1)
例4-29 求矩阵的范数。
A=[2 2 -1 1;4 3 -1 2;8 3 -3 4;3 3
-2 -2] ;
norm(A,1)
%求A的1—范数
norm(A)
%求A的2—范数
norm(A,inf) %求A的 —范数
MATLAB 7.X程序设计
55/75
第4章 数值计算 (1)
6
条件数
• cond(A,1)
计算A的1-范数下的条件数
• cond(A)或cond(A,2)
计算A的2-范数下的条件数
• cond(A,inf)
计算A的-范数下的条件数
MATLAB 7.X程序设计
56/75
第4章 数值计算 (1)
例4-30 求矩阵的条件数。
A=[2 2 -1 1;4 3 -1 2;8 3 -3 4;3
3 -2 -2] ;
cond(A,1) %求A的1—条件数
cond(A)
%求A的2—条件数
cond(A,inf)%求A的无穷大条件数
MATLAB 7.X程序设计
57/75
第4章 数值计算 (1)
7 行阶梯形
R = rref(A)
求矩阵A的减少行阶梯形式
8 有理基
z = null
z的列向量为方程组的正交规范基
z = null(A,’r’)
z的列向量是方程AX=0的有理基
MATLAB 7.X程序设计
58/75
第4章 数值计算 (1)
例4-31 解方程组
 x1  x2  2 x3  x4  0
x  x  2x  x  0
 1 2
3
4

2
x

x

x

x

0
1
2
3
4

 2 x1  2 x2  x3  2 x4  0
MATLAB 7.X程序设计
59/75
第4章 数值计算 (1)
•例4-32
求方程组的通解。
 x1  2 x2  2 x3  x4  0

 2 x1  x2  2 x3  2 x4  0
 x  x  4 x  3x  0
3
4
 1 2
MATLAB 7.X程序设计
60/75
第4章 数值计算 (1)
•例4-33
求解方程组 的通解。
2 x1  x2  x3  x4  2 x5  2

 x1  x2  2 x3  x4  x5  4
2 x  3x  4 x  3x  x  8
2
3
4
5
 1
MATLAB 7.X程序设计
61/75
第4章 数值计算 (1)
例4-34 求解方程组 。
 x1  x2  3 x3  x4  1

3 x1  x2  3 x3  4 x4  4
 x  5x  9 x  8x  0
2
3
4
 1
MATLAB 7.X程序设计
62/75
第4章 数值计算 (1)
•例4-35
求解方程组 。
 x1  2 x2  3 x3  x4  1

 3 x1  x2  5 x3  3 x4  2
2 x  x  2 x  2 x  3
3
4
 1 2
MATLAB 7.X程序设计
63/75
第4章 数值计算 (1)
9 子空间夹角
subspace (A,B)
返回两个列指定的A,B子空间的夹角
例4-36 求魔方矩阵的子空间夹角。
H=magic(8);
A=H(:,2:4);
B=H(:,5:8);
theta=subspace(A,B)
MATLAB 7.X程序设计
64/75
第4章 数值计算 (1)
4.3.3 矩阵的特殊值分析
•
eig(A)
求包含矩阵A的特征值的向量。
•
[X,D]=eig(A)
产生一个矩阵A的特征值在对角线上的对角
矩阵D和矩阵X,它们的列是相应的特征向量,
满足AX=XD。
MATLAB 7.X程序设计
65/75
第4章 数值计算 (1)
例4-37 求矩阵的特征值和特征向量
 2 1 1 


0
2
0


 4 1 3 


MATLAB 7.X程序设计
66/75
第4章 数值计算 (1)
4.3.4矩阵的分解
1 LU分解
• [L,U]=lu(A)
求上三角矩阵U和交换下三角矩阵L,使
LU=A。
• [L,U,P]=lu(A)
求上三角矩阵U、有单位对角线的下三角
矩阵L和交换矩阵P,满足LU=PA。
MATLAB 7.X程序设计
67/75
第4章 数值计算 (1)
例4-38
对三阶魔方矩阵作LU分解。
[L,U]=lu(magic(3))
为验证结果的正确性,用语句:
L*U
MATLAB 7.X程序设计
68/75
第4章 数值计算 (1)
例4-39 求方程组的一个特解。
 4 x1  2 x2  x3  2

3 x1  x2  2 x3  10
 11x  3 x  8
1
2

MATLAB 7.X程序设计
69/75
第4章 数值计算 (1)
2 Cholesky因式分解
•
chol(A)
求正定矩阵A的Cholesky因子,是一个上
三角矩阵。如果A不是一个正定矩阵,则给
出一个错误信息。
• [G,err]=chol(A)
求矩阵A的Cholesky因子G。如果A不是一个
正定矩阵,则不给出错误信息,而是将err
设为非零值。
MATLAB 7.X程序设计
70/75
第4章 数值计算 (1)
例4-40 对矩阵作Cholesky因式分解。
a=[2 5 4;5 2 1;4 1 8];
chol(a)
MATLAB 7.X程序设计
71/75
第4章 数值计算 (1)
3
qr因式分解
•
[Q,R]=qr(A)
求得m×m的矩阵Q和上三角矩阵R,Q的列
形成了一个正交基,Q和R满足A=Q×R。
• [Q,R,P]=qr(A)
求矩阵Q、上三角矩阵R和交换矩阵P。Q的
列形成一个正交基,R的对角线元素按大
小降序排列,它们满足A×P=Q×R。
MATLAB 7.X程序设计
72/75
第4章 数值计算 (1)
例 4-41 对 矩 阵 作 qr 因 式 分 解 。
a=[2 5 4;5 2 1;4 1 8];
[Q,R]=qr(a)
[Q,R,P]=qr(A)
MATLAB 7.X程序设计
73/75
第4章 数值计算 (1)
4
SVD分解
计算奇异值分解的函数svd的格式为:
• svd(A)
返回一个包含矩阵A的奇异值的向量。
• [U,S,V]=svd(A)
返回奇异值为对角线的矩阵S和A同型的矩
阵 , m×m 和 n×n 的 酉 矩 阵 U 和 V , 使
A=U×S×V′和U′×A×V=S成立。S中奇异
值是非负数且按降序排列。
MATLAB 7.X程序设计
74/75
第4章 数值计算 (1)
例4-41 分别对a进行特征值分解、奇异值
分解、LU分解、QR分解及
Chollesky分解。
a=[9 1 2;5 6 3;8 2 7];
[v,d]=eig(a)
a=[9 1 2;5 6 3;8 2 7];
[u,s,v]=svd(a)
[l,u]=lu(a)
[q,r]=qr(a)
c=chol(a)
MATLAB 7.X程序设计
75/75