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

  1. Есть проблема. Дана функция sinx, нужно разложить x по ряду Тейлора. В коде, видимо, что-то не хватает. Буду очень благодарен любой помощи.C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 //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;
}

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

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



Похожие ответы
  1. Я не могу понять как сделать так, чтобы при вычислении x, он к n прибавлял 5 и потом уже вычислял сумму цифр. Он выводит x=52 при n=5.C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #include int sumDigits ( int n ) {  int sum = 0;  while ( n != 0 )  {  sum += n % 10;  n /= 10;  }  return sum; } main() {     int n, x;     scanf("%d", &n);  printf ( "%d", sumDigits(n) );  x = 2*sumDigits(n+5);   printf ( "%d", x); }

  1. C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #include #include #include   float eps; int n=1; int p=3; int k=1; int x=2; const float Pi = 3.1415926; float r; float m;   int main() {     printf ("ÂâåäiГІГј Г§Г*Г*Г·ГҐГ*Г*Гї eps\n");     scanf ("%f",&eps);     r=4/(x*(x+1)*(x+2));     p=p+r;     m=Pi-p;     while (m

  1. Помогите решить проблему, в качестве средней зарплаты выдаёт последнюю из трёх (как запустите код - всё увидите)C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 #include #include #include #include #include using namespace std; void GotoXY(int X, int Y) {     HANDLE hConsole;     HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);     COORD coord = { X, Y };     SetConsoleCursorPosition(hStdOut, coord); } enum ConsoleColor {     Black, Blue, Green, Cyan, Red, Magenta, Brown, LightGray, DarkGray, LightBlue,     LightGreen, LightCyan, LightRed, LightMagenta, Yellow, White }; void SetColor(int text, int background = Black) {     HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);     SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text)); }   struct date {     int day;     char month[20];     int year; }; struct person {     char name[30];     char address[20];     int post_index;     date a;     int salary[3];     int aver_salary; };   void main() {     /*setlocale(LC_ALL, "Russian");*/     SetConsoleCP(1251);     SetConsoleOutputCP(1251);     srand(time(NULL));         /*  Создать структуру PERSON по примеру из урока. Добавить в структуру поля З/ПЛ по трем месяцам отдельно( рандомно в диапазоне [5000, 10000 ] ) и Средняя з/пл. (расчетное поле).     Создать не менее 5 элементов структуры типа PERSON.     Вывести данные в виде таблицы.     Отсортировать элементы по полю Средняя з/пл. и вывести таблицу вновь с учетом сортировки.*/       person pers1 = { "Галактус", "Нибиру", 69000, 27, "апреля", 1995,  };     person pers2 = { "Танос", "Венера", 65000, 1, "ноября", 1964 };     person pers3 = { "Дормаму", "Плутон", 65000, 3, "сентября", 1976 };     person pers4 = { "Будда", "Шангри-Ла", 00000, 9, "июня", 765 };     person pers5 = { "Мать драконов", "Царская Гавань", 00000, 1, "мая", 3156 };     for (short i = 0; i < 3;i++)     {         pers1.salary[i] = rand() % 5001 + 5000;             }     pers1.aver_salary = 0;     for (short i = 1; i <= 3;i++)     {         pers1.aver_salary += pers1.salary[i];         }     pers1.aver_salary /= 3;         cout << "     Имя" << setw(13) << "Адрес" << setw(13) << "Индекс" << setw(20) << "Дата рождения" << setw(9) << "З/п" << setw(34) << "Средняя З/п"<

  1. Помогите пожалуйста составить алгоритм и написать код программы, вычисляющей значения суммы ряда S при заданных с консоли начальном и конечном значениях аргумента x (x_nach, x_kon), шаге его изменения delta_x и точности вычислений eps. Вычисленные значения ряда сравнить со значениями функции f=(x). Результаты вычислений вывести в виде таблицы с заголовком.

  1. Добрый день! Есть последовательность такого типа: 1-1/2+1/3-1/4+1/5... Как получить итоговое значение заданной последовательности? Предел вводится пользователем.

  1. Последовательность Фибоначчи образуется так: первый и второй член последовательности равны 1, каждый следующий равен сумме двух предыдущих (1,1,2,3,5,8,13,21,34,.....). Дано натуральное число n(n>=3). Получить первые n членов последовательности Фибоначчи.Добавлено через 14 минут На Си пожалуйста

  1. C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #include #include bool isPrime(int i) {     bool prime = true;     int count = 2;     while (i!= count)     {         if (i % count == 0)         {             prime = false;             break;                 }         else             count++;     }     return prime; } main() {     bool prime=false;     int max=1000;     for (int i = 3; i <= max;++i)     {         isPrime(prime);         if (isPrime == true)             printf("%d\n", i);     }     printf("%d\n", prime); }От программы нужен вывод всех первых чисел в интервале от нуля то тысячи ....где косяк ?

  1. Не могу решить данное задание, как сделать с вложенными циклами?

  1. Задать целое число х. Написать программу, рассчитать значение S = 1 + x23! + X45! + ...

  1. Всем привет! Задачка на нахождение значения ПИ по методу Монте Карло. В методичке сказано: "You should use this expression for generating a random double between LO and HI ◦ LO + ((double) (rand()) /(((double) RAND_MAX)/(HI-LO));" Сказано, сделано, вот только значения не сходятся у меня с правильными ответами!: Enter the seed for the random number generator: 4 Enter the number of iterations to run: 10 The value of pi is 3.20000. 2. Enter the seed for the random number generator: -7 Enter the number of iterations to run: 2 The value of pi is 4.00000. Будьте добры, подскажите где и в чем, я ошибся! Столько времени бьюсь с этой задачей! C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 #include #include #include #include     int main() {    int iterations=0;    double x,y;    int count=0;    double z;    double pi;    int SEED = 0;    printf("Enter the seed for the random number generator:");    scanf("%d",&SEED);    printf("Enter the number of iterations used to estimate pi: ");    scanf("%d",&iterations);      /* инициализирую рандомные числа*/    srand(SEED);    for (int i=0; i