高等代数机算讲稿_水轮机空化讲稿

2020-02-29 其他范文 下载本文

高等代数机算讲稿由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“水轮机空化讲稿”。

矩阵的基本运算

1.矩阵赋值方法;

2.矩阵加法、数乘、转置和乘法运算; 3.矩阵幂运算及逆运算; 4.矩阵元素群运算; 5.演算矩阵的运算规则。

例1.1 用MATLAB软件生成以下矩阵:

932100(1)A656(2)B010 6600011100(3)C(4)D1001111111 111111解:(1)在MATLAB命令窗口输入: A=[9,3,2;6,5,6;6,6,0] 或:A=[9 3 2;6 5 6;6 6 0] 或:A=[9 3 2 6 5 6 6 6 0] 结果都为: A = 9 3 2 6 5 6 6 6 0(2)输入: B=eye(3)结果为: B = 1 0 0 0 1 0 0 0 1(3)输入: C = zeros(2)结果为: C = 0 0 0 0(4)输入: D = ones(4)结果为:D = 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 例1.2 随机生成两个3阶方阵A和B,分别计算:(1)A+B;(2)A-B;(3)5A;(4)AB;(5)AT 解:输入:

A=round(rand(3)*10)B=round(rand(3)*10)结果为: A = 10 2 3 5 10 9 9 3 7 B = 1 2 3 0 3 5 9 7 1(1)输入: A+B 结果为: ans = 11 4 6 5 13 14 18 10 8 其中“ans”表示这次运算的结果。(2)输入: A-B 结果为: ans = 9 0 0 5 7 4 0-4 6(3)输入: 5*A 结果为: ans = 50 10 15 25 50 45 45 15 35(4)输入: A*B 结果为: ans = 37 47 43 86 103 74 72 76 49(5)输入 A’ 结果为 ans = 10 5 9 2 10 3 3 9 7 例1.3 已知矩阵A123010,217分别计算:(1)A5;(2)A1

解:输入:

A=[1,2,3;0,1,0;2,1,7] 结果为: A = 1 2 3 0 1 0 2 1 7(1)输入: A^5 结果为: ans = 3409 2698 11715 0 1 0 7810 6177 26839(2)输入: inv(A)或输入A^-1 结果都为: ans = 7-11-3 0 1 0-2 3 1

695662例1.4已知矩阵A052,B104,291281且满足PAB,AQB,计算矩阵P和Q。解:方法一:利用求逆矩阵的方法,输入:

A=[6,9,5;0,5,2;2,9,1] B=[6,6,2;1,0,4;2,8,1] P=B*inv(A)Q=inv(A)*B 方法二:利用MATLAB软件特有的矩阵 “左除”和“右除”运算,输入: A=[6,9,5;0,5,2;2,9,1] B=[6,6,2;1,0,4;2,8,1] P=B/A % 矩阵右除 Q=AB % 矩阵左除 两种方法的运算结果都为: A = 6 9 5 0 5 2 2 9 1 B = 6 6 2 1 0 4 2 8 1 P = 0.8043-1.3043 0.5870 0.5761 1.1739-1.2283 0.0435-0.0435 0.8696 Q = 0.6087 1.4565-1.2065 0.0435 0.7826 0.2174 0.3913-1.9565 1.4565 503213,6例1.5 已知矩阵A620,B30452701分别按以下要求进行矩阵元素的群运算:

(1)把矩阵A和矩阵B所有对应元素相乘,得到9个乘积,计算由这9个数所构成的同形矩阵C。(2)对矩阵A中的所有元素进行平方运算,得到矩阵D,求该矩阵。

解:Matlab软件提供了矩阵元素群运算的功能,输入:

A=[5,0,3;6,2,0;7,0,1] B=[2,1,3;3,0,6;4,5,-2] 结果为: A = 5 0 3 6 2 0 7 0 1 B = 2 1 3 3 0 6 4 5-2(1)输入:

C=A.*B 结果为: C = 10 0 9 18 0 0 28 0-2(2)输入: D=A.^2 结果为: D = 25 0 9 36 4 0 49 0 1

abc1例1.6 生成符号矩阵Abca,B3cab222130.13解 可用命令A= sym('[a b c;b c a;c a b] ')或 syms a b c

A = [a b c;b c a;c a b] B=sym([1 2 3;3 sqrt(2)0;2-1 1/3])命令来实现,其中sqrt为平方根函数.结果如下: A = [ a, b, c] [ b, c, a] [ c, a, b] B = [

1,2,3]

[

3, sqrt(2),0] [

2,-1,1/3]行列式与方程组的求解

