线性代数——二次型

2023-11-19

一:通过矩阵研究二次方程

二次型的定义:

把含有n个变量的二次齐次函数或方程称为二次型,例如:

f(x_{1},x_{2},...,x_{n})=a_{11}x_{1}^{2}+a_{22}x_{2}^{2}+...+a_{nn}x_{n}^{2}+2a_{12}x_{1}x_{2}+2a_{13}x_{1}x_{3}+...+2a_{n-1}x_{n-1}x_{n}

 二次型可以用矩阵来表示:

x^{2}+y^{2}-2xy=1可以表示为\begin{bmatrix} x & y \end{bmatrix}\begin{bmatrix} 1 & -1\\ -1 & 1 \end{bmatrix}\begin{bmatrix} x\\y \end{bmatrix}=1

更一般的情况:

ax^{2}+2bxy+cy^{2}=1可以表示为\begin{bmatrix} x & y \end{bmatrix}\begin{bmatrix} a & b\\ b & c \end{bmatrix}\begin{bmatrix} x\\y \end{bmatrix}=1

令:X=\begin{bmatrix} x\\y \end{bmatrix}A=\begin{bmatrix} a & b\\ b & c \end{bmatrix},则上式表示为X^{T}AX,这就是我们常见的二次型表示方式。

 

在《Linear Algebra and Its Applications》中译本《线性代数及其应用》中,二次型的定义如下:

在向量计算中常遇到的X^{T}X,求向量元素的平方和,这类平方和及其更一般形式称为二次型。

R^{n}上的一个二次型是定义在R^{n}上的函数,其在向量x处的值为:

                                                                     Q(x)=X^{T}AX

其中矩阵A是一个对称矩阵,矩阵A称为关于二次型的矩阵。

二次型是为研究二次函数或二次多项式而生,这样就能理解《线性代数及其应用》中二次型的定义,以及一些二次型的性质。

 

二:规范化

二次型或二次齐次方程有着显著的几何意义,一个二元二次函数是二维空间的一个圆,椭圆或双曲线:

x^{2}+y^{2}=1的一个圆,可以表示为\begin{bmatrix} x & y \end{bmatrix}\begin{bmatrix} 1 & 0\\ 0 & 1 \end{bmatrix}\begin{bmatrix} x\\y \end{bmatrix}=1

 

x^{2}+\frac{1}{4}y^{2}=1的椭圆可以表示为\begin{bmatrix} x & y \end{bmatrix}\begin{bmatrix} 1 & 0\\ 0 & \frac{1}{4} \end{bmatrix}\begin{bmatrix} x\\y \end{bmatrix}=1

 

一个 x^{2}-y^{2}=1的双曲线可以表示为\begin{bmatrix} x & y \end{bmatrix}\begin{bmatrix} 1 & 0\\ 0 & -1 \end{bmatrix}\begin{bmatrix} x\\y \end{bmatrix}=1

 

 这样一看,圆,椭圆,双曲线是线性关系,通过矩阵变换可以相互转化,准确说是一种仿射,它们都是圆锥体与平面的交线,所以统称为圆锥曲线。

对于一个倾斜的椭圆\frac{5}{8}x^{2}-\frac{3}{4}xy+\frac{5}{8}y^{2}=1,要将其扶正

除了通过坐标变化,解析几何的方法外,可以对 其二次型矩阵,进行特征值分解:

a = np.array([[5/8, -3/8], [-3/8, 5/8]])
eval_sigma1,evec_u = np.linalg.eigh(a)

其特征值为:\begin{bmatrix} 1 & 0\\ 0& \frac{1}{4} \end{bmatrix},而这个矩阵就是椭圆扶正后的二次型矩阵

 

 

 三:正定二次型

对于一个二次型Q

a.如果对所有的x\neq 0,有Q(x)>0,则二次型Q称为正定的

b.如果对所有的x\neq 0,有Q(x)<0,则二次型Q称为负定的

c.如果Q(x)既有正值又有负值,则二次型Q称为不定的

d.如果对所有的xQ(x)\geqslant 0,则Q称为半正定的,如果对所有的xQ(x)\leqslant 0,则Q称为半负定的

 

二次型与矩阵A的特征值的关系:

a.当且仅当矩阵A的特征值全为正数,则二次型Q为正定的

b.当且仅当矩阵A的特征值全为负数,则二次型Q为负定的

c.当且仅当矩阵A的特征值既有负数又有正数,则二次型Q为不定的

 

