1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #define eps 1e-6
 5 #define M 15
 6 using namespace std;
 7 double a[M],b[M][M];
 8 int n;
 9 int main()
10 {
11     scanf("%d",&n);
12     for(int i=1;i<=n;i++)
13       scanf("%lf",&a[i]);
14     for(int i=1;i<=n;i++)
15       for(int j=1;j<=n;j++)
16         {
17             double t;
18             scanf("%lf",&t);
19             b[i][j]=2*(t-a[j]);
20             b[i][n+1]+=t*t-a[j]*a[j]; 
21         }
22     for(int i=1;i<=n;i++)
23       {
24         int to;
25         for(to=i;to<=n;to++)
26           if(b[to][i]!=0)
27             break;
28         if(i!=to)
29           for(int j=1;j<=n+1;j++)
30             swap(b[i][j],b[to][j]);
31         double t=b[i][i];
32         for(int j=i;j<=n+1;j++)
33           b[i][j]/=t;
34         for(int j=1;j<=n;j++)
35           if(j!=i)
36             {
37                 t=b[j][i];
38                 for(int k=1;k<=n+1;k++)
39                   b[j][k]-=t*b[i][k];
40             }
41       }
42     for(int i=1;i<n;i++)
43       printf("%.3lf ",b[i][n+1]);
44     printf("%.3lf\n",b[n][n+1]);
45     return 0;
46 }

先假设是二维的,设圆心为(x,y),那(x1-x)^2+(y1-y)^2=(xk-x)^2+(yk-y)^2

这样n+1个点就能构造出n个方程  然后高斯消元。(高斯消元不会的看看代码就知道了)

posted on 2016-02-29 11:19  xiyuedong  阅读(149)  评论(0编辑  收藏  举报