Python计算特征值与特征向量案例+传统方法+雅可比Jacobi迭代法

news2024/11/28 11:33:45

目录

{1}几个例子🌰

{2}特征值

{3}奇异矩阵

{4}特征向量

{5}特征值和特征向量的计算方法

特征值性质 

特征向量性质

{6}巩固练习

{7}迭代法 

什么时候收敛?收敛速度如何?

{8}雅可比迭代法


{1}几个例子🌰

例1:

import numpy as np
A = np.array([[3,-1],[-1,3]])
print('输出矩阵A:\n',A)
eigenvalue, eigenvector = np.linalg.eig(A)
print('输出矩阵A特征值eigenvalue:\n',eigenvalue)
print('输出矩阵A特征向量eigenvector:\n',eigenvector)

输出:

输出矩阵A:
 [[ 3 -1]
 [-1  3]]
输出矩阵A特征值eigenvalue:
 [4. 2.]
输出矩阵A特征向量eigenvector:
 [[ 0.70710678  0.70710678]
 [-0.70710678  0.70710678]]

例2:

import numpy as np
A = np.array([[-1,1,0],[-4,3,0],[1,0,2]])
print('打印矩阵A:\n',A)
eigenvalue, eigenvector = np.linalg.eig(A)
print('打印矩阵A特征值:\n',eigenvalue)
print('打印矩阵A特征向量:\n',eigenvector)

输出:

打印矩阵A:
 [[-1  1  0]
 [-4  3  0]
 [ 1  0  2]]
打印矩阵A特征值:
 [2.+0.00000000e+00j 1.+1.57775604e-09j 1.-1.57775604e-09j]
打印矩阵A特征向量:
 [[ 0.        +0.00000000e+00j -0.40824829+3.22058103e-10j
  -0.40824829-3.22058103e-10j]
 [ 0.        +0.00000000e+00j -0.81649658+0.00000000e+00j
  -0.81649658-0.00000000e+00j]
 [ 1.        +0.00000000e+00j  0.40824829+3.22058103e-10j
   0.40824829-3.22058103e-10j]]

例子3:

import numpy as np
A = np.array([[-2,1,1],[0,2,0],[-4,1,3]])
print('输出矩阵A:\n',A)
eigenvalue, eigenvector = np.linalg.eig(A)
print('输出矩阵特征值:\n',eigenvalue)
print('输出矩阵特征向量:\n',eigenvector)

输出:

输出矩阵A:
 [[-2  1  1]
 [ 0  2  0]
 [-4  1  3]]
输出矩阵特征值:
 [-1.  2.  2.]
输出矩阵特征向量:
 [[-0.70710678 -0.24253563  0.30151134]
 [ 0.          0.          0.90453403]
 [-0.70710678 -0.9701425   0.30151134]]

{2}特征值

{3}奇异矩阵

判断矩阵是不是方阵(即行数和列数相等的矩阵。若行数和列数不相等,那就谈不上奇异矩阵和非奇异矩阵)。 

看矩阵的行列式|A|是否等于0,若等于0,称矩阵A为奇异矩阵;若不等于0,称矩阵A为非奇异矩阵。

若|A|≠0可知矩阵A可逆,可逆矩阵就是非奇异矩阵,非奇异矩阵也是可逆矩阵。 

若A为奇异矩阵,则AX=0有无穷解,AX=b有无穷解或者无解。

若A为非奇异矩阵,则AX=0有且只有唯一零解,AX=b有唯一解。

{4}特征向量

一旦己知矩阵的特征值,则通过解上图中式(3.73)给出的齐次线性方程组,可获得对应的特征向量。由于M-\lambda _{i}I是一个奇异矩阵,其对应的简约矩阵至少有1行元素全部为 0,因此,该方程组有无穷多个解。式(3.72) 一个明显的性质是,如果V_{i}是与特征值\lambda _{i}对应特征向量,则其与标量的乘积aV_{i}也为特征向量,a可以为任意非0常数,如果需要,特征向量可以写成单位长度为1的形式。

对于nxm矩阵M来说,当且仅当,对任意的i和j,有M_{ij}=M_{ji},则该矩阵M为对称矩阵。也就是说,一个矩阵的元素相对主对角线对称,则称该矩阵为对称矩阵。

由实数元素组成的对称矩阵M的特征值为实数。

对称矩阵M的两个不同特征值分别对应的特征向量正交。

{5}特征值和特征向量的计算方法

 

特征值性质 

特征向量性质

n 阶矩阵A 的互不相等的特征值\lambda _{1},\lambda _{2},...,\lambda _{m}对应的特征向量\xi _{1},\xi _{2},...,\xi _{m}线性无关。

\lambda _{i}为矩阵A的k重特征值,则属于特征值\lambda _{i}的线性无关的特征向量的个数不超过其特

征值的重数k