由于任意的二次型可以通过二次型矩阵的特征值分解(二次型的矩阵都是对称矩阵,对称矩阵都可以进行特征值分解),来扶正:

                                                             \begin{bmatrix} x_{1} & x_{2} & ... & x_{n} \end{bmatrix}\begin{bmatrix} \lambda_{1} & 0 & 0 & 0\\ 0& \lambda_{2} & 0 & 0\\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & \lambda_{n} \end{bmatrix}\begin{bmatrix} x_{1}\\ x_{2}\\ \vdots \\ x_{n} \end{bmatrix}

 所以任意的二次型可以转换为上述特征值的表示形式,以方程形式表示为:

                                                          f(x_{1},x_{2},...,x_{n})=\lambda_{1}x_{1}^{2}+\lambda_{2}x_{2}^{2}+...+\lambda_{n}x_{n}^{2}

当特征值都为正时,f(x_{1},x_{2},...,x_{n})=\lambda_{1}x_{1}^{2}+\lambda_{2}x_{2}^{2}+...+\lambda_{n}x_{n}^{2}> 0恒成立

当特征值都为负时,f(x_{1},x_{2},...,x_{n})=\lambda_{1}x_{1}^{2}+\lambda_{2}x_{2}^{2}+...+\lambda_{n}x_{n}^{2}< 0恒成立

 当特征值有正有负时,f(x_{1},x_{2},...,x_{n})的值,正负都有

这样就证明了二次型的矩阵特征值与其二次型的正定关系。

 

四:文中图片源码

文中的图片使用Python制作,代码如下:

from matplotlib.patches import Ellipse, Circle
import matplotlib.pyplot as plt
import matplotlib
import math
import numpy as np

def picture1():
    fig = plt.figure()
    ellip1 = Ellipse(xy = (0.0, 0.0), width = 2, height = 4, angle = -45, facecolor = 'yellow', alpha = 0.3)
    ellip2 = Ellipse(xy = (0.0, 0.0), width = 2, height = 4, angle = 0, facecolor = 'blue', alpha = 0.3)
    ax = fig.add_subplot(111)
    ax.add_patch(ellip1)
    ax.add_patch(ellip2)

    ax.spines['right'].set_color('none')  
    ax.spines['top'].set_color('none')  
    ax.spines['bottom'].set_position(('data',0))  
    ax.spines['left'].set_position(('data',0))  
    ax.xaxis.set_ticks_position('bottom')
    ax.yaxis.set_major_locator(matplotlib.ticker.MultipleLocator(1))

    plt.axis('scaled')
    plt.show()

def Draw_Circle():
    x = y = np.arange(-2, 2, 0.1)
    x, y = np.meshgrid(x, y)
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.contour(x, y, x**2 + y**2, [1], alpha = 0.3)

    ax.spines['right'].set_color('none')  
    ax.spines['top'].set_color('none')  
    ax.spines['bottom'].set_position(('data',0))  
    ax.spines['left'].set_position(('data',0))  
    ax.xaxis.set_ticks_position('bottom')
    ax.yaxis.set_major_locator(matplotlib.ticker.MultipleLocator(1))
    ax.xaxis.set_major_locator(matplotlib.ticker.MultipleLocator(1))

    plt.axis('scaled')
    plt.show()

def Draw_ellipse():
    a = math.cos(-math.pi/4)
    b = math.sin(-math.pi/4)
    x = y = np.arange(-3, 3, 0.1)
    x, y = np.meshgrid(x, y)
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.contour(x*a + y*b, x*b - y*a, x**2 + (1/4)*y**2, [1], alpha = 0.3)
    ax.contour(x, y, x**2 + (1/4)*y**2, [1], alpha = 0.3)
    #ax.contour(x, y, x**2 + y**2, [1], alpha = 0.3)
    #ax.contour(x, y, (5/8)*x**2 - (3/4)*x*y + (5/8)*y**2, [1], alpha = 0.3)

    ax.spines['right'].set_color('none')  
    ax.spines['top'].set_color('none')  
    ax.spines['bottom'].set_position(('data',0))  
    ax.spines['left'].set_position(('data',0))  
    ax.xaxis.set_ticks_position('bottom')
    ax.yaxis.set_major_locator(matplotlib.ticker.MultipleLocator(1))
    ax.xaxis.set_major_locator(matplotlib.ticker.MultipleLocator(1))

    plt.axis('scaled')
    plt.show()

