如何在 4D 平面上的点周围找到均匀分布的点?

如何解决如何在 4D 平面上的点周围找到均匀分布的点?

我正在尝试创建一个需要我改变一组概率的模拟,即变量的总和必须为 1。

当我想改变一组 3 个概率的参数时,我将每个参数视为 3D 空间中的一个轴,并使用方程 p0 + rcos(v) 在 x + y + z = 1 平面上参数化一个圆(dot) u1 + rsin(v) (dot) u2,其中p0是表示原始概率的点,u1和u2是平行于平面的垂直向量,(dot)表示点积,r和v是自由变量.通过改变 r 并为 v 沿 2pi 选择几个点,我可以生成一组接近原始但仍然有效的概率,满足我们的约束。

我现在遇到的问题是,当我尝试对一组 4 个概率(即 4D 空间)执行此操作时,我无法想象或找到扩展此方程组的方法。有没有办法实现类似于我对 4D 案例的 3D 案例所拥有的东西?我最初为 3D 生成概率的方法是不是很蠢?如果是,那么标准的方法是什么?

解决方法

我假设你想要一个均匀分布的分布

一种方法是

  1. 对 4D 高斯分布进行采样,该分布已知在所有方向 1 上均匀分布。
  2. 在超平面 2,3 中投影样本点。
  3. 将坐标标准化为半径 1(只需除以 sqrt(sum(x**2)))。

这是一种高级方法,您可以使其更有效地用于 4D,但此实现很容易扩展到 N 维空间。

给定 4D 超平面的基础,您可以使用 3D 采样,就像将圆放置在 3D 平面上一样,对于在 3D 球体 here 中均匀采样点的教程,对于“官方”消息来源说同样的支票here

,

首先考虑 3d 情况的不同方法,它不需要任何三角函数:

您对向量元素的总和感兴趣,称之为 S(v)。

v = (2,3,5) S(v) = 10

你对 S = 1 平面感兴趣,它有一个我们称之为 k 的法向量:

k = (1/3,1/3,1/3) = (1/3)(1,1,1)

你在那个平面上有一个点 p0 (S(p0)=1),和 您想要平面中与 p0 相距 r 的一些点。

从一些随机选择的点开始,它们均匀分布在原点 x2+y2+z2

现在将每个点投影到 S=0 平面上:

v -> v - S(v)k

(注视它直到它有意义。)现在您将点分散在半径为 1 的圆盘中,垂直于 k。它们在圆盘中不均匀,靠近中间更厚,但它们在角度上是均匀的。现在缩放每个点以将其移动到半径为 r 的圆:

v -> v r/|v|

现在移动点环以p0为中心:

v -> v + p0

现在是踢球者。 您刚刚在 n 维中所做的一切都像在 3 维中一样轻松。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?