首页 > 其他分享 >Krylov子空间与Arnoldi过程

Krylov子空间与Arnoldi过程

时间:2023-06-12 23:44:35浏览次数:38  
标签:vector basis Krylov np Arnoldi 空间 array

一、应用背景

Krylov子空间方法是模型降阶(MOR)的一种,Krylov 子空间方法就是在Krylov子空间中寻找近似解。

 

二、Krylov子空间

 n是原始矩阵的维度,m为降阶后矩阵的维度,通常m<<n。

 

三、Arnoldi 过程: 计算Km 的一组正交

 

 

对应上述MGS过程的python代码:

import numpy as np

def arnoldi_iteration(A, b, n: int):
    """Compute a basis of the (n + 1)-Krylov subspace of the matrix A.

    This is the space spanned by the vectors {b, Ab, ..., A^n b}.

    Parameters
    ----------
    A : array_like
        An m × m array.
    b : array_like
        Initial vector (length m).
    n : int
        One less than the dimension of the Krylov subspace, or equivalently the *degree* of the Krylov space. Must be >= 1.
    
    Returns
    -------
    Q : numpy.array
        An m x (n + 1) array, where the columns are an orthonormal basis of the Krylov subspace.
    h : numpy.array
        An (n + 1) x n array. A on basis Q. It is upper Hessenberg.
    """
    eps = 1e-12
    h = np.zeros((n + 1, n))
    Q = np.zeros((A.shape[0], n + 1))
    # Normalize the input vector
    Q[:, 0] = b / np.linalg.norm(b, 2)  # Use it as the first Krylov vector
    for k in range(1, n + 1):
        v = np.dot(A, Q[:, k - 1])  # Generate a new candidate vector
        for j in range(k):  # Subtract the projections on previous vectors
            h[j, k - 1] = np.dot(Q[:, j].conj(), v)
            v = v - h[j, k - 1] * Q[:, j]
        h[k, k - 1] = np.linalg.norm(v, 2)
        if h[k, k - 1] > eps:  # Add the produced vector to the list, unless
            Q[:, k] = v / h[k, k - 1]
        else:  # If that happens, stop iterating.
            return Q, h
    return Q, h

 

四、重要性质

 (4.5)和(4.6)这两个式子在指数积分方法(krylov法)中会有应用。

标签:vector,basis,Krylov,np,Arnoldi,空间,array
From: https://www.cnblogs.com/spacerunnerZ/p/17473394.html

相关文章

  • ros系统 修改工作空间的名字
    一、打开终端(1)输入mv旧的工作空间名字新的工作空间名字(2)gedit~/.bashrc(3)把原先旧的名字换成新的名字 (4)source~/.bashrc (5)把工作空间中的devel和build文件和src中CMakeLists.txt给删掉 (6)进入src目录,输入catkin_init_workspace,自动生成CMakeLists.txt。再输入ls命......
  • Apikit SaaS 10.9.0 版本更新:空间主页上线,应用模块合并!
    Hi,大家好!EolinkApikitSaaS更新10.9.0版本,本次版本更新主要是对多个应用级资源合并,并基于此简化付费套餐和降低费率。本次应用合并是为了接下来更好的发挥EolinkApikit的优势,提供API全生命周期解决方案,为下半年的重大功能更新做前期准备。本次更新的详细内容如下。1、重大......
  • 空间数据的智慧呈现:探秘GIS地图的魅力
    随着科技的飞速发展和数字化时代的来临,GIS地图正成为一个强大的工具,为我们提供了更准确、全面的地理空间数据和智能化的解决方案。GIS地图集成了地理信息、空间分析和可视化技术,为我们打开了一个全新的世界,让我们能够更好地理解和探索我们的环境。 GIS地图为我们提供了精确、实......
  • 【更新日志 v3.5.1】WRITE-BUG数字空间
    保存草稿功能失效文件贴标签功能失效⚙功能优化圈子排序优化✅v3.4.1        更新日志        2023年4月11日......
  • AWS RDS空间不足报警
    一天RDS突然报无法写入的错误,查询后发现是空间已达120TB的限额,这是我们之前从来没想过会遇到的情况,因此赶紧加上监控。进入RDSCluster界面-->Monitoring-->Cloudwatch搜索volume,找到AuroraVolumeBytesLeftTotal然后右上角选项-->Viewinmetrics点Createalarm填上需要监......
  • ora-01658 无法为表空间 users中的段创建initial区
    ORA-01658错误表示无法在表空间"USERS"中为新段(如表或索引)创建INITIAL区。这种情况通常发生在表空间已经接近或已经达到其最大容量时。解决:添加额外的数据文件或表空间ALTERTABLESPACEusersADDDATAFILE'/oracle/product/10.2.0/oradata/orcl/users02.dbf'SIZE100M ......
  • TYPESCRIPT进阶--命名空间
    以下都是我的ChartGpt老师教学的内容哦,(若想知道怎么用ChartGpt学习,或者想知道我的问答方式,可以点这个查看我的学习记录)一:理解命名空间的概念和作用命名空间是一种组织代码结构的方式,它将相关的代码放在一个命名空间内,避免命名冲突和代码重复。在TypeScript中,命名空间是通过关键......
  • TypeScript进阶--命名空间(跟着ChartGpt学习)
    以下都是我的ChartGpt老师教学的内容哦,(若想知道怎么用ChartGpt学习,或者想知道我的问答方式,可以点这个查看我的学习记录)一:理解命名空间的概念和作用命名空间是一种组织代码结构的方式,它将相关的代码放在一个命名空间内,避免命名冲突和代码重复。在TypeScript中,命名空间是通过关键......
  • Linux 磁盘空间莫名被吃掉,该怎么查?
    在服务器运维过程中,我们时常会遇到这样的情况,收到服务器磁盘空间告警: 登录服务器,通过df-Hl查看 和告警信息一致,接着我们就是要找到导致磁盘空间满的目录或文件。如何找到占用空间大的目录或文件?一种比较笨的方法是,在根目录下,通过du-hs命令,列出各目录所占空间大小 之后再用同样......
  • 线性空间学习笔记(部分)
    因为线性空间的知识点多而杂,无法一一记录,因此只取一些学习中遇到困难的地方做笔记。列向量与行向量只要不特殊提及,在线性代数中研究的向量都是列向量。显然,一个列向量左乘行向量的结果是一个标量。而一个列向量左乘一个矩阵,可以看作左乘一行列向量。即:\[A\mathbfx=A\begin{b......