def Draw_hyperbola():
    a = [i / 100 for i in range(100, 300, 1)]
    b = [math.sqrt(i**2 - 1) for i in a]
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.plot(a, b, color = "blue", alpha = 0.3)
    ax.plot(a, [-i for i in b], color = "blue", alpha = 0.3)
    ax.plot([-i for i in a], b, color = "blue", alpha = 0.3)
    ax.plot([-i for i in a], [-j for j in b], color = "blue", alpha = 0.3)

    ax.spines['right'].set_color('none')  
    ax.spines['top'].set_color('none')  
    ax.spines['bottom'].set_position(('data',0))  
    ax.spines['left'].set_position(('data',0))  
    ax.xaxis.set_ticks_position('bottom')
    ax.yaxis.set_major_locator(matplotlib.ticker.MultipleLocator(1))

    plt.show()

if __name__ == "__main__":
    a = np.array([[5/8, -3/8], [-3/8, 5/8]])
    eval_sigma1,evec_u = np.linalg.eigh(a)
    print(eval_sigma1)
    print(evec_u)
    Draw_ellipse()

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

线性代数——二次型 的相关文章

  • 证明正定矩阵的充要条件:全部顺序主子式大于0

    定理 f x T A x f x TAx f xTAx 正定的充要条件是
  • 均值不等式链的几何证明

    均值不等式链的几何证明 这是我们高中时所见到的不等式链的关系 接下来将用几何图形的方法进行证明 首先 做圆 A 直径 BC 在圆上异于 BC 取一点 D 连接 DA DB DC 并做 DE 垂直与 BC 交 BC 与点 E 设 CE a B
  • python 读写pcd

    1 读点云的3种方式 第一种 pip3 install python pcl import pcl pcd ndarray pcl load args pcd path to array 3 不要intensity pcd ndarray
  • 蓝桥杯2021年第十二届真题第一场-砝码称重

    题目 题目链接 题解 动态规划 状态定义 dp i j 表示前i个砝码是否能称出重量为j的物品 状态转移 对于第i个砝码 选和不选两种情况 对于选又可以分为放在左边和放在右边 看样例 存在加和减的情况 也就是放在左边和右边的情况 我们规定放
  • 线性代数 - 特征向量和特征值

    今天在看到这个马汉诺拉距离的时候 又看到了这个东西 就是利用特征值来进行协方差方向上的伸缩 突然感觉到了线性代数的作用了 但是实际上 我今天看到了非常多的内容 但是都没有吸收完 很多内容都是线性代数的东西 但是这些东西我都忘了 这里先挖个坑
  • 宋浩线性代数笔记(五)矩阵的对角化

    本章的知识点难度和重要程度都是线代中当之无愧的T0级 对于各种杂碎的知识点 多做题 复盘才能良好的掌握 良好掌握的关键点在于 所谓的性质A与性质B 是谁推导得谁
  • 刚体动力学

    文章目录 刚体状态 将某个物体从局部坐标系变化到全局坐标系 对时间求导 对矩阵求导 惯性 刚体属性 1 质心 计算方法 体素法 直接计算法 四面体体积 四面体的中心 2 惯性张量 世界坐标系中的惯性变量 刚体运动 力矩 刚体的固定属性 当前
  • 线性代数-----行列式的性质

    行列式的性质 设 D a 11
  • 4.9-4.10 矩阵乘法的性质 & 矩阵的幂运算 & 矩阵的转置及其性质

    矩阵乘法的性质 矩阵的乘法不遵守交换律 矩阵乘法遵守结合律 分配律 对于任意r行c列的矩阵A 存在c行x列的矩阵O 满足 A Ocx Orx 对于任意r行c列的矩阵A 存在x行r列的矩阵O 满足 Oxr A Oxc 证明思路 A B C A
  • 11-矩阵(matrix)_方阵_对称阵_单位阵_对角阵

    矩阵 向量是对数的拓展 一个向量表示一组数 矩阵是对向量的拓展 一个矩阵表示一组向量 1 2
  • jsp+Echarts实现图表可视化,连接数据库,从数据库拿数据

    实现可视化的图表 jsp mysql eclipse 从数据库拿数据改变表格的数据算是echarts的初始入门案例的升级版 想了解Echarts的各位大大 传送门 https echarts apache org examples zh e
  • Java编程练习题:Demo96 - Demo105(多维数组)

    目录 Demo96 代数方面 两个矩阵相乘 编写两个矩阵相乘的方法 Demo97 距离最近的两个点 程序清单8 3给出找到二维空间中距离最近的两个点的程序 修改该程序 让程序能够找出在三维空间上距离最近的两个点 Demo98 最大的行和列
  • Game101现代计算机图形学作业1

    Game101现代计算机图形学作业1 一 作业描述 二 解决方法 一 模型变换 二 投影变换 绕任意轴旋转 三 总结 四 参考和引用 一 作业描述 给定三维下三个点 v 0 2 0 0
  • 给定一个序列快速计算不同二叉树的个数

    给定一个序列求二叉树的个数 就相当于n个数进栈然后得到一个出栈序列种树 假设用f n 表示n个数的出栈序列数的种树 假设第一个出栈序数是k 则k将1 n的序列分为两个序列 其中一个是1 k 1 序列个数是k 1 另一个是 k 1 n 序列个
  • Gauss_Seidel method with python

    Gauss Seidel method with python from wikipedia https en wikipedia org wiki Gauss E2 80 93Seidel method import numpy as n
  • TRMF 辅助论文:最小二乘法复现TRMF

    1 目标函数 总 论文笔记 Temporal Regularized Matrix Factorization forHigh dimensional Time Series Prediction UQI LIUWJ的博客 CSDN博客 1
  • matlab 计算点云中值

    目录 一 概述 1 算法概述 2 主要函数 二 代码示例 三 结果展示 四 参数解析 输入参数 输出参数 五 参考链接 本文由CSDN点云侠原创 原文链接 如果你不是在点云侠的博客中看到该文章 那么此处便是不要脸的爬虫 一 概述
  • Latex公式中矩阵的方括号和圆括号表示方法

    一 背景 在使用Latex写论文时 不可避免的涉及到矩阵公式 有的期刊要求矩阵用方括号 有的期刊要求矩阵用圆括号 因此 特记录一下Latex源码在两种表示方法上的区别 以及数组和方程组的扩展 二 矩阵的方括号表示 首先所有的矩阵肯定都是在标
  • 短视频账号矩阵系统3年技术独立源头正规开发搭建

    短视频账号矩阵3年技术独立开发打造是一个非常有挑战性和前景的项目 以下是一些建议 帮助你成功打造一个成功的短视频账号矩阵 1 确定目标受众 首先需要明确你的目标受众是谁 了解他们的兴趣爱好 年龄 性别等 以便为他们提供他们感兴趣的内容 2
  • MIT_线性代数笔记:第 23 讲 微分方程和 exp(At)

    目录 微分方程 Differential equations 矩阵指数函数 Matrix exponential e A t e At

