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

Hol*_*ber 0 c math trigonometry

可能重复:
获取sin()的值时出现C build错误

我试图在一段时间内使用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;
}
Run Code Online (Sandbox Code Playgroud)

cdh*_*wie 6

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

(我不知道为什么它会在cos()移出for循环后"运行正常" ,但是你的解释并不是很清楚.如果你cos()在程序的一个部分得到一个未定义的引用,你应该得到它如果编译器选项在两种情况下都相同,那么也是一个不同的部分.)

  • 除非`cos`的参数在循环外移动时是常量.然后编译器在编译期间对其进行评估,并且由于没有从程序中调用"cos",因此无需链接数学库. (8认同)