#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
const double eps=1e-9;
double a[4][5]={{1,-1,-2,-5,10},{-2,7,6,-12,6},{3,-2,-5,-17,31},{-5,-2,9,27,-63}};
double ans[10];
bool l[10];
int solve(double a[][5],bool l[],double ans[],const int &n)
{
int res=0,r=0;
for(int i=0;i<n;i++)
{
l=false;
}
for(int i=0;i<n;i++)
{
for(int j=r;j<n;j++)
if(fabs(a[j])>eps)
{
for(int k=i;k<=n;k++)
swap(a[j][k],a[k]);
break;
}
if(fabs(a)<eps)
{
res++; continue;
}
for(int j=0;j<n;j++)
if(j!=r&&fabs(a[j])>eps)
{
double tmp=a[j]/a;
for(int k=i;k<=n;k++)
a[j][k]-=tmp*a[k];
}
l=true; r++;
}
for(int i=0;i<n;i++)
{
if(l)
for(int j=0;j<n;j++)
if(fabs(a[j])>eps)
ans=a[j][n]/a[j];
}
return res;
}
int main()
{
cout<<solve(a,l,ans,4)<<endl;
for(int i=0;i<4;i++,putchar(10))
for(int j=0;j<5;j++)
{
if(fabs(a[j])<eps) a[j]=0;
cout<<a[j]<<" ";
}
for(int i=0;i<4;i++,putchar(10))
cout<<"x"<<i<<" "<<ans;
return 0;
}
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> using namespace std; const double eps=1e-8; void gauss(double a[][101],double ans[],const int n) { int r=0; for(int i=0;i<n;i++) { for(int j=r;j<n;j++) { if(fabs(a[j] { for(int k=i;k<=n;k++) { swap(a[j][k],a } break; } } if(fabs(a for(int j=0;j<n;j++) { if(j!=r&&fabs(a[j] { double tmp=a[j] for(int k=i;k<=n;k++) { a[j][k]-=tmp*a } } } r++; } for(int i=0;i<n;i++) { for(int j=0;j<n;j++) if(fabs(a { ans if(fabs(ans ans } } } int main() { int n;double a[103][101],ans[101]; cin>>n; for(int i=0;i<n;i++) for(int j=0;j<=n;j++) cin>>a gauss(a,ans,n); for(int i=0;i<n;i++,putchar(10)) cout<<i<<" : "<<ans return 0; } /* 3 2 1 -1 8 -3 -1 2 -11 -2 1 2 -3 */ |