随机推荐

  • YOLOv5 提升模型训练结果小技巧

    一 数据集 1 每类图片数 建议 gt 1500张 2 每类实例数 推荐每类标签实例数 gt 10000 3 图片多样性 必须代表部署环境 对于现实世界我们推荐图片来自一天中不同时间 不同季节 不同天气 不同光照 不同角度和不同相机等 4
  • 线程封闭概念

    线程封闭概念 为什么要有线程封闭这个概念呢 多线程中访问共享可变数据时 涉及到线程间数据同步的问题 并不是所有时候都需要共享数据 所以线程封闭概念就出来了 在Java中线程封闭该怎么做呢 可以通过两个方法来做 ThreadLocal 1 T
  • 34 openEuler使用LVM管理硬盘-创建并挂载文件系统

    文章目录 34 openEuler使用LVM管理硬盘 创建并挂载文件系统 34 1 创建文件系统 34 2 手动挂载文件系统 34 3 自动挂载文件系统 34 openEuler使用LVM管理硬盘 创建并挂载文件系统 在创建完逻辑卷之后 需
  • android代码获取当前package的de目录

    获取de目录首先要获取DE CONTEXT Context deContext getApplicationContext createDeviceProtectedStorageContext 然后通过DE CONTEXT获取de目录 S
  • SpringBoot + MyBatis-plus + Druid 实现简单增删查改、动态条件查询和分页功能

    本文主要讲解 SpringBoot集成Mybatis plus 数据库连接池使用alibaba的druid 实现简单增删查改 动态条件查询和分页功能 项目整体结构 项目添加相关框架依赖 pom xml
  • 辐射强度、辐亮度、辐照度——一文搞定

    先写定义 上图是从网上看到的并重写的 其中我们最容易混淆的就是辐射强度 辐亮度 辐照度的关系 如果我们没有接触专业领域 那么我们可能接触最多的就是辐射强度 而这种现象是不对的 因为我们一般考虑的均为这光好强呀 照得屋里特别亮 这里的光亮 我
  • untiy的纹理格式介绍

    Desktop RGB Compressed DXT1 压缩的RGB纹理 这是最常见的漫反射纹理格式 4位 像素 32 KB 256x256 RGBA Compressed DXT5 压缩的RGBA纹理 这是漫反射和高光控制纹理的主要格式
  • 如何区分网线是几类的_怎么看网线是几类?

    我来回答下本行业的问题 我是做智能化弱电的 在弱电监控系统中网线是连接弱电局域网中必不可少的材料 也是综合布线系统中最常用的一种传输材质 网线是由4对线8芯组成 每芯都有颜色区分 用于数据传输 网线的分类 网线按照性能划分 可以分为五类线
  • 基于sklearn的简单分类器

    基于sklearn的简单分类器 输入 输出 3 1 0 2 5 1 1 8 1 6 4 0 5 2 0 3 5 1 4 7 1 4 1 0 7 5 已知部分输入和部分输出求当输入为7 5时输出为多少 我们观察上面的规律不难发现 当输入的第一
  • react 使用 scss

    react 使用 scss 日常记录开发中遇到的坑 1 使用 npm install sass loader node sass S 进行安装 2 在页面中直接使用 有时候可以 有时候不行 原因 我个人觉得安装的两个插件本版兼容问题 nod
  • vue,vue-cli和@vue/cli是什么关系?有什么区别?

    vue是构建用户界面的渐进式JavaScript 框架 vue cli是vue的一个官方脚手架工具 快速工程化命令工具 用来帮助程序员们快速搭建基于vue框架的开发环境 vue有很多脚手架工具 vue cli只是其中一种 侧重于单页面应用
  • pytorch 取对角线元素/矩阵对角线元素置0

    pytorch 取对角线元素 矩阵对角线元素置0 使用 torch diag 取对角线元素 使用 torch diag embed 恢复维度 import torch a torch randn 3 3 print a tensor 0 7
  • 在Echarts中的tooltip上添加点击按钮

    需求 在Echarts的tooltips中添加点击按钮并可以鼠标悬停点击该按钮 功能实现 在option中的tooltip添加enterable true的属性 表示鼠标可以移入tooltip中 再在formatter中添加
  • 从Java到区块链:如何成为区块链开发人员

    最近这些天 区块链是每个开发人员的谈资 来自各个领域的许多软件开发商现在正试图进入区块链市场 我们与Mobilunity的区块链软件开发人员Eugene Kyselev 讨论了他是如何走出区块链开发方面的第一步的 希望对大家有所帮助 JAX
  • 上海链节科技:通证经济的到来,拉开了去中心化协作序幕

    国家在肯定扶持区块链技术的同时 也针对币圈进行了强监管 区块链行业经历疯狂到沉默 开始回归理性 重新审视技术带来的变革 技术是无罪的 分布式存储 去中心化 智能合约 加密 挖矿等种种技术或设计理念 都是为了保障信任 实现价值传递 降低交易成
  • Dockerfile: ENTRYPOINT vs CMD

    Dockerfile ENTRYPOINT和CMD的区别 dongmao zhang software engineer 132 人赞同了该文章 翻译 Dockerfile ENTRYPOINT vs CMD 在我们查阅Dockerfile
  • ANDROID

    1 环境构建 2 模拟测试 3 Activity 4android中的资源 5 UI 6 各种控件
  • 剑指offer第二版面试题20:表示数值的字符串(java)

    题目描述 请实现一个函数用来判断字符串是否表示数值 包括整数和小数 例如 字符串 100 5e2 123 3 1416 和 1E 16 都表示数值 但是 12e 1a3 14 1 2 3 5 和 12e 4 3 都不是 分析 1 在数值之前
  • ubuntu18.04上安装TensorFlow2.0

    推特上几乎每天都有关于深度学习中Keras TensorFlow哪个个才是最好的框架的口水战 2019年后 这将不在是个问题 2019年初 tf keras 子模块已引入TensorFlow v1 10 0中 现在 在TensorFlow
  • 线性代数——二次型

    一 通过矩阵研究二次方程 二次型的定义 把含有n个变量的二次齐次函数或方程称为二次型 例如 二次型可以用矩阵来表示 可以表示为 更一般的情况 可以表示为 令 则上式表示为 这就是我们常见的二次型表示方式 在 Linear Algebra a