码迷,mamicode.com
首页 > 其他好文 > 详细

高斯消元-bzoj1013-球形空间产生器

时间:2017-04-29 14:23:32      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:abs   cst   size   com   ade   color   swa   .com   高斯   

This article is made by Jason-Cow.
Welcome to reprint.
But please post the writer‘s address.

http://www.cnblogs.com/JasonCow/

 

推方程设n位坐标视为方程组的n个未知数

然后化为一般式。

#include <cmath>
#include <cstdio>
#include <algorithm>
using namespace std;
typedef double db;
db a[15][15],b[15];
bool Guass(int n);
bool work();
int main(){return work();}
 
bool work(){
  int n;scanf("%d",&n);
  for(int i=1;i<=n;i++)scanf("%lf",&b[i]);
  for(int i=1;i<=n;i++)
    for(int j=1;j<=n;j++){
      db x;scanf("%lf",&x);
      a[i][j]+=2*(b[j]-x);
      a[i][n+1]+=(b[j]*b[j])-(x*x);
    }
  return Guass(n);
}
 
bool Guass(int n){
  for(int i=1;i<=n;i++){
    db Max=-1e9;int I=i;
    for(int j=i;j<=n;j++)if(fabs(a[i][j])>Max)Max=fabs(a[j][i]),I=j;
    if(I!=i)for(int j=1;j<=n+1;j++)swap(a[i][j],a[I][j]);
    db t=a[i][i];
    for(int j=i;j<=n+1;j++)a[i][j]/=t;
    for(int j=1;j<=n;j++)
      if(i!=j){
    db t=a[j][i];
    for(int k=1;k<=n+1;k++)a[j][k]-=t*a[i][k];
      }
  }
  for(int i=1;i<n;i++)printf("%.3lf ",a[i][n+1]);printf("%.3lf\n",a[n][n+1]);
  return 0;
}

 

高斯消元-bzoj1013-球形空间产生器

标签:abs   cst   size   com   ade   color   swa   .com   高斯   

原文地址:http://www.cnblogs.com/JasonCow/p/6785028.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!