1.2.3.4.5.6.求行列式的命令; 求矩阵秩的命令;

求矩阵的最简行矩阵的命令; 满秩线性方程组的各种方法; 符号变量的应用;

验证与行列式相关的公式和定理。

例2.1 已知非齐次线性方程组:

6x12x23x34x45x52x3x7x10x13x123453x15x211x316x421x52x7x7x7x2x234517x13x25x33x410x5805990,2285要求用下列方法求解该方程组。(1)求逆矩阵法;(2)矩阵左除法;(3)初等行变换;(4)克莱姆法则。解:(1)把非齐次线性方程组写为矩阵形式:

Axb,则xA1b,直接在MATLAB的命令窗口输入:

A=[6,2,3,4,5;2,-3,7,10,13;3,5,11,-16,21;2,-7,7,7,2;7,3,-5,3,10];6

b=[80;59;90;22;85];x=inv(A)*b %或:x=A^-1*b 计算结果为: x = 9.0000 3.0000 2.0000 1.0000 2.0000(2)矩阵的乘法不遵守乘法交换律,Matlab软件定义了矩阵左除和矩阵右除运算,针对方程组的矩阵形式Axb,可用左除法

等式两端同时左除A,得到:“xAb”,即xAb

针对矩阵方程XAB,可用右除法,等式两端同时右除A,XB/A,即XBA1

在MATLAB命令窗口中输入:

A=[6,2,3,4,5;2,-3,7,10,13;3,5,11,-16,21;2,-7,7,7,2;7,3,-5,3,10];b=[80;59;90;22;85];x=Ab % 符号“”即为左除运算,注意它的方向。结果为: x = 9.0000 3.0000 2.0000 1.0000 2.0000(3)用初等行变换,把方程组的增广矩阵变换为最简行阶梯形式,从而得到方程组的解。在MATLAB命令窗口中输入:

A=[6,2,3,4,5;2,-3,7,10,13;3,5,11,-16,21;2,-7,7,7,2;7,3,-5,3,10];b=[80;59;90;22;85];U=rref([A,b])运算结果为: U = 1 0 0 0 0 9 0 1 0 0 0 3 0 0 1 0 0 2 0 0 0 1 0 1 0 0 0 0 1 2

1 7

(4)根据克莱姆法则,有:xi其中D是方程组的系数行列式,Di,DDi是用常数列向量b代替系数行列式的第i列所得到的行列式。

用Matlab的M文件编辑器,编写la01.m文件如下: % 用克莱姆法则求解方程组

clear % 清除变量

n=input('方程个数n=')% 请用户输入方程个数

A=input('系数矩阵A=')% 请用户输入方程组的系数矩阵 b=input('常数列向量b=')% 请用户输入常数列向量 if(size(A)~=[n,n])|(size(b)~=[n,1])

% 判断矩阵A和向量b输入格式是否正确

disp('输入不正确,要求A是n阶方阵,b是n维列向量')% disp:显示字符串 elseif det(A)==0 % 判断系数行列式是否为零 disp('系数行列式为零,不能用克莱姆法则解此方程。')else for i=1:n % 计算x1,x2,...xn B=A;% 构造与A相等的矩阵B B(:,i)=b;% 用列向量b替代矩阵B中的第i列 x(i)=det(B)/det(A);% 根据克莱姆法则计算x1,x2,...xn end x=x' % 以列向量形式显示方程组的解 end 在MATLAB命令窗口中输入: la01 得到以下人机对话结果: 方程个数n=5 n = 5 系数矩阵A= [6,2,3,4,5;2,-3,7,10,13;3,5,11,-16,21;2,-7,7,7,2;7,3,-5,3,10] A = 6 2 3 4 5 2-3 7 10 13 3 5 11-16 21 2-7 7 7 2 7 3-5 3 10 常数列向量b=[80;59;90;22;85] b = 80 8

90 22 85 x = 9 3 2 1 2 72646136311例2.2求矩阵A311952

3029330181147的逆,要求用以下方法:

(1)矩阵左除和右除运算;(2)初等行变换;

A*(3)利用伴随矩阵A求逆的公式A。

A*1解:在MATLAB的M文件编辑器中,编写程序la02.m: % 逆矩阵各种求法: clear A=[-7,-2,-6,4,6;1,3,-6,3,11;3,-11,9,5,-2;-3,0,-2,9,-3;7,30,-18,11,4];% 1.命令法: An1=inv(A)% 2.幂运算法: An2=A^-1 % 3.右除法:

An3=eye(5)/A % eye(5)为5阶单位矩阵 % 4.左除法: An4=Aeye(5)% 5.初等行变换法:

