我有簡單的代碼爲泰勒定理cosh()
功能。泰勒公式Ç
我試圖抓住一個錯誤 - 結果有時接近真實的答案。
如何正確地做到這一點?
當我開始是0,末是5,細分是5它給了很好的效果,但是當我把5開始和10結束,結果是遠離預期值。
#include <stdio.h>
#include <math.h>
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();
}
解決問題:
函數返回一個整數,而不是雙,我也改爲每浮動翻番。
你爲什麼要打印exp的結果呢? – 2015-02-17 22:54:18
預期結果和實際結果是什麼? – 2015-02-17 22:54:54
「結果有時會接近真實的答案」 - 這不是你想要的嗎?你希望結果遠離實際答案嗎? – 2015-02-17 22:56:44