线性代数Python计算:齐二次式二次型矩阵计算

该博客介绍了如何将非对称矩阵通过构造新矩阵实现对称化,从而得到对应的二次型表达式。文章提供了一个Python函数`symmetrization`用于实现矩阵对称化,并通过一个具体例子展示了如何将非对称矩阵转换为对称矩阵,进而表示给定的齐二次式。
摘要由CSDN通过智能技术生成

在这里插入图片描述
f = x T A x f=\boldsymbol{x}^\text{T}\boldsymbol{Ax} f=xTAx中,若 A = ( a i j ) n × n \boldsymbol{A}=(a_{ij})_{n\times n} A=(aij)n×n不是对称阵,可以通过构造元素为
a i j ′ = a i j + a j i 2 , 1 ≤ i , j ≤ n a_{ij}'=\frac{a_{ij}+a_{ji}}{2},1\leq i,j\leq n aij=2aij+aji,1i,jn
的矩阵 A ′ = ( a i j ′ ) n × n \boldsymbol{A}'=(a_{ij}')_{n\times n} A=(aij)n×n A ′ T = A ′ \boldsymbol{A}'^{\text{T}}=\boldsymbol{A}' AT=A,因而 f f f的二次型表达式
f = x T A ′ x . f=\boldsymbol{x}^\text{T}\boldsymbol{A}'\boldsymbol{x}. f=xTAx.
对非对称矩阵表示的 n n n元齐二次式,可以用下列定义的函数重构二次型的矩阵。

def symmetrization(A):                  #将矩阵A对称化
    n,_=A.shape                         #读取阶数
    for i in range(n):                  #对每一行
        for j in range(i+1,n):          #每一个非主对角元素
            A[i,j]=(A[i,j]+A[j,i])/2    #A[i,j]
            A[j,i]=A[i,j]               #A[j,i]

第1~6行定义的symmetrization函数,对称化其参数A表示待的矩阵。第2行读取A的阶数n。第3~6行嵌套的二重for循环完成A的对称化操作:外层循环扫描A的每一行,内层循环对当前的第i行中位于主对角线以上的每一个元素A[i,j](j>i)赋值为关于主对角线对称的两个元素的算术平均值(A[i,j]+A[j,i])/2(第5行),然后用改变后的A[i,j]改写对称元素A[j,i](第6行)。循环结束,A被对称化。
例1 用Python计算齐二次式 f = x 2 + 4 x y + 4 y 2 + 2 x z + z 2 + 4 y z f=x^2+4xy+4y^2+2xz+z^2+4yz f=x2+4xy+4y2+2xz+z2+4yz的二次型矩阵 A \boldsymbol{A} A
f = x 2 + 4 x y + 4 y 2 + 2 x z + z 2 + 4 y z = ( x , y , z ) ( 1 4 2 0 4 4 0 0 1 ) ( x y z ) f=x^2+4xy+4y^2+2xz+z^2+4yz=(x,y,z)\begin{pmatrix}1&4&2\\0&4&4\\0&0&1\end{pmatrix}\begin{pmatrix}x\\y\\z\end{pmatrix} f=x2+4xy+4y2+2xz+z2+4yz=(x,y,z) 100440241 xyz 。令 A = ( 1 4 2 0 4 4 0 0 1 ) \boldsymbol{A}=\begin{pmatrix}1&4&2\\0&4&4\\0&0&1\end{pmatrix} A= 100440241 ,对称化 A \boldsymbol{A} A即得解本例,见下列代码。

import numpy as np                  #导入numpy
from utility import symmetrization  #导入symmetrization
A=np.array([[1,4,2],                #设置初始矩阵A
            [0,4,4],
            [0,0,1]])
symmetrization(A)                   #对称化A
print(A)

结合代码中的注释信息很容易理解程序。运行程序,输出

[[1 2 1]
 [2 4 2]
 [1 2 1]]

f = x 2 + 4 x y + 4 y 2 + 2 x z + z 2 + 4 y z = ( x , y , z ) ( 1 2 1 2 4 1 1 2 1 ) ( x y z ) f=x^2+4xy+4y^2+2xz+z^2+4yz=(x,y,z)\begin{pmatrix}1&2&1\\2&4&1\\1&2&1\end{pmatrix}\begin{pmatrix}x\\y\\z\end{pmatrix} f=x2+4xy+4y2+2xz+z2+4yz=(x,y,z) 121242111 xyz
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
代码诚可贵,原理价更高。若为AI学,读正版书好

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值