我有简单的代码为泰勒定理cosh()功能。泰勒公式Ç
我试图抓住一个错误 - 结果有时接近真实的答案。
如何正确地做到这一点?
当我开始是0,末是5,细分是5它给了很好的效果,但是当我把5开始和10结束,结果是远离预期值。
#include
#include
int poww(float number, int a)
{
float result = 1.0;
int i;
if(a != 0);
{
for(i = 0; i < a; i++) {
result = result * number;
}
}
return result;
}
int factorial(int n)
{
switch (n) {
case 0:
return 1;
break;
default:
return n * factorial(n-1);
}
}
void main()
{
puts("Enter start: ");
float start;
scanf("%f", &start);
puts("\nEnter end: ");
float end;
scanf("%f", &end);
puts("\nSubintervals:");
int subinterval;
scanf("%d", &subinterval);
float h = (end - start)/(float)subinterval;
printf("h is : %3.2f \n", h);
double x, result, temp;
int n;
for(x = start; x <= end; x += h) {
result = 0;
for(n = 0 ; ; n++) {
temp = poww(x, 2 * n)/(factorial(2 * n) * 1.0);
if(temp < 0.00001) {
break;
} else {
result = result + temp;
printf("X = %f temp = %f, result = %f\n", x, temp, result);
}
}
printf("X = %f, result = %3.2f, cosH = %3.2f\n\n", x, result, cosh(x));
}
puts("Press any key...");
getchar();
}
解决问题:
函数返回一个整数,而不是双,我也改为每浮动翻番。
2015-02-17
KurdTt-
+0
你为什么要打印exp的结果呢? –
2015-02-17 22:54:18
+0
预期结果和实际结果是什么? –
2015-02-17 22:54:54
+0
“结果有时会接近真实的答案” - 这不是你想要的吗?你希望结果远离实际答案吗? –
2015-02-17 22:56:44