高斯消元

 高斯消元+多元二次式转多元一次式

:注意:fabs()

    不能除以0

    倒序

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<ctime>
#include<bitset>
#include<algorithm>
#include<deque>
#include<queue>
#include<iomanip>
#define _f(i,a,b) for(register int i=a;i<=b;++i)
#define f_(i,a,b) for(register int i=a;i>=b;--i)
#define inf 0x7fffffff
#define chu printf
#define ll long long
using namespace std;
const int N=100;
inline int re()
{
    int h=1,x=0;char ch=getchar();
    while(ch<'0'||ch>'9')if(ch=='-')h=-1,ch=getchar();
    while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
    return x*h;
}
/*
n*n矩阵a 
先来一个 base[][],
for(i:1-n)
for(J:1-n)
a[i][j]=base[i][j]-base[i+1][j]
然后平方base
for(i:1-n)
for(j:)
a[i][n]=base[i][j]-base[i+1][j] (n个)
预处理完了
用a[][]高斯消元就行 
*/
const double eps=1e-5;
int n; double a[N][N],base[N][N];
//循环行列找最大,特判continue
//自己除变1
//下面的乘单位1个 
//回溯解出方程 (0特判,倒序) 
//不用特判解,有位唯一 
void jfc()
{
    int hang,lie;
    for(hang=1,lie=1;lie<=n;lie++)
    {
        int t=hang;
        for(int i=hang;i<=n;i++)
        if(fabs(a[i][lie])>fabs(a[t][lie]))t=i;//!!!!这里要用绝对值
        //因为有负数的话如果比0小那后面判断就直接掠过这一列了 
        if(fabs(a[t][lie])<eps)continue;
        for(int i=lie;i<=n+1;i++)swap(a[t][i],a[hang][i]);
        f_(i,n+1,lie)a[hang][i]/=a[hang][lie];
        _f(i,hang+1,n)
        if(fabs(a[i][lie])>eps)
        f_(j,n+1,lie)
        a[i][j]-=a[hang][j]*a[i][lie];
        ++hang;
    }
f_(i,n,1)
     {
         f_(j,i-1,1)
         {
             a[j][n+1]-=a[j][i]*a[i][n+1];
             a[j][i]=0;
         }
    } //解完了?? 
}
int main()
{
    //freopen("exam.txt","r",stdin);
    //chu("jj\n");
    scanf("%d",&n);
//    chu("kk\n");
    _f(i,1,n+1)
    _f(j,1,n)
    scanf("%lf",&base[i][j]);
_f(i,1,n)
{
    double sum=0;
    _f(j,1,n)
    {
        a[i][j]=2*(base[i][j]-base[i+1][j]);
        sum+=base[i][j]*base[i][j]-base[i+1][j]*base[i+1][j];
    }
    a[i][n+1]=sum;
}
    jfc();
    _f(i,1,n-1)
    chu("%.3lf ",a[i][n+1]);
    chu("%.3lf",a[n][n+1]);
    return 0;
}

posted on 2022-02-20 12:12  HZOI-曹蓉  阅读(26)  评论(0)    收藏  举报