当前位置: 首页 > news >正文

Arnoldi Iteration 思考

文章目录

  • 1. 投影平面
  • 2. Arnoldi Iteration
  • 3. python 代码

1. 投影平面

假设我们有一个向量q,我们需要关于向量q,构建一个投影平面P,使得给定任何向量v,可以通过公式 p = P v p=Pv p=Pv,快速得到向量v在投影平面P上的投影向量p.

  • 计算向量内积,向量v在向量q上的投影长度|p|
    v T q = ∣ v ∣ ∣ q ∣ cos ⁡ θ = ∣ p ∣ ∣ q ∣ → ∣ p ∣ = v T q ∣ q ∣ \begin{equation} v^Tq=|v||q|\cos{\theta}=|p||q|\rightarrow |p|=\frac{v^Tq}{|q|} \end{equation} vTq=v∣∣qcosθ=p∣∣qp=qvTq
  • 我们知道,q方向上的单位向量为 q ∣ q ∣ \frac{q}{|q|} qq,那么投影向量p可得, v T q v^Tq vTq为标量,随便放位置
    p = ∣ p ∣ ⋅ q ∣ q ∣ = v T q ∣ q ∣ ⋅ q ∣ q ∣ = v T q q T q q \begin{equation} p=|p|\cdot \frac{q}{|q|} =\frac{v^Tq}{|q|}\cdot \frac{q}{|q|}=\frac{v^Tq}{q^Tq}q \end{equation} p=pqq=qvTqqq=qTqvTqq
  • 重点!内积可以随便转换,并且标量位置可以随便放!
    v T q = q T v \begin{equation} v^Tq=q^Tv \end{equation} vTq=qTv
  • 整理可得:
    p = q T v q T q q = q T v q q T q \begin{equation} p=\frac{q^Tv}{q^Tq}q=\frac{q^Tvq}{q^Tq} \end{equation} p=qTqqTvq=qTqqTvq
  • 标量位置随意可得: q T v q → q q T v q^Tvq\rightarrow qq^Tv qTvqqqTv
    p = q T v q q T q = q q T q T q v \begin{equation} p=\frac{q^Tvq}{q^Tq}= \frac{qq^T}{q^Tq}v \end{equation} p=qTqqTvq=qTqqqTv
  • 第一个是投影矩阵P
    P = q q T q T q , p = P v \begin{equation} P=\frac{qq^T}{q^Tq},p=Pv \end{equation} P=qTqqqT,p=Pv
  • 第二,快速计算一个向量v在向量q上的投影p
    p = q T v q q T q \begin{equation} p=\frac{q^Tvq}{q^Tq} \end{equation} p=qTqqTvq
  • 第三,当q为单位向量的时候, q T q = ∣ q ∣ 2 = 1 q^Tq=|q|^2=1 qTq=q2=1,像不像二次型形式,就是这么神奇!
    p = q T v q \begin{equation} p=q^Tvq \end{equation} p=qTvq
  • 第四 ,一般情况下计算垂直向量e,向量几何关系可得v=p+e,
    e = v − p = v − q T v q q T q \begin{equation} e=v-p=v-\frac{q^Tvq}{q^Tq} \end{equation} e=vp=vqTqqTvq
    第五,特殊情况下,|q|=1,整理可得:
    e = v − q T v q \begin{equation} e=v-q^Tvq \end{equation} e=vqTvq
    在这里插入图片描述

2. Arnoldi Iteration

arnoldi Iteration的作用是想在原来的krylov 子空间中增加一个向量 A q k Aq_k Aqk,具体思路如下图所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 小结:arnoldi Iteration 本质上就是新建一个向量 v v v,为了让v向量和以前已知的向量 q 1 , q 2 , ⋯ , q k q_1,q_2,\cdots,q_k q1,q2,,qk垂直,通过不断迭代,将v向量减去掉所有在 q 1 , q 2 , ⋯ , q k q_1,q_2,\cdots,q_k q1,q2,,qk上的投影向量 e k e_k ek,这样最后得到的向量 q k q_k qk就一定是垂直于 q 1 , q 2 , ⋯ , q k q_1,q_2,\cdots,q_k q1,q2,,qk

3. python 代码

后续提供详细的,现在直接粘贴吧。

