假设我在D维空间中有N个点;其中N可以是从4到D+1的数字。
我想创建一个由这N个点定义的尽可能小的球体,或者换句话说,一个包含所有N个点的最小球体(它正好穿过所有这些点)。
解的变量是它的中心和半径。
我不擅长矩阵,我想这个问题需要矩阵吗?
我相信您正在为您的点x
寻找一个(最小)环。正如你所建议的,这样的对象可以通过一点线性代数来计算。
给定n
维度(m <= n+1)
中的一组m
点x
,使得:
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
描述的公共超平面上,但我会对此有更多的思考。。。