使用(d+1)个点(或更少)在d维中创建球体



假设我在D维空间中有N个点;其中N可以是从4到D+1的数字。

我想创建一个由这N个点定义的尽可能小的球体,或者换句话说,一个包含所有N个点的最小球体(它正好穿过所有这些点)。

解的变量是它的中心和半径。

我不擅长矩阵,我想这个问题需要矩阵吗?

我相信您正在为您的点x寻找一个(最小)环。正如你所建议的,这样的对象可以通过一点线性代数来计算。

给定n维度(m <= n+1)中的一组mx,使得:

x = [x_11, x_12, ..., x_1n]
    [x_21, x_22, ..., x_2n]
    .
    .
    .
    [x_m1, x_m2, ..., x_mn]

可以写下半径为R的公共球体的方程,该球体以X = [X_1,X_2,...,X_n]为中心,穿过x中的每个点:

(x_11 - X_1)^2 + (x_12 - X_2)^2 + ... + (x_1n - X_n)^2 = R^2      (1)
(x_21 - X_1)^2 + (x_22 - X_2)^2 + ... + (x_2n - X_n)^2 = R^2      (2)
.
.
.
(x_m1 - X_1)^2 + (x_m2 - X_2)^2 + ... + (x_mn - X_n)^2 = R^2      (m)

扩展每个方程中的二次项,从方程(2)--(m)中减去(1),并进行一些操作,得到一组中心X:的线性方程

M * X = B

其中:

M = [x_11-x_21, x_12-x_22, ..., x_1n-x_2n]
    .
    .
    .
    [x_11-x_m1, x_12-x_m2, ..., x_1n-x_mn]
B = [x_11^2-x_21^2 + x_12^2-x_22^2 + ... + x_1n^2-x_2n^2] * (1/2)
    .
    .
    .
    [x_11^2-x_m1^2 + x_12^2-x_m2^2 + ... + x_1n^2-x_mn^2] * (1/2)

注意,M(m-1) x n矩阵,而B(m-1) x 1向量。

显然,当m = n+1时,矩阵是正方形的,并且中心X有一个唯一的解,完全描述了与点x相关的环。(半径可以作为从X到任何x_i的距离来获得)。

m < n+1时,解是非唯一的,并且存在一个无限族的外球面。在这种情况下,需要向矩阵M添加额外的约束以给出解决方案。

在你的情况下,我相信你可能希望约束X位于由点x描述的公共超平面上,但我会对此有更多的思考。。。

相关内容

  • 没有找到相关文章

最新更新