首页 > 其他分享 >举例说明二次型和用 einsum 计算

举例说明二次型和用 einsum 计算

时间:2024-08-12 10:05:15浏览次数:12  
标签:begin end 二次 einsum times pmatrix 举例说明

什么是“二次型”

在数学中,特别是线性代数中,二次型(quadratic form) 是一个涉及向量和矩阵的表达式,其形式为:

[
Q(v) = v^T M v
]

其中:

  • ( v ) 是一个向量(长度为 ( n ))。
  • ( M ) 是一个 ( n \times n ) 的方阵(矩阵)。
  • ( v^T ) 表示向量 ( v ) 的转置(即一个列向量变为行向量)。

这个表达式计算的结果是一个标量。

实际例子

假设我们有一个简单的二次型问题,其中:

  • 向量 ( v ) 是 ( v = \begin{pmatrix} 1 \ 2 \end{pmatrix} )。
  • 矩阵 ( M ) 是 ( M = \begin{pmatrix} 3 & 4 \ 4 & 5 \end{pmatrix} )。

现在,我们要计算这个二次型:

[
Q(v) = v^T M v
]

1. 手动计算

首先,我们将向量 ( v ) 和矩阵 ( M ) 代入公式:

[
v^T M = \begin{pmatrix} 1 & 2 \end{pmatrix} \begin{pmatrix} 3 & 4 \ 4 & 5 \end{pmatrix}
]

执行矩阵乘法:

[
v^T M = \begin{pmatrix} 1 \times 3 + 2 \times 4 & 1 \times 4 + 2 \times 5 \end{pmatrix} = \begin{pmatrix} 11 & 14 \end{pmatrix}
]

接着,我们再将结果与向量 ( v ) 相乘:

[
Q(v) = \begin{pmatrix} 11 & 14 \end{pmatrix} \begin{pmatrix} 1 \ 2 \end{pmatrix} = 11 \times 1 + 14 \times 2 = 11 + 28 = 39
]

所以,二次型 ( Q(v) ) 的值是 39。

2. 使用 numpy.einsum 计算

现在,我们使用 numpy.einsum 来计算这个二次型:

import numpy as np

v = np.array([1, 2])
M = np.array([[3, 4], [4, 5]])

# 使用 einsum 计算二次型
Q = np.einsum('i,ij,j->', v, M, v)

print(Q)  # 输出 39

这段代码中,np.einsum('i,ij,j->', v, M, v) 表示计算 ( v^T M v ) 的值,结果同样是 39。

解读

这个例子中,我们展示了二次型的计算过程:

  • 矩阵 ( M ) 表示的是一个二次形式,可能用于描述某种系统的能量或其他物理量。
  • 向量 ( v ) 可以理解为输入的参数或状态。
  • 二次型 ( Q(v) ) 计算的是在这个特定状态下,系统的总能量(或其他物理量)。

例如,在物理中,二次型可以用于描述一个系统的势能,其中矩阵 ( M ) 表示系统的耦合系数,向量 ( v ) 表示系统的位移。通过计算二次型 ( Q(v) ),我们可以得到系统在特定状态下的总能量。

标签:begin,end,二次,einsum,times,pmatrix,举例说明
From: https://www.cnblogs.com/litifeng/p/18354410

相关文章

  • 最优化 | 凸优化 | 二次规划cvxopt求解,如何确定系数?
    目录一、定义二、系数的确定三、例子四、代码一、定义在凸优化问题中,特别是在二次规划(QuadraticProgramming,QP)问题中,矩阵PPP通常用来定义目标函数中的二次项......
  • MSC Nastran软件二次开发:热分析与二次开发
    MSCNastran软件二次开发:热分析与二次开发热分析基础热传导理论热传导是热能通过物质从高温区域向低温区域传递的过程。在固体中,热传导主要通过原子或分子的振动来实现。热传导速率可以用傅里叶定律来描述:[q=-k\cdotA\cdot\frac{\DeltaT}{\Deltax}]其中,(q......
  • COMSOL Multiphysics软件二次开发:COMSOL软件在流体力学中的应用
    COMSOLMultiphysics软件二次开发:COMSOL软件在流体力学中的应用COMSOLMultiphysics概述COMSOLMultiphysics是一款强大的多物理场仿真软件,它允许用户通过图形用户界面(GUI)或通过二次开发接口(即COMSOLAPI)来建立和求解复杂的物理模型。COMSOL软件的核心优势在于其能够......
  • Altair HyperWorks软件二次开发:多物理场仿真二次开发案例分析
    AltairHyperWorks软件二次开发:多物理场仿真二次开发案例分析AltairHyperWorks软件简介软件功能与应用领域AltairHyperWorks是一款集成的多学科仿真平台,提供了广泛的工具集,用于结构分析、流体动力学、多体动力学、优化、可视化和数据管理。其核心功能包括但不限于:结......
  • P9750 [CSP-J 2023] 一元二次方程题目总结
    根据题面,我们将分为多种情况讨论:若a为负数,那么将a,b,c全部取反首先求出data=b^2-4*a*c;1,data<=0cout<<”NO”;否则带入求跟公式:-b/2a+(-)sqrt(data)注意::gcd(a,b)有可能为负数,此处应用abs(x)取绝对值若开根号data为有理数{-b为2*a的倍数则直接输出b否则输出b/gcd(b,2*a......
  • torch.einsum 的计算过程
    概论a=torch.randn(3,2,2)b=torch.randn(3)c=torch.einsum('...chw,c->...hw',a,b)上面的einsum如何计算的?简单说,把b广播为a的形状,然后做矩阵乘法,即逐位相乘运算,注意,不是点积,是逐位的相乘运算。注:这里符合背景需求,背景是,a是深度学习的某个张量,b是a的权重,......
  • Creo二次开发(一)
    creovs环境搭建note:配置Debug,release会失败1.安装creo要安装ptoolkit2.vs配置包含目录库目录预处理定义PRO_USE_VAR_ARGS链接器wsock32.libpsapi.libnetapi32.libmpr.libprotk_dllmd_NU.libucore.libudata.libnote:忽略特定默认库库中添加“msvcrt.lib(结合自己......
  • einsum 函数
    einsum是Einsteinsummation的缩写,即爱因斯坦求和约定。einsum函数源自NumPy,后来在PyTorch等其他科学计算库中也得到了实现。它是一种强大而灵活的函数,可以用来处理各种张量运算,如矩阵乘法、转置、批量点积、内积、外积等。爱因斯坦求和约定(EinsteinSummationConvent......
  • vue中axios二次封装【简洁、附代码】+api解耦
    reference:https://www.bilibili.com/video/BV1my421h7hK/?share_source=copy_web&vd_source=334dbcc5ec1e90276a3fca594c89e11e下一篇:继axios二次封装后跨域问题解决——配置代理、环境变量文章目录一、axios请求接口1下载2引入3使用二、axios二次封装1.下......
  • 同样的名称申请商标,首次下证第二次被异议不予注册!
          最近有个广东网友向普推商标知产老杨发来商标信息,说是要做撤三,通过调查分析好,没有发现使用证据撤三通过率还是可以的,但是撤三是为了打掉在先权利,为了新申请注册商标,最后发现存在许多问题。这位广东网友想加个小类,他以前申请注册商标时,同样的名称第一次申请......