import numpy as npdef arnoldi_iteration(A, b, k):"""Perform Arnoldi iteration to generate an orthonormal basis for the Krylov subspace.Parameters:A : numpy.ndarrayThe input matrix (n x n).b : numpy.ndarrayThe initial vector (n, ).k : intThe number of iterations, which defines the size of the Krylov subspace.Returns:Q : numpy.ndarrayThe orthonormal basis for the Krylov subspace (n x (k+1)).H : numpy.ndarrayThe Hessenberg matrix (k+1 x k)."""n = A.shape[0]Q = np.zeros((n, k + 1))  # Orthonormal basisH = np.zeros((k + 1, k))  # Hessenberg matrix# Normalize the initial vectorQ[:, 0] = b / np.linalg.norm(b)for j in range(k):v = A @ Q[:, j]  # Matrix-vector multiplicationfor i in range(j + 1):H[i, j] = np.dot(Q[:, i].conj(), v)  # Project v onto the current basis vectorsv = v - H[i, j] * Q[:, i]  # Make v orthogonal to Q[:, i]H[j + 1, j] = np.linalg.norm(v)  # Normalize v to get the next basis vectorif H[j + 1, j] != 0 and j + 1 < k:Q[:, j + 1] = v / H[j + 1, j]return Q, H# Example usage
if __name__ == "__main__":# Define a random matrix A and a random vector bA = np.random.rand(5, 5)b = np.random.rand(5)k = 4Q, H = arnoldi_iteration(A, b, k)print("Orthonormal basis Q:\n", Q)print("Hessenberg matrix H:\n", H)

相关文章:

Arnoldi Iteration 思考

文章目录 1. 投影平面2. Arnoldi Iteration3. python 代码 1. 投影平面 假设我们有一个向量q,我们需要关于向量q&#xff0c;构建一个投影平面P&#xff0c;使得给定任何向量v,可以通过公式 p P v pPv pPv&#xff0c;快速得到向量v在投影平面P上的投影向量p. 计算向量内积,…...

【Kafka】SpringBoot整合Kafka详细介绍及代码示例

Kafka介绍 Apache Kafka是一个分布式流处理平台。它最初由LinkedIn开发&#xff0c;后来成为Apache软件基金会的一部分&#xff0c;并在开源社区中得到了广泛应用。Kafka的核心概念包括Producer、Consumer、Broker、Topic、Partition和Offset。 Producer&#xff1a;生产者&a…...

C++ 质数因子分解

描述 功能:输入一个正整数&#xff0c;按照从小到大的顺序输出它的所有质因子&#xff08;重复的也要列举&#xff09;&#xff08;如180的质因子为2 2 3 3 5 &#xff09; 输入描述&#xff1a; 输入一个整数 输出描述&#xff1a; 按照从小到大的顺序输出它的所有质数的…...

laravel版本≥ 8.1

laravel10 php ≥ 8.1 且 ≤ 8.3&#xff1f; 8.1 < php < 8.3PHP版本要求在 8.1 到 8.3 之间&#xff0c;包括这两个版本。具体来说&#xff1a;"≥ 8.1" 表示 PHP 的版本至少是 8.1&#xff0c;也就是说 8.1 及以上的版本都可以。 "≤ 8.3" 表示 P…...

【iOS】MRC下的单例模式批量创建单例

单例模式的介绍和ARC下的单例请见这篇&#xff1a;【iOS】单例模式 目录 关闭ARC环境MRC下的单例ARC下的单例批量创建单例Demo 关闭ARC环境 首先关闭ARC环境&#xff0c;即打开MRC&#xff1a; 或是指定某特定目标文件为非ARC环境&#xff1a; 双击某个类文件&#xff0c;指定…...

计算机网络期末复习

今天考专四&#xff0c;环境都蛮好的&#xff0c;试卷也很新&#xff0c;老师人也不错&#xff0c;明年再来。 又到期末考试咯&#xff0c;大家复习没有&#xff1f;还没复习啊&#xff1f;还不复&#xff1f;&#xff1f;&#xff1f;&#xff1f; 目录 第一章 1-02 试简述…...

python写一个获取竞品信息报告

要编写一个获取竞品信息报告的Python程序&#xff0c;首先需要明确您想要获取的竞品信息以及数据来源。在这个示例中&#xff0c;我将展示如何从网页提取竞品信息&#xff0c;并编写一个简单的报告。 假设您想要获取以下竞品信息&#xff1a; 1. 产品名称 2. 产品价格 3. 产品特…...

一文彻底理解机器学习 ROC-AUC 指标

在机器学习和数据科学的江湖中&#xff0c;评估模型的好坏是非常关键的一环。而 ROC&#xff08;Receiver Operating Characteristic&#xff09;曲线和 AUC&#xff08;Area Under Curve&#xff09;正是评估分类模型性能的重要工具。 这个知识点在面试中也很频繁的出现。尽管…...

