矩阵对角化

article/2025/9/22 14:47:07

一、矩阵对角化的理论
一个映射或者一个线性变换,都有一个矩阵和它相对应。矩阵或者映射是不是可以对角化,对工程应用来说比较重要,因为对角化后的矩阵,乘积简单,经过多次变换的话,相当于矩阵的多次方。矩阵能不能对角化,取决于它的特称向量能否构成矩阵的一个基。
1.在域 F 上的 n × n 矩阵 A 是可对角化的,当且仅当它的特征空间的维度等于 n,它为真当且仅当存在由 A 的特征向量组成的Fn的基。如果找到了这样的基,可以形成有基向量作为纵列的矩阵 P,而 P-1AP 将是对角矩阵。这个矩阵的对角元素是 A 的特征值。
2. 线性映射 T : V → V 是可对角化的,当且仅当它的特征空间的维度等于 dim(V),它为真当且仅当存在由 T 的特征向量组成的 V 的基。T 关于这个基将表示为对角矩阵。这个矩阵的对角元素是 T 的特征值。
另一个特征化: 矩阵或线性映射在域 F 上可对角化的,当且仅当它的极小多项式在 F 上有不同的线性因子。

下列充分(但非必要)条件经常是有用的。
1. n × n 矩阵 A 只在域 F 上可对角化的,如果它在 F 中有 n 个不同的特征值,就是说,如果它的特征多项式在 F 中有 n 个不同的根。
2. 线性映射 T : V → V 带有 n=dim(V) 是可对角化的,如果它有 n 个不同的特征值,就是说它的特征多项式在 F 中有 n 个不同的根。
3. 在域 F 上的 n × n 矩阵 A,如果重根的维数等于其线性无关的特征向量的个数,则矩阵A可以对角化。
4.
二、矩阵对角化过程
下面例子中,矩阵A是对称的,它可以进行对角化,虽然它只有2个不同的特征值,但是有4个线性无关的特征向量,所以能进行对角化。
给定矩阵A,求它的特征值、特征向量,并对它进行对角化。
(1)求特征多项式,matlab命令p= poly(A);
(2)求解特征多项式,求出特征值,solve(P);
(3)分别将特征值带入齐次方程组,求出基础解系
(4)针对每个特征值下的基础解系,进行正交化。
(5)对正交化后的向量单位化

例子:已知这里写图片描述

求出一正交矩阵 使 成对角形.
解:先求出的 特征值.由这里写图片描述

即得的特征值为 (三重), .
其次,求属于1的特征向量.把 代入这里写图片描述
(*)
求得基础解系为

把它们正交化,得这里写图片描述

再单位化,得这里写图片描述
这里写图片描述

这是属于三重特征值 三个标准正交的特征向量.
再求属于 的特征向量.用代入(*)式求得其基础解系为 .
把它单位化,得.
特征向量 构成的一组标准正交基,所求的正交矩阵为这里写图片描述
.
这里写图片描述
.
三、matlab实现过程
(1)求特征多项式和特征值

clc
clear all
A=[0 1 1 -1;1 0 -1 1 ;1 -1 0 1;-1 1 1 0]
p=poly(A)
% p = 1.0000 0 -6.0000 8.0000 -3.0000
p1=poly2str(p,’x’)
% p1 = x^4 - 6 x^2 + 8 x - 3
p2=sym(‘x^4 - 6 x^2 + 8 x - 3’) %怎样引用前面的平p1
s1=solve(p2) %查看 s1 =-3
1
1
1
(2)求1的特征向量
B=1*eye(4,4)-A
c=rref(B);

% c =

% 1 -1 -1 1
% 0 0 0 0
% 0 0 0 0
% 0 0 0 0
%相当于 x1-x2-x3+x4=0
%4个未知数,一个方程,有三个自由变量,自行设置 x1=1 ,x2=1,x3=0,de x4=0
x1=1 ,x2=0,x3=1,de x4=0
x1=-1 ,x2=0,x3=0,de x4=1
%得一个基础解系
a1=[1 1 0 0];
a2=[1 0 1 0];
a3=[-1 0 0 1];
%对上面的3个向量正交化
b1=a1;
b2=a2-a2.*b1/sqrt(b1.*b1);
b3=a3-a3.*b1/sqrt(b1.*b1)-a3.*b2/sqrt(b2.*b2);
format rat %分数显示
jie=[b1;b2;b3]’

