生成与任何维度中的一组其他向量正交的向量

时间:2018-06-02 19:23:46

标签: python matrix orthogonal

假设我有一组彼此正交的向量$ a_1,...,a_d $。现在,我想找到另一个与所有其他向量正交的向量$ a_ {d + 1} $。

  1. 有没有一种有效的算法来实现这一目标?我只能考虑在最后添加一个随机向量,然后应用gram-schmidt。

  2. 有没有python库已经实现了这个目标?

1 个答案:

答案 0 :(得分:2)

Related。无法说出最优性,但这是一个有效的解决方案。好的是<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:system="clr-namespace:System;assembly=mscorlib" xmlns:options="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options"> <Application.Resources> <ResourceDictionary> <Color x:Key="InformationColor">#147ec9</Color> <SolidColorBrush x:Key="InformationColorBrush" Color="{StaticResource InformationColor}" options:Freeze="True" /> <Color x:Key="SuccessColor">#11ad45</Color> <SolidColorBrush x:Key="SuccessColorBrush" Color="{StaticResource SuccessColor}" options:Freeze="True" /> <Color x:Key="ErrorColor">#e60914</Color> <SolidColorBrush x:Key="ErrorColorBrush" Color="{StaticResource ErrorColor}" options:Freeze="True" /> <Color x:Key="WarningColor">#f5a300</Color> <SolidColorBrush x:Key="WarningColorBrush" Color="{StaticResource WarningColor}" options:Freeze="True" /> </ResourceDictionary> </Application.Resources> 完成所有繁重的工作,所以这可能比手工制作Gram-Schmidt更快更强大。此外,this表明复杂性并不比Gram-Schmidt差。

这个想法:

  1. 将输入正交向量视为矩阵numpy.linalg的列。
  2. 将另一个随机列添加到O。通常O将保持满秩矩阵。
  3. 使用O选择b = [0, 0, ..., 0, 1]
  4. 解决最小二乘问题len(b) = d + 1。然后,x O = b保证为非零且与x的所有原始列正交。
  5. O