0

重複の可能性:
sin() の値を取得する際の C ビルド エラー

期間内に 100 間隔を使用して関数を統合しようとしているので、for ループを使用しています。関数には cos(ここにあるもの) が含まれていますが、何らかの理由で for ループ内で実行されません。for ループの外に移動すると、正常に動作します。私は #include を持っているので、わかりません。どんな助けでも大歓迎です。ありがとう。

#include <stdio.h>
#include <math.h>
//float t = 0.000000;
double T = .001;
int n = 100;
double pi = 3.141592654;
double a[5];
double b[5];
double function_results[100];
double anfunction_results[100];
double bnfunction_results[100];
double final = 0.000000000000;
double anfinal = 0.000000000;
double k = 0.000000;
double function(float t){
double f = 3*pow(t,2);
return f;
}

int main()
{   

//double w = 2*pi/T;
double h = T/n;
int i = 1;

for(; i<100; i++){
    double iterate = -T/2 + h*i;
    function_results[i] = function(iterate);
    final = final + function_results[i];
}

a[0] = (h/3)*(function(-T/2) + final+function(T/2))/T;
printf("%.12f \n",a[0]);

int p = 1;
int l = 1;
for(; l<=5; l++){
for(; p<100; p++){
    double iteration = -T/2 + h*p;
    k = l+.0000001;
    anfunction_results[p] =     3*pow(iteration,2)*cos(k*iteration*2.00000*pi/T*pi/180.00000);
    anfinal = anfunction_results[p] + anfinal;
}
a[l] = (2/T)*(h/3)*(3*pow(-T/2,2)*cos(-T/2.0000) + anfinal + 3*pow(T/2,2)*cos(k*T/2.00000*2.00000*pi/T*pi/180.00000));
}


//printf("%.12f \n",a[1]);
//printf("%.12f \n",a[2]);
//printf("%.12f \n",a[3]);
//printf("%.12f \n",a[4]);
//printf("%.12f \n",a[5]);
return 0;
}
4

1 に答える 1

6

おそらく数学ライブラリにリンクしていません。-lmリンカー オプションに追加します。

cos()(ループの外に移動すると「正常に実行される」理由はわかりませんforが、この説明はあなたの側ではあまり明確ではありません。cos()プログラムの一部で未定義の参照を取得する場合は、それを取得する必要があります両方のケースでコンパイラ オプションが同じである場合は、別の部分も同様です)。

于 2013-01-29T15:27:55.797 に答える