witam mam taki program do obbliczania aproksymacji sredniokwadratowej punktowej wielomianowej, czy pomocy wielomianow grama (niech nikogo to nie przeraza, pytanie jest o przepelnienie stosu)
#include <stdio.h>
#include <string.h>
#include <math.h>
double gram(double q, int k, int n);
double newton(int k, int s);
int silnia(int arg);
double wiel_czyn(double q, double s);
double wwu(int j, int n, double *x); //wspolczynnik wielomianu uogolnionego
double wiel_aprox(int m, int n, double x); //wielomian aproksymujacy m-tego stopnia
void wczytaj(void); //funkcja czytajaca dane.
double f[5]; //wartosci funkcji w punktach aproxymacji
double x[5]; //dane punkty aproxymacji
double a[5]; //a0...an;
double gram (double q, int k, int n)
{
int s;
double pom;
for(s = 0; s<= k; s++)
{
pom += pow(-1,s)*newton(k,s)*newton((k+s), s)*(wiel_czyn(q,s)/wiel_czyn(n,s));
}
return pom;
}
double newton(int s, int k)
{
return (silnia(k))/(silnia(s)*silnia(k-s));
}
int silnia(int arg)
{
if(arg == 0)
return 1;
else
return silnia(arg-1)*arg;
}
double wiel_czyn(double q, double s)
{
double pom = 1;
int i;
if(s == 0)
return 1;
else
for(i=0;i<=s; i++)
{
if(i == s)
{
pom *= (q - s + 1);
break;
}
pom *= (q-i);
}
return pom;
}
double wwu(int j, int n, double *x)
{
double glowna, pom1, pom2;
int i;
for(i=0; i<= n; i++)
{
pom1 += f[i]*gram(x[i],j,n);
}
for(i=0; i<= n; i++)
{
pom2 += gram(x[i],j,n)*gram(x[i],j,n);
}
glowna = pom1 / pom2;
return glowna;
}
double wiel_aprox(int m, int n, double x)
{
int j;
double pom;
for(j=0; j<=m; j++)
{
pom += wwu(j, n, &x)*gram(x, j, n);
}
return pom;
}
void wczytaj(void)
{
int i;
for(i=0; i<=5; i++)
{
printf("Podaj wspolczynnik x[%d]: ",i+1);
scanf("%d",&x[i]);
printf("Podaj wartosc funkcji f w tym punkcie f[%d]: ",i+1);
scanf("%d", &f[i]);
}
}
int main ()
{
int counter;
wczytaj();
for(counter =1; counter <=6; counter++)
{
a[counter] = wwu(counter,5,x);
}
return 1;
for(int i=0; i<=5; i++)
{
printf("a[%d] = %2.2lf",i, a[i]);
}
}
Czemu, wychodzi mi, że argument funkcji silnia jest -93456544, jak tam zawsze sa liczby 1,2,3... itd...?? proszę o pomoc, to ważny program na zaliczenie...
Pozdrawiam.