Ряд Тейлора. Вычисление синуса - C (СИ)

Формулировка задачи:

Есть проблема. Дана функция sinx, нужно разложить x по ряду Тейлора. В коде, видимо, что-то не хватает. Буду очень благодарен любой помощи.
//xn - начальное x
//xk - конечное x
//dx - шаг
//eps - погрешность
//x - главная переменная
//q - представление главной переменной
//n - переменная, присутствующая в степени
//a - числитель дроби
//b - знаменатель дроби
//k - счетчик значений (Идентификатор)
//v - счетчик четности и нечетности 
for(x=xn; xn<=xk+0.0000001; x+=dx)
    {   k=0;
        a=x;
        b=1;
        sinx=0;
        n=3;
        v=2;
            while((a/b)>eps) 
            {
                sinx=sinx+(a/b);
                b=0;
                a=a*x*x;
                a=fabs(a);
                for (j=1; j<=n; j++)
                {
                    b=b*j;
                }
                n=n+2;
                k++;
                if ((v%2)==0)
                a=-a;
                v=v+1;
                q=siny;
                    if(sinx==xn)


textual

Код к задаче: «Ряд Тейлора. Вычисление синуса - C (СИ)»

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
double sinx(double x) {
 
    double n = x, sum = 0.L;
    int i = 1;
 
    do {
        sum += n;
        n *= -1.0 * x * x / ((2 * i) * (2 * i + 1));
        ++i;
    } while ((n > 0.0 ? n : -n) > 1e-9);
 
    return sum;
}
 
int main () {
 
    printf("sin pi / 2 = %lf\n", sinx(M_PI_2));
 
    return 0;
}
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.


СДЕЛАЙТЕ РЕПОСТ

5   голосов, оценка 4.000 из 5

Источник