线性代数Python计算:向量空间坐标变换

在这里插入图片描述
向量空间中两组基 A A A B B B之间相互线性表示构成的矩阵为过渡阵。若两组基中之一为自然基,譬如 A A A为自然基,则基 B B B的各向量在自然基下的坐标即构成基 A A A到基 B B B的过渡阵 P \boldsymbol{P} P。否则,找到自然基到基 A A A的过渡阵 A \boldsymbol{A} A,自然基到基 B B B的过渡阵 B \boldsymbol{B} B P = A − 1 B \boldsymbol{P}=\boldsymbol{A}^{-1}\boldsymbol{B} P=A1B为基 A A A到基 B B B的过渡阵, P − 1 \boldsymbol{P}^{-1} P1为基 B B B到基 A A A的过渡阵。利用过渡阵根据坐标变换公式
( x 1 x 2 ⋮ x n ) = P ( y 1 y 2 ⋮ y n ) 或 ( y 1 y 2 ⋮ y n ) = P − 1 ( x 1 x 2 ⋮ x n ) . \begin{pmatrix}x_1\\x_2\\\vdots\\x_n\end{pmatrix}=\boldsymbol{P}\begin{pmatrix}y_1\\y_2\\\vdots\\y_n\end{pmatrix}\text{或}\begin{pmatrix}y_1\\y_2\\\vdots\\y_n\end{pmatrix}=\boldsymbol{P}^{-1}\begin{pmatrix}x_1\\x_2\\\vdots\\x_n\end{pmatrix}. x1x2xn =P y1y2yn y1y2yn =P1 x1x2xn .即可完成同一向量在不同基下的坐标计算。
例1 用Python计算ℝ 3 ^3 3的向量 β = ( 1 0 − 4 ) \boldsymbol{\beta}=\begin{pmatrix}1\\0\\-4\end{pmatrix} β= 104 在基底 α 1 = ( 2 2 − 1 ) , α 2 = ( 2 − 1 2 ) , α 3 = ( − 1 2 2 ) \boldsymbol{\alpha}_1=\begin{pmatrix}2\\2\\-1\end{pmatrix},\boldsymbol{\alpha}_2=\begin{pmatrix}2\\-1\\2\end{pmatrix},\boldsymbol{\alpha}_3=\begin{pmatrix}-1\\2\\2\end{pmatrix} α1= 221 ,α2= 212 ,α3= 122 下的坐标。
:已知基底 α 1 , α 2 , α 3 \boldsymbol{\alpha}_1,\boldsymbol{\alpha}_2,\boldsymbol{\alpha}_3 α1,α2,α3在自然基下的坐标,故从自然基 e 1 , e 2 , e 3 \boldsymbol{e}_1,\boldsymbol{e}_2,\boldsymbol{e}_3 e1,e2,e3到基 α 1 , α 2 , α 3 \boldsymbol{\alpha}_1,\boldsymbol{\alpha}_2,\boldsymbol{\alpha}_3 α1,α2,α3的过渡阵为 P = ( 2 2 − 1 2 − 1 2 − 1 2 2 ) \boldsymbol{P}=\begin{pmatrix}2&2&-1\\2&-1&2\\-1&2&2\end{pmatrix} P= 221212122 。要求 β = ( 1 0 − 4 ) \boldsymbol{\beta}=\begin{pmatrix}1\\0\\-4\end{pmatrix} β= 104 在基 α 1 , α 2 , α 3 \boldsymbol{\alpha}_1,\boldsymbol{\alpha}_2,\boldsymbol{\alpha}_3 α1,α2,α3下的坐标,只要算得 α 1 , α 2 , α 3 \boldsymbol{\alpha}_1,\boldsymbol{\alpha}_2,\boldsymbol{\alpha}_3 α1,α2,α3到自然基底的过渡阵 P − 1 \boldsymbol{P}^{-1} P1,并用坐标变换公式计算 P − 1 β \boldsymbol{P}^{-1}\boldsymbol{\beta} P1β即得。下列代码完成计算

import numpy as np                              #导入numpy
from fractions import Fraction as F             #导入Fraction
np.set_printoptions(formatter={'all':lambda x:
                               str(F(x).limit_denominator())})
P=np.array([[2,2,-1],                           #设置过渡矩阵P
            [2,-1,2],
            [-1,2,2]],dtype='float')
b=np.array([1,0,-4],dtype='float').reshape(3,1) #向量在自然基下坐标
P1=np.linalg.inv(P)                             #P的逆
s=np.matmul(P1,b)                               #在新基下的坐标
print(s)

程序的第5~7行设置从自然基 e 1 , e 2 , e 3 \boldsymbol{e}_1,\boldsymbol{e}_2,\boldsymbol{e}_3 e1,e2,e3到基 α 1 , α 2 , α 3 \boldsymbol{\alpha}_1,\boldsymbol{\alpha}_2,\boldsymbol{\alpha}_3 α1,α2,α3的过渡阵P。第8行设置向量在自然基下的坐标。第9行调用numpy.linalg的inv函数计算P的逆矩阵P1。第10行调用numpy的matmul函数计算P1与b的积s。运行程序,输出

[[2/3]
 [-2/3]
 [-1]]

即向量 β \boldsymbol{\beta} β在基 { α 1 , α 2 , α 3 } \{\boldsymbol{\alpha}_1,\boldsymbol{\alpha}_2,\boldsymbol{\alpha}_3\} {α1,α2,α3}下的坐标为 ( 2 3 − 2 3 − 1 ) \begin{pmatrix}\frac{2}{3}\\-\frac{2}{3}\\-1\end{pmatrix} 32321
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
代码诚可贵,原理价更高。若为AI学,读正版书好

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值