【计算方法与科学建模】矩阵特征值与特征向量的计算(四):乘幂法及其python实现

文章目录

  • 一、Jacobi 旋转法
  • 二、Jacobi 过关法
  • 三、Householder 方法
  • 四、乘幂法

  矩阵的特征值(eigenvalue)和特征向量(eigenvector)在很多应用中都具有重要的数学和物理意义。

  本文将详细介绍乘幂法的基本原理和步骤,并给出其Python实现。

一、Jacobi 旋转法

  Jacobi 旋转法的每一次迭代中,需要选择一个非对角元素最大的位置,然后构造相应的旋转矩阵,进行相似变换,使得矩阵逐渐对角化。

【计算方法与科学建模】矩阵特征值与特征向量的计算(一):Jacobi 旋转法及其Python实现

二、Jacobi 过关法

  Jacobi 过关法(Jacobi’s threshold method)是 Jacobi 旋转法的一种改进版本,其主要目的是减少计算工作和提高运行速度。该方法通过动态调整阈值,并根据阈值对非对角元素进行选择性的旋转变换,以逐步对角化对称矩阵。
【计算方法与科学建模】矩阵特征值与特征向量的计算(二):Jacobi 过关法及其Python实现(Jacobi 旋转法的改进)

三、Householder 方法

  如果对任意向量 z z z,我们可以将其分解为与 u u u 平行的分量 a u au au 和与 u u u 正交的分量 b v bv bv,即 z = a u + b v z = au + bv z=au+bv,那么 Householder 变换会将 z z z 变换为 − a u + b v -au + bv au+bv。这个变换可以理解为镜面反射,它不改变向量在与 u u u 正交的平面上的投影,但将向量沿着 u u u 的方向反射。数学表达式为:

H z = a u + b v → − a u + b v Hz = au + bv \rightarrow -au + bv Hz=au+bvau+bv

  这个性质使得 Householder 变换在一些数值计算的应用中非常有用,例如矩阵三对角化、 QR 分解等。
【计算方法与科学建模】矩阵特征值与特征向量的计算(三):Householder方法及其Python实现

四、乘幂法

PS:乘幂法具体内容解析,待明日完善……

import numpy as npdef normalize_vector(vec):# 计算向量的最大分量max_val = np.max(np.abs(vec))# 对向量进行规范化return vec / max_val, max_valdef power_iteration(A, x, max_iter=100, tol=1e-6):for i in range(max_iter):# 计算矩阵与向量的乘积Ax = np.dot(A, x)# 对乘积结果进行规范化x, max_val = normalize_vector(Ax)# print(x)# 计算对应的特征值eigenvalue = np.dot(Ax, x) / np.dot(x, x)return x, eigenvalue# 给定矩阵 A
A = np.array([[-4, 14, 0],[-5, 13, 0],[-1, 0, 2]])# 初始向量
x0 = np.array([1, 1, 1])# 运行乘幂法迭代
result_vector, eigenvalue = power_iteration(A, x0)print("估计的特征向量:", result_vector)
print("估计的特征值:", eigenvalue)

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

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

相关文章

【JavaSE】基础笔记 - 异常(Exception)

目录 1、异常的概念和体系结构 1.1、异常的概念 1.2、 异常的体系结构 1.3 异常的分类 2、异常的处理 2.1、防御式编程 2.2、异常的抛出 2.3、异常的捕获 2.3.1、异常声明throws 2.3.2、try-catch捕获并处理 3、自定义异常类 1、异常的概念和体系结构 1.1、异常的…

datasets.Dataset.map方法学习笔记

Dataset.map 方法概要 可以将datasets中的Dataset实例看做是一张数据表。map方法会将输入的function按照指定的方式应用在每一行(每一行称为一个example)上。本文采用一下示例进行说明: from datasets import Dataset # datasets.__versi…

前端开发工具集合

文章目录 Visual Studio Code (VS Code)安装及配置一、安装二、常用插件三、相关配置四、统一配置代码 Visual Studio Code (VS Code)安装及配置 一、安装 下载地址:https://code.visualstudio.com/ ?> VS Code 下载慢,解决办法请点击 双击下载文件…

Java零基础——SpringMVC篇

1.SpringMVC介绍 SpringMVC是Spring框架中的一个组件,是一个轻量级的web的MVC框架,充当controller,其本质就是一个Servlet。 1.1 传统Servlet的不足 每个请求,都需要定义一个Servlet。虽然可以在service方法中,根据业务标识进行…

【Linux 带宽限速】trickle,限制docker 上传速度

限制docker 上传速度 然而,你可以使用第三方工具来实现这个目的。一个常用的工具是 trickle,它可以模拟网络带宽。 首先,你需要安装 trickle。在 Ubuntu 上,可以使用以下命令安装: sudo apt-get install trickle然后…

deepxde 源码阅读笔记(长期更新)

2023.11.23 阅读的deepxde version: 1.9.0 1. train_aux_vars ,即pde当中的第三个参数 这个变量的含义困惑很久。最后发现就是operator learning的PDEs方程parameters。 脉络:def pde aux_vars-> deepxde目前支持tf1最多,但是对其他框架…