\xi _{1},\xi _{2}为特征值\lambda _{i}对应的特征向量,则其非零线性组合k_{1}\xi _{1}+k_{2}\xi _{2}k_{1},k_{2}为不全为零

的常数)也是属于特征值入\lambda _{i}的特征向量。

{6}巩固练习

例1

解答

import numpy as np
A = np.array([[1,2,2],[2,1,2],[2,2,1]])
print('输出矩阵A:\n',A)
eigenvalue, eigenvector = np.linalg.eig(A)
print('输出矩阵特征值:\n',eigenvalue)
print('输出矩阵特征向量:\n',eigenvector)
输出矩阵A:
 [[1 2 2]
 [2 1 2]
 [2 2 1]]
输出矩阵特征值:
 [-1.  5. -1.]
输出矩阵特征向量:
 [[-0.81649658  0.57735027  0.03478434]
 [ 0.40824829  0.57735027 -0.72385699]
 [ 0.40824829  0.57735027  0.68907264]]

例2

解答

import numpy as np
A = np.array([[2,-3,1],[1,-2,1],[1,-3,2]])
print('输出矩阵A:\n',A)
eigenvalue, eigenvector = np.linalg.eig(A)
print('输出矩阵特征值:\n',eigenvalue)
print('输出矩阵特征向量:\n',eigenvector)
输出矩阵A:
 [[ 2 -3  1]
 [ 1 -2  1]
 [ 1 -3  2]]
输出矩阵特征值:
 [1.45253876e-15 1.00000000e+00 1.00000000e+00]
输出矩阵特征向量:
 [[ 0.57735027  0.86169762 -0.01087995]
 [ 0.57735027  0.39386989  0.31294319]
 [ 0.57735027  0.31991206  0.94970953]]

例3

解答

import numpy as np
A = np.array([[2,-1,2],[5,-3,3],[-1,0,-2]])
print('输出矩阵A:\n',A)
eigenvalue, eigenvector = np.linalg.eig(A)
print('输出矩阵特征值:\n',eigenvalue)
print('输出矩阵特征向量:\n',eigenvector)
输出矩阵A:
 [[ 2 -1  2]
 [ 5 -3  3]
 [-1  0 -2]]
输出矩阵特征值:
 [-0.99999912+1.51927785e-06j -0.99999912-1.51927785e-06j
 -1.00000175+0.00000000e+00j]
输出矩阵特征向量:
 [[-0.57735027+8.77151627e-07j -0.57735027-8.77151627e-07j
   0.57735027+0.00000000e+00j]
 [-0.57735078+0.00000000e+00j -0.57735078-0.00000000e+00j
   0.57734926+0.00000000e+00j]
 [ 0.57734976-1.75430479e-06j  0.57734976+1.75430479e-06j
  -0.57735128+0.00000000e+00j]]

{7}迭代法 

什么时候收敛?收敛速度如何?

​​​​​​​

{8}雅可比迭代法

 

常数向量: 

 

 


参考:

https://www.cnblogs.com/brightyuxl/p/9296623.html

雅可比(Jacobi)迭代法 - 百度文库

利用Python计算各个矩阵的特征向量和最大特征值 python 求特征值_恋上一只猪的技术博客_51CTO博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/779874.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Moshi Vs Gson Vs Kotlin Serialisation性能PK

Moshi Vs Gson Vs Kotlin Serialisation 定义 Gson Gson 是一个Java序列化/反序列化库,用于将Java对象转换为JSON格式,以及将JSON格式转换回Java对象。 Moshi Moshi 是一个现代化的JSON库,适用于Android和Java。它使得将JSON解析为Java对…

Django基本数据库操作

Django基本数据库操作 文章目录 Django基本数据库操作👨‍🏫内容一:基本数据库配置👨‍🔬内容二:ORM基本操作 👨‍🏫内容一:基本数据库配置 👉Django是一个流…

整车总线系列——FlexRay 四

整车总线系列——FlexRay 四 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能…

机器学习方法与原则

机器学习方法与原则 评价指标 TODO 训练集、验证集与测试集 训练集与测试集 训练集(作业): 模型可见样本标签,用于训练模型,样本数量有限。 在训练集上表现好的模型, 在其它未见样本上一定表现好么&am…

【Java】Clonable 接口

如何克隆一个引用所指的对象呢?首先一个前提,他是可克隆的,我们要实现一个Clonable 接口。我们来看一个这个接口: 可以发现里面是空的,我们把这种空接口叫做标记接口,作用就是表示当前对象是可以被克隆的。…

面试 | 双法妙解压缩字符串【遍历统计 + 双指针】

一、题目描述 原题传送门 二、思路分析 首先我们来分析一下解决本题所需要的思路 题目的意思很简单,就是统计原本的字符串中的每个字符出现的次数,然后以【字符,出现的次数】这样的结构来字符串,以起到一个压缩的效果&#xff0c…