B=rref([A,eye(5)]);% 对矩阵[A , I] 进行初等行变换

% B为矩阵A的最简行阶梯矩阵

if(rank(B(:,1:5))==5)% 判断最简行阶梯矩阵B的前5列是否为单位阵

An5=B(:,6:10)% 取出矩阵的后5列,并显示 else disp('A不可逆');end % 6.伴随矩阵求逆法:

for i=1:5 % 构造伴随矩阵的5×5个元素

for j=1:5 T=A;% 把矩阵A赋给矩阵T T(i,:)=[];% 删去矩阵T的第i行 T(:,j)=[];% 删去矩阵T的第j列

% 此时,|T| 为矩阵A元素aij的余子式 AA(j,i)=(-1)^(i+j)*det(T);

% 算出aij的代数余子式

% 并放入矩阵AA的第j行、第i列

% 当循环结束,矩阵AA即为A的伴随矩阵

end end if det(A)~=0 An6=AA/det(A)else disp('A不可逆');end 运算程序la02,前四个方法计算结果相同: 1.0e+004 *-1.5895 1.3448-1.0646 1.6206-0.6308 1.6298-1.3789 1.0916-1.6617 0.6468 2.5392-2.1483 1.7007-2.5889 1.0077 0.3631-0.3072 0.2432-0.3702 0.1441 0.9860-0.8342 0.6604-1.0053 0.3913 后两个方法计算结果相同:

-15895 13448-10646 16206-6308 16298-13789 10916-16617 6468 25392-21483 17007-25889 10077 3631-3072 2432-3702 1441 9860-8342 6604-10053 3913 从计算结果可以发现,前四个方法得到的是实数矩阵,而后两个方法得到的是整数矩阵。如果在Matlab环境下,键入: format long 然后再重新运行该程序,会发现前四个方法的运算结果存在误差,这是计算机做数值运算时,存在舍入误差的原因。为了进一步观察计算机做数值运算所产生的误差,123现在用上述六种方法来计算矩阵A101010的逆,111213A=[1,2,3;10,10,10;11,12,13] 前四种方法得到以下类似结果:

Warning: Matrix is close to singular or badly scaled.Results may be inaccurate.RCOND = 2.135044e-018.ans = 1.0e+015 *-4.5036-4.5036 4.5036 9.0072 9.0072-9.0072-4.5036-4.5036 4.5036 显然此结果是不正确的,因为A不可逆。

3例2.3 解方程:

21113311220。357x222x2解:Matlab软件定义了“符号变量”的概念。在MATLAB的M文件编辑器中,应用“符号变量”编写程序la03.m: % 求解符号行列式方程

clear all % 清除各种变量

syms x % 定义x为符号变量 A=[3,2,1,1;3,2,2-x^2,1;5,1,3,2;7-x^2,1,3,2]

% 给矩阵A赋值

D=det(A)% 计算含符号变量矩阵A的行列式D f=factor(D)% 对行列式D进行因式分解

% 从因式分解的结果,可以看出方程的解 X=solve(D)% 求方程“D=0”的解 在MATLAB的命令窗口输入: la03 运行结果为: A = [ 3, 2, 1, 1] [ 3, 2, 2-x^2, 1] [ 5, 1, 3, 2] [ 7-x^2, 1, 3, 2] D =-6+9*x^2-3*x^4 f =-3*(x-1)*(x+1)*(x^2-2)X = [ 1] [-1] [ 2^(1/2)] [-2^(1/2)] 例2.4 请用Matlab软件验证行列式按行(列)展开公式:

a11A11a12A12a15A15A

a11A31a12A32a15A350

解:在MATLAB的M文件编辑器中,编写程序la04.m: % 验证行列式按行(列)展开公式 clear A=round(10*randn(5));% 构造5阶随机数方阵 D=det(A);% 计算矩阵A的行列式 % 矩阵A按第一行元素展开:s=a11*A11+a12*A12+„+a15*A15 s=0;for i=1:5 T=A;T(1,:)=[];% 删去阵矩第1行 T(:,i)=[];% 删去矩阵第i列

% 此时,|T| 为矩阵A元素a1i的余子式 s=s+A(1,i)*(-1)^(1+i)*det(T);end e=D-s % 验算D与s是否相等 在MATLAB的命令窗口中输入: la04 计算结果为: e = 0 在MATLAB的M文件编辑器中,编写程序la05.m:

