У меня есть простой код для теоремы Тейлора для функции cosh()
.Теорема Тейлора C
Я пытаюсь поймать ошибку - результат иногда близок к реальному ответу.
Как это сделать правильно?
Когда мой старт является 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();
}
ПРОБЛЕМА РЕШИТЬ:
функция возвращает целое число, а не двойной, и я изменил каждый поплавок в два раза.
Почему вы печатая результат ехр? –
Какой ожидаемый результат и фактический? –
«результат иногда близок к реальному ответу» - ну разве это не то, что вы хотите? Вы хотите, чтобы результат был далек от фактического ответа? –