Fiddler抓包实战,彻底打通接口测试(二)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 请求查看 Inspec…

Spring简述IOC入门案例

文章目录 Spring学习笔记Spring:Spriing framework:IoC(控制反转)对象的创建控制权由程序转移到外部:DI( Dependency Injection )依赖注入: IoC入门案例:项目结构:applicationContext.xml:bookD…

mysql-5.7 Linux安装教程

通过命令下载: 下载到 cd /usr/local 这个路径下 wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz 解压: tar -zxvf mysql-5.7.36-linux-glibc2.12-x86_64.tar.gz 将解压的 重命名 为mysql mv mysql-5…

B/S架构的云HIS系统源码 技术架构:Angular+Nginx+ Java+Spring

基于云计算技术的B/S架构的HIS系统源码,为基层医疗机构提供标准化的、信息化的、可共享的医疗信息管理系统,实现医患事务管理和临床诊疗管理等标准医疗管理信息系统的功能。系统利用云计算平台的技术优势,建立统一的健康档案存储平台&#xf…

seatunnel hive source 未设置分隔符导致多个字段合并成一个的问题定位解决

seatunnel hive source 未设置分隔符导致多个字段没有切分全保存在一个字段中了,翻看源码发现分隔符是是通过delimiter设置的,只要设置这个delimiter","就可以了。 设置这个属性 delimiter“,” 他的默认值是\u0001,如果没有设置delimiter属性则会根据文件类型判断…

Flink写入数据到Doris

文章目录 1.Doris建表2.Doris依赖3.Bean实体类4.Doris业务写入逻辑5.测试写入类6.发送数据 1.Doris建表 Doris中建表 CREATE TABLE IF NOT EXISTS demo.user (id INT NOT NULL,name VARCHAR(255),age INT ) DISTRIBUTED BY HASH(id) PROPERTIES ("replication_num&qu…

前端工程化第三章:webpack5基础(下)

文章目录 1. TypeScript支持(ts-loader)1.1. ts-loader1.1.1. webpack.config.js1.1.2. tsconfig.json1.1.3. src/index.ts 1.2. 使用babel-loader将ts转换为js1.2.1. webpack.config.js1.2.2. src/index.ts 2. 代码规范检查(Eslint&#xff…

「深度学习之优化算法」(十八)头脑风暴算法

1. 头脑风暴算法简介 (以下描述,均不是学术用语,仅供大家快乐的阅读)   可能大家对“头脑风暴”这个词不怎么熟,毕竟是外来词汇,其大概含义就是分组讨论,畅所欲言。   头脑风暴算法(Brain Storm Optimization)是根据人们进行“头脑风暴”讨论困难问题的解决方案的过…

RabbitMQ消息可靠性问题及解决

说明:在RabbitMQ消息传递过程中,有以下问题: 消息没发到交换机 消息没发到队列 MQ宕机,消息在队列中丢失 消息者接收到消息后,未能正常消费(程序报错),此时消息已在队列中移除 …

Android WiFi框架概览

概览 Android 提供默认 Android 框架实现,其中包括对各种 WLAN 协议和模式的支持,这些协议和模式包括: WLAN 基础架构 (STA)网络共享模式或仅限本地模式下的 WLAN 热点 (Soft AP)WLAN 直连(点对点)WLAN 感知 (NAN)WL…

3.19 Bootstrap 面板(Panels)

文章目录 Bootstrap 面板(Panels)面板标题面板脚注带语境色彩的面板带表格的面板带列表组的面板 Bootstrap 面板(Panels) 本章将讲解 Bootstrap 面板(Panels)。面板组件用于把 DOM 组件插入到一个盒子中。创…

Python采集某网站小视频内容, m3u8视频内容下载

目录标题 前言环境使用:模块使用:代码实现步骤代码展示尾语 前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! 环境使用: python 3.8 运行代码 pycharm 2021.2 辅助敲代码 模块使用: import requests >>> pip install requests 内置模块 你安装好python环境就…

【机器学习】支持向量机SVM入门

优化目标 相较于之前学习的线性回归和神经网络,支持向量机(Supprot Vector Machine,简称SVM)在拟合复杂的非线性方程的时候拥有更出色的能力,该算法也是十分经典的算法之一。接下来我们需要学习这种算法 首先我们回顾…

ffplay播放器剖析(4)----音频输出和音频重采样流程

文章目录 1. 音频输出模块1.1 音频输出流程1.2 音频输出模型图 2. 打开SDL音频设备audio_open详解sdl_audio_callbackaudio_decode_frame 3. 音频重采样样本补偿 1. 音频输出模块 1.1 音频输出流程 打开SDL音频设备,设置参数启动SDL音频设备播放SDL音频回调函数读取数据,也就…