在for循环中使用cos()函数会得到未定义的cos错误引用

时间:2013-01-29 15:26:00

标签: c math cos

  

可能重复:
  C Build error when getting the value of sin()

我正在尝试在句点内使用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;
}

1 个答案:

答案 0 :(得分:6)

您可能没有链接到数学库。将-lm添加到链接器选项。

(我不知道为什么cos()移出for循环会“运行正常”,但这个解释对你来说并不是很清楚。如果你得到一个未定义的引用对于程序的一部分中的cos(),如果两种情况下编译器选项相同,则应该在不同的部分中获取它。)