%jie =

1.0000    0.5000   -0.0000
1.0000   -0.5000    1.00000    0.5000    1.00000   -0.5000    2.0000

jie(abs(jie)<0.0001)=0;
%单位化
format short
d1=jie(:,1)/norm(jie(:,1));
d2=jie(:,2)/norm(jie(:,2));
d3=jie(:,3)/norm(jie(:,3));

format rat %分数显示

D=[d1,d2,d3]
format rat %分数显示
D =

0.7071    0.5000   -0.0000
0.7071   -0.5000    0.40820    0.5000    0.40820   -0.5000    0.8165

% D’*D

ans =

1.0000    0.0000    0.2887
0.0000    1.0000   -0.4082
0.2887   -0.4082    1.0000

这时第1个列向量和第三个列向量内积不为0,有误差,难道前面的正交化过程有误?

尝试改进一下
b1=a1;
b2=a2 -(a2*b1’/(b1*b1’))*b1;
b3=a3-(a3*b1’/ (b1*b1’))*b1-(a3*b2’/ (b2*b2’))*b2;
format rat %分数显示
jie=[b1;b2;b3]’
jie =

1.0000    0.5000   -0.3333
1.0000   -0.5000    0.33330    1.0000    0.33330         0    1.0000

d1=jie(:,1)/norm(jie(:,1));
d2=jie(:,2)/norm(jie(:,2));
d3=jie(:,3)/norm(jie(:,3));
D =

0.7071    0.4082   -0.2887
0.7071   -0.4082    0.28870    0.8165    0.28870         0    0.8660

D’*D

ans =

1.0000         0         00    1.0000   -0.00000   -0.0000    1.0000

(3)求-3的特征向量
B2=(-3)*eye(4,4)-A
C2=rref(B2)

%C2 =

 1     0     0    -10     1     0     10     0     1     10     0     0     0

有1个自由变量,取x1=1 得x4=1;x2=-1;x3=-1;
cc=[1 -1 -1 1]
cc=cc/norm(cc);

(4) T=[D,cc]
(5) T=[D,cc’]

T =

0.7071 0.4082 -0.2887 0.5
0.7071 -0.4082 0.2887 -0.5
0 0.8165 0.2887 -0.5
0 0 0.8660 0.5

T’*A*T
ans =

1.0000         0         0         00    1.0000   -0.0000         00         0    1.0000    0.00000         0         0   -3.0000

三 使用matlab函数分解

clc
clear all
A=[0 1 1 -1;1 0 -1 1 ;1 -1 0 1;-1 1 1 0]

[U,S,V]=svd(A,0)
U =

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

S =

3.0000         0         0         00    1.0000         0         00         0    1.0000         00         0         0    1.0000

% 特征值前面是-3,在这是3;这个影响大不大?
V =

-0.5000 0 0.8660 0
0.5000 0 0.2887 0.8165
0.5000 0.7071 0.2887 -0.4082
-0.5000 0.7071 -0.2887 0.4082

[m,n] = size(A);
if m > 1, s = diag(S);
elseif m == 1, s = S(1);
else s = 0;
end
tol = max(m,n) * max(s) * eps(class(A));
r = sum(s > tol);
Q = U(:,1:r);
Q =

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
Q’*Q

ans =

1.0000         0   -0.0000   -0.00000    1.0000         0   -0.0000

-0.0000 0 1.0000 -0.0000
-0.0000 -0.0000 -0.0000 1.0000
U*S*V’

ans =

0.0000    1.0000    1.0000   -1.0000
1.0000   -0.0000   -1.0000    1.0000
1.0000   -1.0000   -0.0000    1.0000

-1.0000 1.0000 1.0000 -0.0000
U-Q

ans =

 0     0     0     00     0     0     00     0     0     00     0     0     0

Q*S*Q’

ans =

1.5000   -0.5000   -0.5000    0.5000

