ベクトルのみを使用して直交基底を構築する方法を知っている人はいますか? v1 = [ab -a -b]' の形式のベクトルがあります。'a' と 'b' は実数です。私は「アドホックな方法」でビルドしようとしましたが、何もありません.2つの直交ベクトルしか得られませんでした:
v1 = [ab -a -b]' v2 = [a -ba -b]'
直交基底 {v1, v2, v3, v4} を完成させるには、さらに 2 つのベクトルが必要です。誰でも私を助けることができますか?
ありがとう...
ベクトルのみを使用して直交基底を構築する方法を知っている人はいますか? v1 = [ab -a -b]' の形式のベクトルがあります。'a' と 'b' は実数です。私は「アドホックな方法」でビルドしようとしましたが、何もありません.2つの直交ベクトルしか得られませんでした:
v1 = [ab -a -b]' v2 = [a -ba -b]'
直交基底 {v1, v2, v3, v4} を完成させるには、さらに 2 つのベクトルが必要です。誰でも私を助けることができますか?
ありがとう...
Mathematica ではできませんが、少なくとも MATLAB では次のようにします...
syms a b
null([a b -a -b])
ans =
[ -b/a, 1, b/a]
[ 1, 0, 0]
[ 0, 1, 0]
[ 0, 0, 1]
この配列の列は元のベクトルに直交し、nullspace にまたがります。
v3 = [baba]', v4 = [b -a -ba]' は、心地よい対称性を持っています。
単位行列を使用して拡張し、そのベクトルのセットを直交化して、指定したものを前に置くことができます。ここに例があります。
SeedRandom[1111];
{a, b} = RandomInteger[{-10, 10}, 2];
vec = {a, b, -a, -b}
mat = Join[{vec}, IdentityMatrix[Length[vec]]];
(* Out[39]= {-8, 5, 8, -5} *)
orthog = Drop[Orthogonalize[mat], -1]
(* Out[62]= {{-4*Sqrt[2/89], 5/Sqrt[178],
4*Sqrt[2/89], -(5/Sqrt[178])},
{Sqrt[57/89], 20/Sqrt[5073], 32/Sqrt[5073], -(20/Sqrt[5073])},
{0, Sqrt[89/114], -20*Sqrt[2/5073], 25/Sqrt[10146]},
{0, 0, 5/Sqrt[89], 8/Sqrt[89]}} *)