% 计算5阶方阵A的第一行元素与第三行元素对应的代数余子式乘积之和: % s=a11*A31+a12*A32+„+a15*A35 clear A=round(10*randn(5));% 构造5阶随机数方阵 s=0;for i=1:5 T=A;T(3,:)=[];% 删去矩阵第3行 T(:,i)=[];% 删去矩阵第i列

% 此时,|T| 为矩阵A元素a3i的余子式 s=s+A(1,i)*(-1)^(3+i)*det(T);end s % 验算s是否为0 在MATLAB命令窗口中输入: la05 计算结果为: s = 0

11231例2.5 求A221,B234313121314131的逆矩阵.415解

format rat

%用有理格式输出 A=[1 2 3;2 2 1;3 4 3];AN=inv(A)或 AN=A^(-1)B=hilb(3)BN= B^(-1)或BN= inv(A)或

BN=invhilb(B)

% invhilb为求希尔伯特矩阵的逆的函数 显示结果如下:

AN =

-3/2

5/2

BN =

192

-180

-180

180

由于希尔伯特矩阵的条件数很大,不同的算法求其逆的精度有所不同,可以上机比较几种求矩阵逆的函数的差别.11bb21cc21dd2例2.5 计算行列式的aa2值.a4b4c4d4解

在MATLAB编辑器中建立M文件: syms a b c d

A=[1 1 1 1;a b c d;a^2 b^2 c^2 d^2;a^4 b^4 c^4 d^4];d1=det(A)d2=simple(d1)

%用 simple函数化简表达式d1 pretty(d2)

%用pretty函数使表达式d2符合人们的书写习惯.则结果显示为: d1 = b*c^2*d^4-b*d^2*c^4-b^2*c*d^4+b^2*d*c^4+b^4*c*d^2-b^4*d*c^2-a*c^2*d^4+a*d^2*c^4+a*b^2*d^4-a*b^2*c^4-a*b^4*d^2+a*b^4*c^2+a^2*c*d^4-a^2*d*c^4-a^2*b*d^4+a^2*b*c^4+a^2*b^4*d-a^2*b^4*c-a^4*c*d^2+a^4*d*c^2+a^4*b*d^2-a^4*b*c^2-a^4*b^2*d+a^4*b^2*c

d2 =(-d+c)*(b-d)*(b-c)*(-d+a)*(a-c)*(a-b)*(a+c+d+b)(-d + c)(bc)(-d + a)(ab)(a + c + d + b)

函数

rank 格式

k = rank(A)

%求矩阵A的秩

k = rank(A,tol)

%tol为给定误差下计算矩阵的秩

例2.6求向量组1(1223),2(2413),3(124(0623),5(2634)的秩,并判断其线性相关性.解

A=[1-2 2 3;-2 4-1 3;-1 2 0 3;0 6 2 3;2-6 3 4];k=rank(A)结果为 k =由于秩为3小于向量组所含向量个数,因此向量组线性相关.3 向量组的相关性及方程组的通解

1.分析向量组线性相关性的方法; 2.求解线性方程组通解的各种方法;

例3.1求非齐次线性方程组

03),2x14x2x34x416x523x6x2x6x23x712345的通解。3x16x24x36x419x523x12x25x32x419x543解:在MATLAB命令窗口,输入以下命令:

A=[2,4,-1,4,16;-3,-6,2,-6,-23;3,6,-4,6,19;1,2,5,2,19];% 输入系数矩阵A b=[-2;7;-23;43];% 输入常数列向量b [R,s]=rref([A,b])% 把增广矩阵的最简行阶梯矩阵赋给R % 而R的所有基准元素在矩阵中的列号构成了行向量s 计算结果为: R = 1 2 0 2 9 3 0 0 1 0 2 8 0 0 0 0 0 0 0 0 0 0 0 0 s = 1 3 程序la06.m给出非齐次方程组的通解。% 求非齐次线性方程组的通解 clear A=[2,4,-1,4,16;-3,-6,2,-6,-23;3,6,-4,6,19;1,2,5,2,19];% 输入系数矩阵A b=[-2;7;-23;43];% 输入常数列向量b [R,s]=rref([A,b]);% 把增广矩阵的最简行阶梯矩阵赋给R % 而R的所有基准元素在矩阵中的列号构成了行向量s [m,n]=size(A);% 矩阵A的行数、列数赋给了变量m、n x0=zeros(n,1);% 将特解x0初始化为N维零列向量 r=length(s);% 矩阵A的秩赋给变量r x0(s,:)=R(1:r,end);% 将矩阵R的最后一列按基准元素的位置给特解x0赋值 disp('非齐次线性方程组的特解为:')x0 % 显示特解x0 disp('对应齐次线性方程组的基础解系为:')x=null(A,'r')% 得到齐次线性方程组Ax=0的基础解系x,求A的零空间,Ax=0 在MATLAB命令窗口中输入: la06 运算结果为:

