Плохой выход Taylor Series sinx

Я пытаюсь написать программу, которая получает от пользователя значение x и печатает sinx, используя ряд Тейлора. но мой выход плохой. вывод, который я получаю, - это даже не число, это -1.#IND00, независимо от того, что я ввожу.

вот мой код

#include <stdio.h>
#include <conio.h>
void main()
{
    int i;
    double x,sum,last;
    sum=(double)0;
    scanf("%f",&x);
    last=x;
    sum=last;
    for(i=1;i<10;i++)
    {
        last*=(double)(-x*x)/((2*i)*(2*i+1));
        sum+=last;
    }
    printf("%f",sum);
    getch();
}

person Oria Gruber    schedule 03.02.2013    source источник


Ответы (1)


Я вижу одну проблему:

scanf("%f",&x);

x является двойным, поэтому вам нужен l, то есть "%lf".

[верный, но не относящийся к делу момент о том, что это неправильная формула для sinh, хотя sinh нигде не упоминается в вопросе, отредактировано..]

person DSM    schedule 03.02.2013
comment
вопрос касается sin(x), а не sinh(x), они меняют знаки. но спасибо, теперь работает :) - person Oria Gruber; 03.02.2013