题意
在$n$维空间里, 已知一个球球面上$n+1$个点的坐标, 求此球球心
分析
二维平面上的圆上的点与圆心$(a,b)$的距离为
$$(x-a)^2+(y-b)^2=r^2$$
三维空间上的球上的点与球心$(a,b,c)$的距离为
$$(x-a)^2+(y-b)^2+(z-c)^2=r^2$$
在n维空间上的球上的点与球心$(a_1,a_2,a_3,…,a_n)$的距离为
$$\sum_{i=1}^{n}(x_i-a_i)^2=r^2$$
在二维平面上, 可由三点(不共线)确定一个圆;
在三维上四点(不共线)确定一个球;
在n维平面上, 则可由$n+1$个点(不共线)确定一个球.
相邻的两个点表示的方程
$$ \sum_{i=1}^{n}(x_i-a_i)^2 = r^2 $$
$$ \sum_{i=1}^{n}(y_i-a_i)^2 = r^2 $$
我们用上式减下式,可以得到
$$a_1(x_1-y_1)+a_2(x_2-y_2)+…+a_n(x_n-y_n)=\frac{ (x_1^2-y_1^2)+(x_2^2-y_2^2)+…+(x_n^2-y_n^2)}{2}$$
于是由$n+1$个方程组转化为了$n$个一维的方程组再用高斯消元法即可.
代码
1 | #include <cstdio> |