非齐次线性方程组的特解为: x0 = 3 0 8 15

0 0 对应齐次线性方程组的基础解系为: x =-2-2-9 1 0 0 0 0-2 0 1 0 0 0 1 22931000则方程组的通解为:k10k20k328

01000010齐次线性方程组的特解还可以用

Matlab的矩阵左除运算来求得,直接在MATLAB命令窗口输入以下命令:

A=[2,4,-1,4,16;-3,-6,2,-6,-23;3,6,-4,6,19;1,2,5,2,19];b=[-2;7;-23;43];x0=Ab % 用矩阵左除运算求得方程组特解x0 x=null(A,'r')% 得到齐次线性方程组Ax=0的基础解系x 运算结果为:

Warning: Rank deficient, rank = 2 tol = 4.3099e-014.x0 = 0 0 7.3333 0 0.3333 x =-2-2-9 1 0 0 0 0-2 0 1 0 0 0 1 22901000方程组的通解为:k10k20k32223

010000113例3.2 已知向量组

132961433210,20,30,42,52,2861923122求出它的最大无关组,并用该最大无关组来线性表示其它向量。解:用笔计算的过程为: 编写Matlab程序la07.m:

% 找向量组的最大无关组,并用它线性表示其它向量 clear a1=[1;1;0;2;2];% 输入5个列向量 a2=[3;4;0;8;3];a3=[2;3;0;6;1];a4=[9;3;2;1;2];a5=[6;-2;2;-9;2];A=[a1,a2,a3,a4,a5];% 由5个列向量构造矩阵A [R,s]=rref(A);% 把矩阵A的最简行阶梯矩阵赋给了R % 而R的所有基准元素在矩阵中的列号构成了行向量s % 向量s中的元素即为最大无关组向量的下标 r=length(s);% 最大无关组所含向量个数赋给r fprintf('最大线性无关组为:')% 输出字符串 for i=1:r fprintf('a%d ',s(i))% 分别输出最大无关组的向量a1,„ end for i=1:r % 从矩阵A中取出最大无关组赋给A0 A0(:,i)=A(:,s(i));end A0 % 显示最大无关组矩阵A0 s0=[1,2,3,4,5];% 构造行向量s0 for i=1:r s0(s(i))=0;% s(i)是最大无关组的列号

end % 若s0的某元素不为0,表示该元素为矩阵A中

% 除最大无关组以外其它列向量的列号

s0=find(s0);% 删除s0中的零元素

% 此时s0中元素为其它向量的列号 for i=1:5-r % 用最大无关组来线性表示其它向量

fprintf('a%d=',s0(i))for j=1:r fprintf('%3d*a%d+ ',R(j,s0(i)),s(j));end fprintf('bb n');% 去掉最后一个”+” end 在MATLAB命令窗口中输入:

la07 运行结果为:

最大线性无关组为:a1 a2 a4 A0 = 1 3 9 1 4 3 0 0 2 2 8 1 2 3 2 a3=-1*a1+ 1*a2+ 0*a4 a5= 3*a1+-2*a2+ 1*a4

例3.22

求矩阵A的列向量组的一个最大无关组,并用最大无关组表示其余向量,其121242中A210333解

format rat 0266.2334A=[1,-2,-1,0,2;-2,4,2,6,-6;2,-1,0,2,3;3,3,3,3,4];B=rref(A)运行结果得

B =

0

1/3

0

16/9

0

2/3

0

-1/9

0

0

0

-1/3

0

0

0

0

0

记矩阵A的五个列向量依次为1,2,3,4,5则 1,2,4 是列向量组的一个最大无关组.且有,312,5

例3.3 已知齐次线性方程组:

13231611124.99312kx13x23x33x403x2kx3x3x01234,3x13x22kx33x403x13x23x311kx40

当k取何值时方程组有非零解?

在有非零解的情况下,求出其基础解系。

解:在MATLAB的M文件编辑器中,编写程序la08.m % 计算带符号变量的齐次线性方程组的解 clear syms k % 定义符号变量k A=[1-2*k,3,3,3;3,2-k,3,3;3,3,2-k,3;3,3,3,11-k];% 给系数矩阵赋值 D=det(A);% 算出系数矩阵的行列式D kk=solve(D);% 解方程“D=0”,得到解kk,即k值 for i=1:4 AA=subs(A,k,kk(i));% fprintf('当k=');disp(kk(i));% fprintf('基础解系为:n');disp(null(AA))% end 在MATLAB命令窗口中输入: la08 运算结果为: 当k=7/2 基础解系为: [ 1] [ 2] [ 2] [-2] 当k=14 基础解系为: [ 1] [ 2] [ 2] [ 5] 当k=-1 基础解系为: [-1,-1] [ 1, 0] [ 0, 1] [ 0, 0] 当k=-1 基础解系为: [-1,-1] [ 1, 0] [ 0, 1] [ 0, 0]