【二】【动态规划NEW】91. 解码方法,62. 不同路径,63. 不同路径 II

91. 解码方法 一条包含字母 A-Z 的消息通过以下映射进行了 编码 &#xff1a; ‘A’ -> “1” ‘B’ -> “2” … ‘Z’ -> “26” 要 解码 已编码的消息&#xff0c;所有数字必须基于上述映射的方法&#xff0c;反向映射回字母&#xff08;可能有多种方法&#xff…...

Python闯LeetCode--第3题:无重复字符的最长子串

Problem: 3. 无重复字符的最长子串 文章目录 思路解题方法复杂度Code 思路 一上来马上想到两层for循环暴力枚举&#xff0c;但是又立马想到复杂度是 O ( n 2 ) O(n^2) O(n2)&#xff0c;思考了一下能否有更优解&#xff0c;于是想到用头尾两个指针来指定滑动窗口&#xff08;主…...

HTML DOM 对象

HTML DOM 对象 1. 概述 HTML DOM(文档对象模型)是一个跨平台和语言独立的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。在HTML DOM中,文档被表示为节点树,其中每个节点代表文档中的一个部分,例如元素、文本或属性。HTML DOM对象是构成这个节点树的基…...

如何解决 BeautifulSoup 安装问题:从 BeautifulSoup 3 到 BeautifulSoup 4

在使用 Python 的过程中&#xff0c;解析 HTML 和 XML 数据是一项常见任务。BeautifulSoup 是一个非常流行的解析库。然而&#xff0c;最近在安装 BeautifulSoup 时&#xff0c;遇到了一些问题。本文将介绍如何解决这些问题&#xff0c;并成功安装 BeautifulSoup 4。 问题描述 …...

原型模式--深复制/浅复制

原型模式用于克隆复杂对象&#xff0c;由于new一个实例对象会消耗大部分时间&#xff0c;所以原型模式可以节约大量时间 1 public class Sheep implements Cloneable{2 private String name;3 private Date birth;4 public Sheep(String name, Date birth) {5 …...

C# TextBox模糊查询及输入提示

在程序中&#xff0c;我们经常会遇到文本框中不知道输入什么内容&#xff0c;这时我们可以在文本框中显示提示词提示用户&#xff1b;或者需要查询某个内容却记不清完整信息&#xff0c;通常可以通过文本框列出与输入词相匹配的信息&#xff0c;帮助用户快速索引信息。 文本框…...

Node入门以及express创建项目

前言 记录学习NodeJS 一、NodeJS是什么&#xff1f; Node.js 是一个开源和跨平台的 JavaScript 运行时环境 二、下载NodeJs 1.下载地址(一直点击next即可&#xff0c;记得修改安装地址) https://nodejs.p2hp.com/download/ 2.查看是否安装成功&#xff0c;打开命令行 nod…...

Cheat Engine CE v7.5 安装教程(专注于游戏的修改器)

前言 Cheat Engine是一款专注于游戏的修改器。它可以用来扫描游戏中的内存&#xff0c;并允许修改它们。它还附带了调试器、反汇编器、汇编器、变速器、作弊器生成、Direct3D操作工具、系统检查工具等。 一、下载地址 下载链接&#xff1a;http://dygod/source 点击搜索&…...

【实例分享】访问后端服务超时,银河麒麟服务器操作系统分析及处理建议

1.服务器环境以及配置 【机型】 处理器&#xff1a; Intel 32核 内存&#xff1a; 128G 整机类型/架构&#xff1a; x86_64虚拟机 【内核版本】 4.19.90-25.22.v2101.kylin.x86_64 【OS镜像版本】 kylin server V10 SP2 【第三方软件】 开阳k8s 2.问题现象描述 …...

Java中和的区别

在Java中&#xff0c;& 和 && 都是逻辑运算符&#xff0c;但它们之间存在一些重要的区别&#xff0c;特别是在它们如何评估其操作数以及它们的性能影响方面。 短路评估&#xff08;Short-Circuit Evaluation&#xff09;&#xff1a; &&&#xff08;逻辑…...

深入理解计算机系统 CSAPP 家庭作业6.34

第一步先求(S,E,B,m) 题目说共C32个字节,块大小B为16个字节,那就是分为两组:0,1.然后每组存4个int 每个4字节 CB*E*S .B16 ,直接映射的E就是1,所以S2 m为啥等于7? 通过写出两个数组所有的地址可以得出m7. 得出高速缓存的参数:(S,E,B,m)(2,1,16,7),注意图6-26每个参数的定义…...

