有人知道我如何只使用向量构建正交基吗?我有一个向量,形式为v1=[ab-a-b]',其中"a"one_answers"b"是实数。我确实尝试过以"即席方式"构建,但一无所获,我只得到了两个正交向量:
v1=[a b-a-b]'v2=[a-b a-b]'
我需要更多的两个向量来完成正交基{v1,v2,v3,v4}。有人能帮我吗?
谢谢。。。
我不能在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]
此数组的列与原始向量正交,并跨越空空间。
v3=[b a b a]',v4=[b-a-b a]'具有令人愉快的对称性。
您可以用一个单位矩阵进行扩充,并将该组向量正交化,其中给定的向量位于前面。下面是一个例子。
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]}} *)