5

各ポイントのすべての座標が非負であり、座標の合計が 1 に等しいという制限のあるポイントのセットがあるとします。可視化のために 3 次元空間に戻します。

私が探しているマップは、極値 (1,0,0,0)、(0,1,0,0)、(0,0,1,0) および (0,0,0,1) を取ります「うまく配置された」正四面体の頂点に。具体的には、四面体の中心が原点になり、1 つの頂点が z 軸上にあり、1 つの面が x、y 平面に平行になり、1 つのエッジが x 軸に平行になります。

これは、3 次元の点に対して同様のことを行うコードですが、それを 4 次元に拡張する方法が明らかではないようです。基本的に、関数 tosimplex (4 次元を 3 にする) の 4 次元等価物を探していますが、それは逆です。 fromsimplex

A = Sqrt[2/3] {Cos[#], Sin[#], Sqrt[1/2]} & /@
    Table[Pi/2 + 2 Pi/3 + 2 k Pi/3, {k, 0, 2}] // 転置;
B = 逆[A];
tosimplex[{x_, y_, z_}] := ほとんど[A.{x, y, z}];
fromsimplex[{u_, v_}] := B.{u, v, Sqrt[1/3]};

(*チェック*)
極端な = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}};
Graphics[Polygon[tosimplex /@extreme]]
fromsimplex[tosimplex[#]] == # & /@ エクストリーム

答え:

行列に関するdeinstの答えの直接的な再定式化は、次のようになります。(1/sqrt[4] はシンプレックス中心までの距離であるため、4 番目の座標として表示されます)

A = 転置[{{-(1/2), -(1/(2 Sqrt[3])), -(1/(2 Sqrt[6])),
     1/Sqrt[4]}, {1/2, -(1/(2 Sqrt[3])), -(1/(2 Sqrt[6])),
     1/Sqrt[4]}, {0, -(1/(2 Sqrt[3])) + Sqrt[3]/2, -(1/(2 Sqrt[6])),
     1/Sqrt[4]}, {0, 0, Sqrt[2/3] - 1/(2 Sqrt[6]), 1/Sqrt[4]}}];
B = 逆[A];
tosimplex[{x_, y_, z_, w_}] := ほとんど[A.{x, y, z, w}];
fromsimplex[{t_, u_, v_}] := B.{t, u, v, 1/Sqrt[4]};

(*チェック*)
極端な = テーブル [配列 [ブール [# == i] &, 4], {i, 1, 4}];
Graphics3D[Sphere[tosimplex[#], .1] & /@ Extreme]
fromsimplex[tosimplex[#]] == # & /@ エクストリーム
4

2 に答える 2

8

あなたがしたい

   (1,0,0,0) -> (0,0,0)
   (0,1,0,0) -> (1,0,0)
   (0,0,1,0) -> (1/2,sqrt(3)/2,0)
   (0,0,0,1) -> (1/2,sqrt(3)/6,sqrt(6)/3))

そして、それは線形変換なので、変換します

   (x,y,z,w) - > (y + 1/2 * (z + w), sqrt(3) * (z / 2 + w / 6), sqrt(6) * w / 3)

編集 原点の中心が必要です。4 つの点の平均を引くだけです。ごめん

(1/2, sqrt(3)/6, sqrt(6) / 12)
于 2010-08-17T21:30:10.617 に答える
1

1つの可能性:

  1. \vec{v}_i四面体の中心から各頂点に向かって、4つの(非直交)3ベクトルを生成します。
  2. 4つの位置ごとx = (x_1 .. x_4)に、ベクトルの合計を形成し\Sum_i x_i*\vec{v}_iます。

もちろん、このマッピングは一般的に一意ではありませんが、x_iの合計が1になると物事が制約されることを条件とします。

于 2010-08-17T21:24:39.803 に答える