分别把k值代入系数矩阵A中 显示k的取值 计算齐次线性方程组“Ax=0”的基础解系特征向量与二次型

1.2.3.4.5.对向量组正交化;

求方阵特征值和特征向量; 分析方阵是否可对角化; 化二次型为标准型; 分析对称阵是否正定;

例4.1 设向量组:

115,1,1,1223320求由这三个向量生成的子空间V的一个标准正交基。解:在MATLAB命令窗口输入:

a1=[1;2;3];a2=[-1;1;2];a3=[5;1;0];A=[a1,a2,a3] P=orth(A)% 将矩阵A的列向量组正交规范化,% P的列构成了空间V的一个标准正交基 % P的列数反应了空间V的维数

运算结果为: P =-0.9266 0.3359-0.3116-0.4343 20

-0.2105-0.8358 从矩阵P的列数可以看出,原向量组是线性相关的,它生成的空间是二维的。

MATLAB中将矩阵正交三角分解的函数为qr.命令

qr

格式

[Q,R]=qr(A)

%将矩阵A分解为正交Q与上三角矩阵R的乘积.命令

orth

格式

B=orth(A)

%给出矩阵A列空间的一组标准正交基B

%且满足:B'*B = eye(rank(A)).400例4.12

将矩阵A031的列向量组正交规范化并把其正交三角分解.013解:

A=[4 0 0;0 3 1;0 1 3];B=orth(A)[Q,R]=qr(A)则显示结果为 P =

1.0000

0

0

0

0.7071

-0.7071

0

0.7071

0.7071 Q =

1.0000

0

0

0

-0.9487

-0.3162

0

-0.3162

0.9487 R =

4.0000

0

0

0

-3.1623

-1.8974

0

0

2.5298

222019216911的特征值。例4.2 求矩阵A84610847解:在MATLAB的M文件编辑器中,编写la09.m文件,它给出了三种求矩阵特征值的方法: % 矩阵特征值的求解方法 clear 21

A=[2,-2,-20,-19;-2,16,-9,11;-8,4,-6,1;0,-8,-4,-7];%方法一:

syms k % 定义符号变量k B=A-k*eye(length(A));% 构造矩阵B=(A-kI)D=det(B);% 计算行列式:|A-kI| lamda1=solve(D)% 求|A-kI|=0的符号形式的解 %方法二:

p=poly(A);% 计算矩阵A的特征多项式

% 向量P的元素为该多项式的系数 lamda2=roots(P)% 求该多项式的零点,即特征值 %方法三:

lamda3=eig(A)% 直接求出矩阵A的特征值 在MATLAB命令窗口中输入: la09 运算结果为: lamda1 = [ 12] [-1/3*(19585+120*22674^(1/2))^(1/3)-385/3/(19585+120*22674^(1/2))^(1/3)-7/3] [1/6*(19585+120*22674^(1/2))^(1/3)+385/6/(19585+120*22674^(1/2))^(1/3)-7/3+1/2*i*3^(1/2)*(-1/3*(19585+120*22674^(1/2))^(1/3)+385/3/(19585+120*22674^(1/2))^(1/3))] [1/6*(19585+120*22674^(1/2))^(1/3)+385/6/(19585+120*22674^(1/2))^(1/3)-7/3-1/2*i*3^(1/2)*(-1/3*(19585+120*22674^(1/2))^(1/3)+385/3/(19585+120*22674^(1/2))^(1/3))] lamda2 =-17.3347 12.0000 5.1673 + 6.3598i 5.16736.3598i 12.0000 其中,方法一是根据笔算矩阵特征值的算法编写而成,MATLAB给出了一个符号形式的解,可以进一步把符号解转化为数值解,输入以下命令: lamda1=eval(lamda1)结果为: lamda1 = 12.0000-17.3347 5.1673-6.3598i 22

5.1673 + 6.3598i 例4.3 求下列矩阵A的特征值和特征向量,并判断矩阵是否可以对角化,若能对角化,请找出可逆矩阵V,使VAVD。

1123412(2)A212;(1)A213;

210112110(3)A430 101解:(1)在MATLAB命令窗口输入:

