我正在尝试在句点内使用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;
}
答案 0 :(得分:6)
您可能没有链接到数学库。将-lm
添加到链接器选项。
(我不知道为什么cos()
移出for
循环会“运行正常”,但这个解释对你来说并不是很清楚。如果你得到一个未定义的引用对于程序的一部分中的cos()
,如果两种情况下编译器选项相同,则应该在不同的部分中获取它。)