-0.5000 1.5000 0.5000 -0.5000
-0.5000 0.5000 1.5000 -0.5000
0.5000 -0.5000 -0.5000 1.5000

Q*S*V’

ans =

0.0000    1.0000    1.0000   -1.0000
1.0000   -0.0000   -1.0000    1.0000
1.0000   -1.0000   -0.0000    1.0000

-1.0000 1.0000 1.0000 -0.0000
Q*S*V’= U*S*V’,需要注意的是,U和V虽然十分相似,但符号不同,所以U和V不能互相代替。


http://chatgpt.dhexx.cn/article/IrXiNhPf.shtml

相关文章

实对称矩阵必可正交对角化证明

我的小程序&#xff1a; 待办计划&#xff1a;给自己立个小目标吧&#xff01; n阶矩阵A可正交对角化的充分条件是A是实对称矩阵&#xff0c;即若A是实对称矩阵则A必可正交对角化。 首先&#xff0c;有以下定理&#xff1a; 若的特征值为&#xff0c;且&#xff0c;则存在正交…

实对称阵的正交相似对角化

一、正交向量组与正交矩阵 正交向量组的定义&#xff0c;是一组非零向量&#xff0c;且两两正交&#xff0c;那么这组向量&#xff0c;则成为正交向量组。 两个向量正交的意思是&#xff0c;两个向量的内积为0&#xff0c;什么是两个向量的内积&#xff0c;就是向量内对应元素…

线性代数笔记5.3实对称矩阵的对角化

5.3实对称矩阵的对角化 正交矩阵 概念 A是一个n阶方阵 有A转置A E&#xff0c;那么这个矩阵就是正交矩阵 性质 若A是正交矩阵&#xff0c;|A| 1或 -1若A是正交矩阵&#xff0c;A的逆 A的转置 且A逆和A转置均为正交A,B正交&#xff0c;AB也正交若A正交&#xff0c;α&am…

实对称矩阵对角化为什么要做正交化单位化操作呢?

今天晚上王小民同学问了助教姐姐一个问题&#xff0c;为什么对一个一般的矩阵对角化的时候&#xff0c;我们不用做正交单位化&#xff0c;对实对称矩阵对角化的时候却要做呢&#xff1f;这是一个很好的问题&#xff0c;所以和大家分享一下。 最后的结论就是&#xff1a;如果不…

npm构建报错 code ELIFECYCLE解决办法

使用npm构建报错 code ELIFECYCLE 解决办法&#xff0c;进入工作目录 $ rm -rf node_modules $ rm -rf package-lock.json $ npm cache clear --force $ npm install

code ELIFECYCLE npm ERR! errno 1

最近遇到一个项目&#xff0c;npm下来报错errno -40048。 网上帖子有的说npm降级到5.3.0就行&#xff0c;试了直接errno -5 &#xff0c;也还是不行。又有人说下载新的node.js覆盖就行&#xff0c;这里吐槽一下新版的node&#xff08;node-v14.15.1-x64&#xff09;&#xff0…

npm ERR! code ELIFECYCLE报错解决

最近多次遇到这个问题&#xff0c;然而网上的方法对我无效。。。 我是通过解决插件之间版本搭配问题来解决这个报错的&#xff0c;这一点我在博文webpack安装成功后的run build填坑之旅中也有写到&#xff0c;但可能内容太多&#xff0c;不显眼。。。 我本地的node.js是12.6.0c…