系列二、Spring整合单元测试

一、概述 Spring中获取bean最常见的方式是通过ClassPathXmlApplicationContext 或者 AnnotationConfigApplicationContext的getBean()方式获取bean,那么在Spring中如何像在SpringBoot中直接一个类上添加个SpringBootTest注解,即可在类中注入自己想要测试…

优秀的企业协同OA系统如何促进团队协作?

优秀的企业协同OA系统可以帮助团队协同工作变得更简单、更高效。 一、以下是一些优秀的企业协同OA系统可以帮助团队协作的方法: 1、提高工作效率 优秀的企业协同OA系统可以提高工作效率,减少工作的重复性和低效率。例如,可以使用共享日历和…

vue2生命周期

前言 vue的生命周期其实可以分为两块,一个是vue实例的生命周期,一个是组件的生命周期。 vue实例的生命周期方法共有4个:$mout,$forceUpdate,$nextTick,$destroy vue组件的生命周期钩子共有8个:beforeCreate,created,beforeMount,mounted,beforeUpdate, updated,beforeDestr…

C/C++小写字母的判断 2022年3月电子学会中小学生软件编程(C/C++)等级考试一级真题答案解析

目录 C/C小写字母的判断 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C小写字母的判断 2022年3月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 输入一个字符,判断是否是英文小…

iframe内部子页面与外部主页面通讯

文章目录 一、问题二、解决2.1、子页面2.2、主页面 三、知识点3.1、[浏览器兼容性](https://developer.mozilla.org/zh-CN/docs/Web/API/Window/postMessage#%E6%B5%8F%E8%A7%88%E5%99%A8%E5%85%BC%E5%AE%B9%E6%80%A7)3.2、详解3.2.1、发送方3.2.2、接收方 一、问题 如上所示&a…

被删数据库+勒索

被删数据库勒索 – WhiteNights Site 标签:日志 快照在手,天下我有 服务器又给人黑了。这次是给人黑了数据库,被人删库勒索,先放图吧。我还花了今天一个下午的时间查修这个漏洞,导致网站有接近6个小时都没法访问。 …

编程示例: Session Id的生成

实现思路 Session的实现方式如下:在用户第一次登录的时候,系统为它分配一个唯一Id(被称为Session Id)作为标识,并且 记录下这个用户的用户名、要登录的账套名、用户拥有的权限等,以Id为键,用户名、账套名等信息为值保…

云原生Kubernetes系列 | Kubernetes静态Pod的使用

云原生Kubernetes系列 | Kubernetes静态Pod的使用 静态pod不建议在master上操作,因为master上跑的是集群核心静态pod,如果配置失败,会导致集群故障。建议在knode1或knode2上去做。 kubernetes master节点上的核心组件pod其实都是静态pod: [root@k8s-master ~]# ls /etc/ku…

java中锁的使用-实战

技术主题 技术原理 在实际的业务中,为了保证线程安全,会进行对一些逻辑进行加锁,保证当前只有一个线程在操作。在代码中,我们经常使用两种方式进行加锁,来保证线程安全。一种是synchronized关键字,另一种是ReentrantLock加锁。写这一份的博客,就是为了记录下锁的基本使…

五分钟,Docker安装flink,并使用flinksql消费kafka数据

1、拉取flink镜像,创建网络 docker pull flink docker network create flink-network2、创建 jobmanager # 创建 JobManager docker run \-itd \--namejobmanager \--publish 8081:8081 \--network flink-network \--env FLINK_PROPERTIES"jobmanager.rpc.ad…

Redis 命令行 redis-cli 介绍

文章目录 前言1. 连接 Redis 服务2. 从其他程序获取输入3. 连续执行相同的命令4. CSV 输出5. 输出帮助信息6. 清空屏幕7. 连续监控统计信息8. 输出大 key 报告9. 监控 Redis 执行的命令 前言 redis-cli 是 Redis 自带的命令行工具,是运维和开发人员常用的工具&…

【C++干货铺】适配器 | stack | queue

个人主页点击直达:小白不是程序媛 C系列学习专栏:C干货铺 代码仓库:Gitee 目录 stack的介绍和使用 stack的介绍 stack的使用 queue的介绍和使用 queue的介绍 queue的使用 容器适配器 什么是适配器 STL中stack和queue的底层结构 d…

Doris扩容和缩容(六)

Doris 可以很方便的扩容和缩容 FE、BE、Broker 实例。 FE 扩容和缩容 可以通过将 FE 扩容至 3 个以上节点来实现 FE 的高可用。 1)使用 MySQL 登录客户端后,可以使用 sql 命令查看 FE 状态,目前就一台 FE mysql -h hadoop1 -P 9030 -uroo…

Python——基于YOLOV8的车牌识别(源码+教程)

目录 一、前言 二 、完成效果 三、 项目包 四、运行项目 (教程) 一、前言 YOLOv8LPRNet车牌定位与识别https://www.bilibili.com/video/BV1vk4y1E7MZ/ 最近做了有一个车牌识别的小需求,今天完成了,在此记录和分享 首先&#x…