#include<stdio.h>
#include<stdlib.h>
#include<math.h>
double a0( double * Y, int n) {
int j;
double sum= 0 ;
for ( j= 0 ; j< n; j++ ) sum+= Y[ j] ;
sum*= 1 ;
sum/= n;
return sum;
}
double ai( double * Y, int i, int n) {
int j;
double sum= 0.0 ;
for ( j
= 0 ; j
< n
; j
++ ) sum
+= Y
[ j
] * cos ( ( 2 * M_PI
* i
* ( j
+ 1 ) ) / n
) ; sum*= 2 ;
sum/= n;
return sum;
}
double bi( double * Y, int i, int n) {
int j;
double sum= 0.0 ;
for ( j
= 0 ; j
< n
; j
++ ) sum
+= Y
[ j
] * sin ( ( 2 * M_PI
* i
* ( j
+ 1 ) ) / n
) ; sum*= 2 ;
sum/= n;
return sum;
}
int main( ) {
double * Y; //alokacja wskaznika do tablicy jednowymiarowej
int n, p= 0 ; // zmienne n i p
int i; //zmienna do petli
//wczytywanie n
//alokacja dynamiczna tablicy pomiarow y
Y
= ( double * ) malloc ( n
* sizeof ( double ) ) ;
//wczytywanie po kolei pomiarow y
for ( i
= 0 ; i
< n
; i
++ ) scanf ( "%lf" ,& Y
[ i
] ) ;
//szukanie p
while ( 2 * p+ 1 < n) p++;
//wypisywanie a0 i b0
printf ( ", b0 = %lf" , bi
( Y
, 0 , n
) ) ;
//wypiswyanie ai i bi
for ( i= 1 ; i< p; i++ ) {
printf ( "a%d = %lf" , i
, ai
( Y
, i
, n
) ) ; printf ( ", b%d = %lf" , i
, bi
( Y
, i
, n
) ) ; }
return 0 ;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CiNpbmNsdWRlPG1hdGguaD4KCmRvdWJsZSBhMChkb3VibGUgKlksIGludCBuKXsKCWludCBqOwoJZG91YmxlIHN1bT0wOwoJCglmb3Ioaj0wOyBqPG47IGorKykgc3VtKz1ZW2pdOwoJc3VtKj0xOwoJc3VtLz1uOwoJCglyZXR1cm4gc3VtOwp9CgoKCmRvdWJsZSBhaShkb3VibGUgKlksIGludCBpLCBpbnQgbil7CglpbnQgajsKCWRvdWJsZSBzdW09MC4wOwoJCglmb3Ioaj0wOyBqPG47IGorKykgc3VtKz1ZW2pdKiBjb3MoKDIqTV9QSSppKihqKzEpKS9uKTsKCXN1bSo9MjsKCXN1bS89bjsKCQoJcmV0dXJuIHN1bTsKfQoKCmRvdWJsZSBiaShkb3VibGUgKlksIGludCBpLCBpbnQgbil7CglpbnQgajsKCWRvdWJsZSBzdW09MC4wOwoJCglmb3Ioaj0wOyBqPG47IGorKykgc3VtKz1ZW2pdKnNpbigoMipNX1BJKmkqKGorMSkpL24pOwoJc3VtKj0yOwoJc3VtLz1uOwoJCglyZXR1cm4gc3VtOwp9CgoKCmludCBtYWluKCl7CgkKCWRvdWJsZSAqWTsgLy9hbG9rYWNqYSB3c2them5pa2EgZG8gdGFibGljeSBqZWRub3d5bWlhcm93ZWoKCQoJaW50IG4sIHA9MDsgLy8gem1pZW5uZSBuIGkgcAoJaW50IGk7IC8vem1pZW5uYSBkbyBwZXRsaQoJCgkvL3djenl0eXdhbmllIG4KCXByaW50ZigiVHlwZSBuOlxuIik7CglzY2FuZigiJWQiLCZuKTsKCQoJLy9hbG9rYWNqYSBkeW5hbWljem5hIHRhYmxpY3kgcG9taWFyb3cgeQoJWT0gKGRvdWJsZSopIG1hbGxvYyhuKnNpemVvZihkb3VibGUpKTsgCgkKCS8vd2N6eXR5d2FuaWUgcG8ga29sZWkgcG9taWFyb3cgeQoJcHJpbnRmKCJUeXBlIHkxLi4ueW46IFxuIik7Cglmb3IoaT0wOyBpPG47IGkrKykgc2NhbmYoIiVsZiIsJllbaV0pOwoJCgkKCS8vc3p1a2FuaWUgcAoJd2hpbGUoMipwKzE8bikgcCsrOyAKCQoJLy93eXBpc3l3YW5pZSBhMCBpIGIwCglwcmludGYoImEwID0gJWxmIiwgYTAoWSxuKSk7CglwcmludGYoIiwgYjAgPSAlbGYiLCBiaShZLDAsbikpOwoJcHJpbnRmKCJcbiIpOwoJCgkvL3d5cGlzd3lhbmllIGFpIGkgYmkKCWZvcihpPTE7IGk8cDsgaSsrKXsKCQlwcmludGYoImElZCA9ICVsZiIsIGksIGFpKFksaSxuKSk7CgkJcHJpbnRmKCIsIGIlZCA9ICVsZiIsIGksIGJpKFksaSxuKSk7CgkJcHJpbnRmKCJcbiIpOwoJfQoJCgoJcmV0dXJuIDA7Cn0=