有乙個球形空間產生器能夠在n維空間中產生乙個堅硬的球體。
現在,你被困在了這個n維球體中,你只知道球面上n+1個點的座標,你需要以最快的速度確定這個n維球體的球心座標,以便於摧毀這個球形空間產生器。
注意:資料保證有唯一解。
輸入格式
第一行是乙個整數n。
接下來的n+1行,每行有n個實數,表示球面上一點的n維座標。
每乙個實數精確到小數點後6位,且其絕對值都不超過20000。
輸出格式
有且只有一行,依次給出球心的n維座標(n個實數),兩個實數之間用乙個空格隔開。
每個實數精確到小數點後3位。
資料範圍
1≤n≤10
輸入樣例:
輸出樣例:2
0.0 0.0
-1.0 1.0
1.0 0.0
0.500 1.500
解題步驟:因為所有點到球心的距離相等,所以設球心為(x1,x2,x3,...xn),則sum[(aij^2-xj^2)]=c(j從0到n,c為常數),這就是乙個i從1到n+1的乙個n+1元2次方程組,同時消去c得sum(aij^2-a(i+1)j^2-2*xj*(aij-a(i+1)j))=0(j從1到n,i=1,2,3...,n)
將變數xj放在左邊,常數aij移到右邊:
sum(2(aij-a(i+1)j)*xj)=sum(aij^2-a(i+1)j^2)(j從1到n,i=1,2,3,...,n)
然後用高斯消元解出x即可
完整**:
#include #include #include using namespace std;
double a[21][21],b[21],c[21][21];
int n;
void init()
}}void work()
swap(b[i],b[j]);}}
for(int j=1;j<=n;j++)
b[j]-=b[i]*rate;}}
}int main()
}init();
work();
for(int i=1;i<=n;i++)
return 0;
}
球形空間產生器 高斯消元 模擬退火
球型空 間產生器 球型空間 產生器 desc ript iond escr ipti on有乙個球形空間產生器能夠在 n n 維空間中產生乙個堅硬的球體。現在,你被困在了這個 n 維球體中,你只知道球面上 n 1 n 1 個點的座標,你需要以最快的速度確定這個 n n 維球體的球心座標,以便於摧毀這...
BZOJ1013 球形空間產生器(高斯消元)
有乙個球形空間產生器能夠在n維空間中產生乙個堅硬的球體。現在,你被困在了這個n維球體中,你只知道球 面上n 1個點的座標,你需要以最快的速度確定這個n維球體的球心座標,以便於摧毀這個球形空間產生器。第一行是乙個整數n 1 n 10 接下來的n 1行,每行有n個實數,表示球面上一點的n維座標。每乙個實...
acwing 207 球形空間產生器 高斯消元
題目位址 題目指出有解。設球心為 x1,x2,xn 則我們可以得到 j 0n a i,j xj 2 sum n a x j 2 j 0n ai,j x j 2 c。將其化簡,讓第一行減去第二行,依次類推。可以得到 j 0n a i,j ai 1 j j 0 n ai j2 ai 1 j2 sum n...