Предположим, у нас есть набор точек с ограничением, что для каждой точки все координаты неотрицательны, а сумма координат равна 1. Это ограничивает точки, чтобы они лежали в 3-мерном симплексе, поэтому имеет смысл попробуйте отобразить его обратно в трехмерное пространство для визуализации.
Карта, которую я ищу, будет иметь крайние точки (1,0,0,0), (0,1,0,0), (0,0,1,0) и (0,0,0 1) к вершинам «хорошо расположенного» правильного тетраэдра. В частности, центр тетраэдра будет в начале координат, одна вершина будет лежать на оси z, одна грань параллельна плоскости x, y, а одна грань параллельна оси x.
Вот код, который делает аналогичные вещи для точек в 3-х измерениях, но не кажется очевидным, как расширить его до 4. В основном я ищу 4-мерные эквиваленты функций tosimplex (который переводит 4 измерения в 3) и это обратно от простого
A = Sqrt[2/3] {Cos[#], Sin[#], Sqrt[1/2]} & /@
Table[Pi/2 + 2 Pi/3 + 2 k Pi/3, {k, 0, 2}] // Transpose;
B = Inverse[A];
tosimplex[{x_, y_, z_}] := Most[A.{x, y, z}];
fromsimplex[{u_, v_}] := B.{u, v, Sqrt[1/3]};
(* checks *)
extreme = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}};
Graphics[Polygon[tosimplex /@ extreme]]
fromsimplex[tosimplex[#]] == # & /@ extreme
Ответ:
Простая переформулировка ответа Дейнста в терминах матриц дает следующее. (1 / sqrt [4] является 4-й координатой, потому что это расстояние до симплекс-центра)
A = Transpose[{{-(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 = Inverse[A];
tosimplex[{x_, y_, z_, w_}] := Most[A.{x, y, z, w}];
fromsimplex[{t_, u_, v_}] := B.{t, u, v, 1/Sqrt[4]};
(* Checks *)
extreme = Table[Array[Boole[# == i] &, 4], {i, 1, 4}];
Graphics3D[Sphere[tosimplex[#], .1] & /@ extreme]
fromsimplex[tosimplex[#]] == # & /@ extreme