Hejka!
Chciałabym zapytać, czy mogę poprosić kogoś o opisanie poniższego kodu, z grubsza, która część co tutaj robi?
//program dla podanych punktĂłw xi i odpowiadajacym ich wartosciom yi liczy
// wielomian Lagrange'a i przedstawia go w postaci:
// a0+a1*x+a2*x^2+....+an*x^n
//ilosc rownan n jest rowna ilosci pktow xi i yi;
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cmath>
#include <conio.h>
using namespace std;
const double EPS = 0.0000000001; // dokładność porównania z zerem
const int MAXEQ = 10; // maksymalna ilość równań w układzie
bool EliminujX(int n, double AB[][MAXEQ+1])
{
int i,j,k;
double m;
for(i = 0; i < n - 1; i++)
{
if(fabs(AB[i][i]) < EPS) return false;
for(j = i + 1; j < n; j++)
{
m = -AB[j][i] / AB[i][i];
for(k = i + 1; k <= n; k++) AB[j][k] += m * AB[i][k];
}
}
return true;
}
bool ObliczX(int n, double X[], double AB[][MAXEQ+1])
{
int i,j;
double s;
for(i = n - 1; i >= 0; i--)
{
if(fabs(AB[i][i]) < EPS) return false;
s = AB[i][n];
for(j = n - 1; j > i; j--) s -= AB[i][j] * X[j];
X[i] = (s / AB[i][i])*1;
}
return true;
}
int main(int argc, char* argv[])
{
ofstream fout;
int i,j,n,*tab;
float x,*ai,*xi,*yi;
double AB[MAXEQ][MAXEQ+1], X[MAXEQ];
cout.precision(5); // 5 cyfr po przecinku
cout.setf(ios::fixed); // format stałoprzecinkowy
cout<<"podaj ilosc rownan ";
cin>>n;
xi=new float[n];
yi=new float[n];
for(i=0;i<n;i++)
{
cout<<"podaj wsp x["<<i<<"]=";
cin>>xi[i];
}
for(i=0;i<n;i++)
{
cout<<"podaj wsp y["<<i<<"]=";
cin>>yi[i];
}
for(i=0;i<n;i++)
for(j=0;j<n+1;j++)
{
AB[i][j]=pow(xi[i],j);
if(j==n)AB[i][j]=yi[i];
}
if(EliminujX(n,AB) && ObliczX(n,X,AB))
{
for(i = 0; i < n; i++)fout << X[i] << endl;
fout.close();
}
else cout << "Rozwiazanie ukladu rownan nie powiodlo sie\n";
cout<<X[0]<<" + ";
for(i=1;i<n;i++)
{
cout<<X[i]<<"*x^"<<i<<" + ";
if(i==n-1)cout<<";";
}
cout<<endl<<endl;
system("pause");
delete [] xi;
delete [] yi;
return 0;
}
Chciałabym troszkę bardziej to zrozumieć. Byłabym mega wdzięczna za pomoc!