Vue错误跳坑:npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! newbee@0.1.0 serve: `vue-cli-service serv

废话不说&#xff0c;直接解决&#xff1a; 1、&#xff08;别删除package.json&#xff0c;删除package-lock.json&#xff09; 2、重新安装&#xff1a;npm install 重新安装后package-lock.json文件会重新生成 3、再次运行&#xff1a;npm run dev就成功了

启动Vue项目报错“npm ERR! code ELIFECYCLE”

由于之前一直是npm和cnpm混着用&#xff0c;也没啥问题&#xff0c;今天在启动Vue项目的时候&#xff0c;却碰见了一个错误“npm ERR! code ELIFECYCLE”&#xff0c;一开始是用npm run启动的&#xff0c;后来换成cnpm run也不行。 查了一下资料&#xff0c;网上大多都说是因为…

npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! test_vue_0613@1.0.0 dev: 错误的解决方法

在命令行中使用命令 npm run dev运行从网上下载的一个vue项目时出现了以下报错 npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! test_vue_06131.0.0 dev: node build/dev-server.js npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the test_vue_06131.0.0 dev scri…

npm ERR! code ELIFECYCLE的解决

在使用npm run dev启动程序时&#xff0c;报出如下错误&#xff1a; npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! datav.jiaminghi.com2.0.0 dev: vuepress dev docs npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the datav.jiaminghi.com2.0.0 dev script.…

vue运行报错npm ERR! code ELIFECYCLE npm ERR! errno 9009

项目场景&#xff1a; 最近写代码VScode终端运行项目过程中出现中断运行的情况&#xff0c;人狠话不多&#xff0c;直接上报错图&#xff0c;如下 问题描述 原因分析&#xff1a; 刚开始其实是报134&#xff0c;后来查资料捣鼓了半天开始报9009&#xff0c;不过参阅资料表示本…

VUE项目执行npm run dev报错 npm ERR! code ELIFECYCLE npm ERR! errno 134 npm ERR wisdom-shipping-agent.....

完整报错如下&#xff1a; 纯后端选手&#xff0c;拉前端代码方便自测&#xff0c;遇到如下问题&#xff0c;搜集资料得以解决&#xff0c;记录一下&#xff01; 原因&#xff1a;内存溢出 解决办法&#xff1a; 1.进入工程目录下执行命令&#xff1a; npm install -g incr…

webstorm打包,运行package.json时,dev出现code ELIFECYCLE问题如下图

先看自己是否安装成功node.js 进入黑窗口输入node -v查看node.js版本 npm -v查看npm版本 webpack查看是否安装成功 webpack -v查看 查询安装成功&#xff0c;已配置 查询任务管理器发现node.js未启动&#xff0c;重启node.js解决问题。

npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! vue-ts-vite@0.0.0 dev: `vite` npm ERR! Exit statu

一、先看报错 报错截图&#xff1a; 报错信息&#xff1a; npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! vue-ts-vite0.0.0 dev: vite npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the vue-ts-vite0.0.0 dev script. npm ERR! This is probably not a pro…

code ELIFECYCLE

VS Code 上传到远程仓库报错&#xff0c;错误信息如下&#xff1a; 查看日志&#xff0c;这个是由于安装node_modules时候部分依赖包没有下载&#xff0c;运行 npm install typescript-eslint/eslint-pluginlatest --save-dev 安装缺失的依赖。 或删除yarn.lock文件和node_mo…

【问题解决】npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! newbee@0.1.0 serve: `vue-cli-service serv

Plan 在本地运行ids项目. Do 执行npm run serve,报如下错误 npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! newbee0.1.0 serve: vue-cli-service serve npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the newbee0.1.0 serve script. npm ERR! This is probab…

解决:npm ERR code ELIFECYCLE npm ERR errno 1(安装脚手架过程中,在npm run dev 时发生错误)

解决&#xff1a;npmERR! code ELIFECYCLEnpm ERR! errno 1问题 今天在自己学习react时候遇到了一个问题&#xff0c;就是在自己执行npm start运行项目时&#xff0c;产生了如下报错&#xff0c;在vue3也可以同样适用删掉node_modules重新按一边&#xff0c;再 npm i 一下即可…

解决:npm ERR! code ELIFECYCLE npm ERR! errno 1

解决&#xff1a;npm ERR! code ELIFECYCLEnpm ERR! errno 1问题 今天在自己学习react时候遇到了一个问题&#xff0c;就是在自己执行npm start运行项目时&#xff0c;产生了如下报错 然后我自己稀里糊涂的弄了好几遍&#xff0c;瞎弄一通&#xff0c;只会产生更多的报错。最…

npm ERR code ELIFECYCLEnpm ERR errno 1报错

解决 &#xff1a;在文件&#xff0c;端口都无变换的情况下 可能是环境变量的path丢失了