A=[1,2,3;2,1,3;1,1,2];[V,D]=eig(A)% 矩阵D为矩阵A的特征值构成的对角阵

% 矩阵V的列向量为矩阵A与特征值D对应的特征向量 运行结果为: V =-0.6396-0.7071-0.5774-0.6396 0.7071-0.5774-0.4264 0.0000 0.5774 D = 5.0000 0 0 0-1.0000 0 0 0 0.0000(2)在MATLAB命令窗口输入: A=[4,-1,-2;2,1,-2;2,-1,0];[V,D]=eig(A)运行结果为: V = 0.7276-0.5774 0.7437 0.4851-0.5774 0.2373 0.4851-0.5774 0.6250 D = 2.0000 0 0 0 1.0000 0 0 0 2.0000 需要分析齐次线性方程组

A2Ix0解空间的维数是否等于2,在MATLAB命令窗口继续输入:

if 3-rank(A-2*eye(3))==2 23

% 判断齐次线性方程组(A2-2 I)x=0解空间的维数是否为2 disp('能对角化');

% 如果解空间维数为2,则存在2个线性无关特征向量

else disp('不能对角化');end 运行结果为: 能对角化

(3)在MATLAB命令窗口输入: A=[1,-1,0;4,-3,0;1,0,1];[V,D]=eig(A)运行结果为: V = 0 0.4364-0.4364 0 0.8729-0.8729 1.0000-0.2182 0.2182 D = 1.0000 0 0 0-1.0000 0 0 0-1.0000 从矩阵D可以看出,231

是矩阵A的二重特征根,在MATLAB命令窗口继续输入:

if 3-rank(A+eye(3))==2

% 判断齐次线性方程组(A2-2 I)x=0解空间的维数是否为2 disp('能对角化');

% 如果解空间维数为2,则存在2个线性无关特征向量

else disp('不能对角化');end 运行结果为: 不能对角化

例4.4 用正交变换法将二次型

fx1,x2,x3x12x22x34x2x3 222化为标准形。

解:在MATLAB的M文件编辑器中,编写la10.m文件:

% 用正交变换法将二次型化为标准型 clear A=[1,0,0;0,2,2;0,2,2];% 输入二次型的矩阵A [V,D]=eig(A);% 其中矩阵V即为所求正交矩阵

% 矩阵D为矩阵A的特征值构成的对角阵

% 或:[V,D]=schur(A)% 结果和eig()函数相同 disp('正交矩阵为:');V disp('对角矩阵为:');D disp('标准化的二次型为:');syms y1 y2 y3 f=[y1,y2,y3]*D*[y1;y2;y3] 在MATLAB命令窗口中输入: la10 运行结果为: 正交矩阵为: V = 0 1.0000 0-0.7071 0 0.7071 0.7071 0 0.7071 对角矩阵为为: D = 0 0 0 0 1 0 0 0 4 标准化的二次型为: f = y2^2+4*y3^2 矩阵V为所求正交矩阵,把xVy代入二次型fxAx,得:

TfxTAxyTVTAVyyTyy24y3。

22例4.42 求一个正交变换X=PY,将二次型

f2x1x22x1x32x1x42x2x32x2x42x3x4化成标准形.01111011 解

二次型的实对称矩阵为A11011110在MATLAB编辑器中建立M文件如下:

A=[0 1 1-1;1 0-1 1;1-1 0 1;-1 1 1 0];[V,D]=eig(A)

%特征值分解

syms y1 y2 y3 y4 y=[y1;y2;y3;y4];

