Как создать случайную выборку точек из 3-D эллипсоида с использованием Python? - PullRequest
2 голосов
/ 01 июня 2019

Я пытаюсь собрать около 1000 точек из 3-D эллипсоида, равномерно.Есть ли способ закодировать его так, чтобы мы могли получать точки, начиная с уравнения эллипсоида?

Мне нужны точки на поверхности эллипсоида.

Ответы [ 2 ]

2 голосов
/ 01 июня 2019

Рассмотрите возможность использования симуляции Монте-Карло: создайте случайную трехмерную точку; проверьте, находится ли точка внутри эллипсоида; если это так, оставь это. Повторяйте, пока не получите 1000 баллов.

P.S. Поскольку ОП изменил свой вопрос, этот ответ больше не действителен.

1 голос
/ 01 июня 2019

Дж. Ф. Уильямсон, "Случайный выбор точек, распределенных по криволинейным поверхностям", Физика в медицине и биологии 32 (10), 1987 г., описывает общий метод выбора равномерно случайной точки на параметрической поверхности.Это метод принятия / отклонения, который принимает или отклоняет каждую точку-кандидата в зависимости от ее коэффициента растяжения (нормы градиента).Чтобы использовать этот метод для параметрической поверхности, необходимо знать о ней несколько вещей, а именно: *

  • x(u, v), y(u, v) и z(u, v), которые являются функциями, генерирующимиТрехмерные координаты из двумерных координат u и v,

  • Диапазоны u и v,

  • g(point) норма градиента («коэффициент растяжения») в каждой точке поверхности, и
  • gmax, максимальное значение g для всей поверхности.

Алгоритм таков:

  • Создать точку на поверхности, xyz.
  • Если g(xyz) >= RNDU01()*gmax, где RNDU01() - случайное число в [0,1), принять точку.В противном случае повторите этот процесс.

Chen and Glotzer (2007) применяют метод к поверхности вытянутого сфероида (одна форма эллипсоида) в «Имитационных исследованиях феноменологической модели образования удлиненного вирусного капсида».", arXiv: cond-mat / 0701125 [cond-mat.soft].

...