[leetcode 141环形链表]双指针解决环形链表

Problem: 141. 环形链表 文章目录 思路Code 思路 首先想到如果链表为空直接返回false 其次想到用双指针,一个一回走一步,另一个一回走两步 如果是环形,总有一个时刻,两指针会指向同一个节点,而且该结点不能为空(空是快指针遍历完单链表了) Code /*** Definition for singly-li…...

2026绍兴本地GEO优化公司实测:服务规范与效果验证全解析

引言随着AI搜索算法的不断迭代&#xff0c;绍兴本地企业对GEO&#xff08;生成式引擎优化&#xff09;服务的需求日益增长。为了帮助这些企业在选择GEO优化服务商时做出明智决策&#xff0c;本测评以客观、中立的态度&#xff0c;基于EEAT原则&#xff08;经验、专业性、权威性…...

初创公司如何借助Taotoken控制大模型API试用与正式成本

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 初创公司如何借助Taotoken控制大模型API试用与正式成本 对于初创公司而言&#xff0c;在产品从原型验证到正式上线的过程中&#x…...

流处理优化:提高实时数据处理性能

流处理优化&#xff1a;提高实时数据处理性能 一、流处理优化概述 1.1 流处理优化的定义 流处理优化是指通过优化流处理系统的性能、吞吐量和延迟&#xff0c;提高实时数据处理能力的过程。它涉及优化数据处理管道、资源配置和算法实现。 1.2 流处理优化的价值 低延迟&#xff…...

Codex入门10-Goal自主任务(进阶必学:设定目标就不管了,AI自己干活到完成)

🎯 本文目标 掌握 /goal 持久化任务系统,让 Codex 自主完成复杂的大型工作。 🤔 /goal 和普通对话有什么区别? 对比 普通对话 /goal 任务 交互方式 一问一答 设定目标后AI自主工作 持久性 关终端就中断 关终端也能继续 适合任务 小任务、即时反馈 大任务、长期执行 计划…...

技术突破开源方案:img2latex-mathpix实现公式图像转LaTeX代码的本地化部署

技术突破开源方案&#xff1a;img2latex-mathpix实现公式图像转LaTeX代码的本地化部署 【免费下载链接】img2latex-mathpix Mathpix has changed their billing policy and no longer has free monthly API requests. This repo is now archived and will not receive any upda…...

通过curl命令快速测试Taotoken提供的各类大模型API响应效果

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过curl命令快速测试Taotoken提供的各类大模型API响应效果 对于习惯命令行操作或需要在无SDK环境中验证集成的开发者而言&#xf…...

开源自托管看板工具:基于Preact+Hono+SQLite的零云依赖方案

1. 项目概述&#xff1a;一个为自托管与AI协作而生的看板应用如果你正在寻找一个可以完全掌控在自己手里、没有订阅费用、又能无缝集成到你自己产品中的看板工具&#xff0c;那么clawnify/open-kanban这个项目值得你花时间深入研究。它不是一个玩具&#xff0c;而是一个生产就绪…...

AI碳足迹深度解析:从模型压缩到软硬协同的绿色AI实践

1. 从“算力怪兽”到“绿色引擎”&#xff1a;AI碳足迹问题的深度拆解 最近和几个在芯片厂和云服务商工作的老朋友聊天&#xff0c;话题总绕不开一个词&#xff1a;电费。不是开玩笑&#xff0c;现在训练一个大模型&#xff0c;电费账单能轻松超过一个小型数据中心的日常运维成…...

为Odoo ERP构建安全的AI数据访问层:基于权限治理的语义查询实践

1. 项目概述&#xff1a;为Odoo ERP构建一个受治理的AI数据访问层如果你正在使用Odoo管理企业业务&#xff0c;同时又希望让AI助手&#xff08;比如Claude、Cursor&#xff09;能够安全地查询销售数据、分析库存状况&#xff0c;而不是让它们直接面对你的生产数据库写SQL&#…...

Modbus RTU 与 Modbus TCP 深入指南-附录:快速参考表

十五、附录&#xff1a;快速参考表 15.1 Modbus RTU 帧示例速查 操作请求帧&#xff08;十六进制&#xff09;响应帧示例读线圈&#xff08;1个&#xff09;01 01 00 00 00 01 CRC01 01 01 01 CRC读离散输入01 02 00 00 00 01 CRC01 02 01 00 CRC读保持寄存器&#xff08;1个…...