栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

在 f = x T A x f=boldsymbol{x}^text{T}boldsymbol{Ax} f=xTAx中,若 A = ( a i j ) n × n boldsymbol{A}=(a_{ij})_{ntimes 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},1leq i,jleq n aij′​=2aij​+aji​​,1≤i,j≤n
的矩阵 A ′ = ( a i j ′ ) n × n boldsymbol{A}'=(a_{ij}')_{ntimes n} A′=(aij′​)n×n​, A ′ T = A ′ boldsymbol{A}'^{text{T}}=boldsymbol{A}' A′T=A′,因而 f f f的二次型表达式
f = x T A ′ x . f=boldsymbol{x}^text{T}boldsymbol{A}'boldsymbol{x}. f=xTA′x.
对非对称矩阵表示的 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&1end{pmatrix}begin{pmatrix}x\y\zend{pmatrix} f=x2+4xy+4y2+2xz+z2+4yz=(x,y,z)⎝⎛​100​440​241​⎠⎞​⎝⎛​xyz​⎠⎞​。令 A = ( 1 4 2 0 4 4 0 0 1 ) boldsymbol{A}=begin{pmatrix}1&4&2\0&4&4\0&0&1end{pmatrix} A=⎝⎛​100​440​241​⎠⎞​,对称化 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&1end{pmatrix}begin{pmatrix}x\y\zend{pmatrix} f=x2+4xy+4y2+2xz+z2+4yz=(x,y,z)⎝⎛​121​242​111​⎠⎞​⎝⎛​xyz​⎠⎞​。
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/976781.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号