首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >渐近产生非正交列空间

渐近产生非正交列空间
EN

Stack Overflow用户
提问于 2022-11-10 18:40:10
回答 1查看 22关注 0票数 0

当计算含有无理数的矩阵的列空间(例如sqrt(3))时,sympy.columnspace()产生两个不正交的向量(例如,V_1^TV_2 != 0)。

鉴于矩阵A:

代码语言:javascript
复制
A = Matrix([[1.25000000000000, 0.25*sqrt(3), 0.500000000000000, 0, 1.25000000000000,  -0.25*sqrt(3)], [0.25*sqrt(3), 0.750000000000000, -0.5*sqrt(3), 0, 0.25*sqrt(3), -0.750000000000000], [0.500000000000000, -0.5*sqrt(3), 2, 0, 0.500000000000000, 0.5*sqrt(3)], [0, 0, 0, 0, 0, 0], [1.25000000000000, 0.25*sqrt(3), 0.500000000000000, 0, 1.25000000000000, -0.25*sqrt(3)], [-0.25*sqrt(3), -0.750000000000000, 0.5*sqrt(3), 0, -0.25*sqrt(3), 0.750000000000000]])

Sympy计算列空间为:

代码语言:javascript
复制
V = A.columnspace()

V = [Matrix([
[         1.25],
[ 0.25*sqrt(3)],
[          0.5],
[            0],
[         1.25],
[-0.25*sqrt(3)]]), Matrix([
[0.25*sqrt(3)],
[        0.75],
[-0.5*sqrt(3)],
[           0],
[0.25*sqrt(3)],
[       -0.75]])]

但是,构成列空间的两个向量的点积是非零的:

代码语言:javascript
复制
B = V[0].dot(V[1])

B = 0.75*sqrt(3)

为什么结果的列空间是非正交的?我试图简化上面的表达式以删除小数(和潜在的舍入错误),但没有效果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-10 19:54:15

构成列空间的向量不一定是正交的。在上面的例子中,列空间只是矩阵的前两列。

若要正交化,请使用Gram-Schmidt过程:

代码语言:javascript
复制
V = GramSchmidt(A.columnspace(),True)

其中,可选参数True对应于标准化结果向量。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74393864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档