X=vpa(V'*y,2)

%vpa表示可变精度计算函数,这里取2位精度 f= y.'*D*y 运行后结果显示如下:

P =

-0.5000

0.5000

0.5000

-0.5000

0.2887

-0.2887

-0.2887

-0.8660

0.7887

0.2113

0.5774

0 0.2113

0.7887

-0.5774

0 D =

-3.0000

0

0

0

0

1.0000

0

0

0

0

1.0000

0

0

0

0

1.0000 X =-.50*y1+.50*y2+.50*y3-.50*y4

.29*y1-.29*y2-.29*y3-.85*y4

.79*y1+.21*y2+.56*y3

.21*y1+.79*y2-.56*y3 f =-3*y1^2+y2^2+y3^2+y4^2 222即

f3y12y2.y3y4还可以用orth函数简单求解如下: A=[0 1 1-1;1 0-1 1;1-1 0 1;-1 1 1 0];R=orth(A);D=inv(R)*A*R;P=inv(R)

%所用的变换矩阵 运行后结果显示如下: R =

0.5000

0

0.8660

-0.0000

-0.5000

-0.0000

0.2887

0.8165

-0.5000

0.7071

0.2887

-0.4082

0.5000

0.7071

-0.2887

0.4082 D =

-3.0000

0

0.0000

0.0000

0

1.0000

0

0.0000

-0.0000

0

1.0000

-0.0000

0.0000

0

0.0000

1.0000 P =

0.5000

-0.5000

-0.5000

0.5000

0

0.0000

0.7071

0.7071

0.8660

0.2887

0.2887

-0.2887

0

0.8165

-0.4082

0.4082

例4.5 判断下列矩阵的正定性:

113112;21(1)A1(2)B221; 115315211132;54(3)C2(4)D230

031145解:在MATLAB命令窗口输入:

A=[1,1,-1;1,2,-1;-1,-1,5];B=[1,2,3;2,2,-1;3,-1,5];C=[-3,2,1;2,-3,0;1,0,-3];D=[1,2,-1;2,5,-4;-1,-4,5];lamda_A=eig(A)lamda_B=eig(B)lamda_C=eig(C)lamda_D=eig(D)运行结果为: lamda_A = 0.3542 2.0000 5.6458 lamda_B =-1.8900 3.2835 6.6065 lamda_C =-5.2361-3.0000-0.7639 lamda_D =-0.0000 1.4689 9.5311 矩阵D的第一个特征值显示为“-0.0000”,继续查看为“-1.7351e-017”,那么它是等于零?还是小于零呢? 现在,利用例4.2中求特征值的方法一,再次求解矩阵D的特征值,在MATLAB命令窗口输入: syms k D=[1,2,-1;2,5,-4;-1,-4,5];d=det(D-k*eye(3));% 计算行列式:|D-kI| lamda_D =solve(d)% 求特征方程|D-kI|=0的解

显示结果为: lamda_D = [ 0] [ 11/2+1/2*65^(1/2)] [ 11/2-1/2*65^(1/2)]

从以上符号解中可以看出:

矩阵D的确有一个特征值为零,则它是半正定的。

而计算机在执行Matlab函数eig的运算中,产生了舍入误差。

以下是用求特征值符号形式的方法来判断对称阵正定性的通用程序la11.m: % 判断对称阵的正定性 clear A=input('输入对称阵A:');if A'-A~=0 % 若矩阵不是对称阵,则退出 disp('输入错误');return;% 退出该程序 end n=length(A);% 取矩阵A的阶数 syms k % 定义k为符号变量 d=det(A-k*eye(n));% d为矩阵A的特征多项式

lamda=solve(d);% lamda为矩阵A的符号形式的特征根 lamda=eval(lamda);% 把符号形式变为数值形式 if lamda>0 % 判断特征值是否全部大于零 disp('矩阵A为正定矩阵');elseif lamda>=0 % 判断特征值是否全部大于等于零 disp('矩阵A为半正定矩阵');elseif lamda

输入对称阵A:[1,2,-1;2,5,-4;-1,-4,5] 矩阵A为半正定矩阵

高等代数学习心得

高等代数学习心得当我们备受启迪时,可以寻思将其写进心得体会中,这样能够让人头脑更加清醒,目标更加明确。那么如何写心得体会才能更有感染力呢?下面是小编整理的高等代数学习心......

教学大纲厦门大学高等代数

教学大纲一. 课程的教学目的和要求通过这门课的学习,使学生掌握高等代数的基本知识,基本方法,基本思路,为进一步学习专业课打下良好的基础,适当地了解代数的一些历史,一些背景。要......

高等代数与高等数学

高等代数与高等数学的区别高等代数、数学分析是数学专业中更细的数学研究的分类。高等代数是代数方向的究,而数学分析使用极限方法研究函数特性的数学。而高等数学是对非数学......

浙江大学高等代数试题

浙江大学2006年攻读硕士研究生入学初试试题考试科目:高等代数科目代号:341注意:所有解答必须写在答题纸上,写在试卷或草稿纸上一律无效!一、(15分)矩阵A,B具有相同的行数,把B的任......

复旦大学2000年高等代数

复旦大学高等数20001. 求方阵101111110的逆阵。2. 设A为一个n阶方阵且A的秩等于A的秩。证明A的秩等于A的秩。3. 设A为一个n阶正交阵,x1,x2,,xn1为一组线性无关的列向量,对于1in1......

《高等代数机算讲稿.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
高等代数机算讲稿
点击下载文档
相关专题 水轮机空化讲稿 讲稿 代数 水轮机空化讲稿 讲稿 代数
[其他范文]相关推荐
[其他范文]热门文章
下载全文