• 球形空间产生器


    题目链接

    题意:给出求在n维坐标系中,到n+1个点距离都相同的点。

    思路:我们不妨设n维球心的坐标为(x1,x2,x3,...,xn),那么我们可以用第一个点和剩余的n个点建立方程得到距离相等的式子,然后高斯消元即可解出球心坐标。以三维空间为例,令读入的第一个点坐标为(a,b,c),第二个点为(a1,b1,c1),则 第一个方程为(a1-x1)^2+(b1-x2)^2+(c1-x3)^2=(a-x1)^2+(b-x2)^2+(c-x3)^2,同理可得剩下的方程,展开合并后可得2(a1-a)x1+2(b1-b)x2+2(c1-c)x3=a1^2-a^2+b1^2-b^2+c1^2-c^2。

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<queue>
    #include<cmath>
    #include<map>
    #include<vector>
    #define ll long long
    using namespace std;
    double a[20][20],b[20],c[20][20];
    int n;
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n+1;i++)
        {
            for(int j=1;j<=n;j++)
            {
                scanf("%lf",&a[i][j]);
            }
        }
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=n;j++)
            {
                c[i][j]=2*(a[i][j]-a[i+1][j]);
                b[i]+=a[i][j]*a[i][j]-a[i+1][j]*a[i+1][j];
                printf("%.3lf ",c[i][j]);
            }
            printf("%.3lf
    ",b[i]);
        }
        for(int i=1;i<=n;i++)
        {
            for(int j=i;j<=n;j++)
            {
                if(fabs(c[j][i])>1e-8)
                {
                    for(int k=1;k<=n;k++)
                    {
                        swap(c[i][k],c[j][k]);
                    }
                    swap(b[i],b[j]);
                }
            }
            for(int j=1;j<=n;j++)
            {
                if(i==j)
                continue;
                double rate=c[j][i]/c[i][i];
                for(int k=i;k<=n;k++)
                c[j][k]-=c[i][k]*rate;
                b[j]-=b[i]*rate;
            }
        }
        for(int i=1;i<n;i++)
        printf("%.3lf ",b[i]/c[i][i]);
        printf("%.3lf
    ",b[n]/c[n][n]);
     } 
  • 相关阅读:
    ASP.NET读入文件(以txt为例)
    二叉树的相关规律公式
    HashTable的一点儿常识
    ASP.NET页面跳转方式及页面传值方式
    事件的那些事儿
    程序集和项目、命名空间、动态链接库的区别
    EventHandlerList的一些发现
    《Ajax基础教程》电子版下载
    数据库优化设计
    创业者的自我训练:
  • 原文地址:https://www.cnblogs.com/2462478392Lee/p/11311941.html
Copyright © 2020-2023  润新知