向量空间中两组基
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=A−1B为基
A
A
A到基
B
B
B的过渡阵,
P
−
1
\boldsymbol{P}^{-1}
P−1为基
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}.
x1x2⋮xn
=P
y1y2⋮yn
或
y1y2⋮yn
=P−1
x1x2⋮xn
.即可完成同一向量在不同基下的坐标计算。
例1 用Python计算ℝ
3
^3
3的向量
β
=
(
1
0
−
4
)
\boldsymbol{\beta}=\begin{pmatrix}1\\0\\-4\end{pmatrix}
β=
10−4
在基底
α
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=
22−1
,α2=
2−12
,α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=
22−12−12−122
。要求
β
=
(
1
0
−
4
)
\boldsymbol{\beta}=\begin{pmatrix}1\\0\\-4\end{pmatrix}
β=
10−4
在基
α
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}
P−1,并用坐标变换公式计算
P
−
1
β
\boldsymbol{P}^{-1}\boldsymbol{\beta}
P−1β即得。下列代码完成计算
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}
32−32−1
。
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
代码诚可贵,原理价更高。若为AI学,读正版书好。