Вычислите частичную сумму ряда (do while) - C (СИ)

Узнай цену своей работы

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

Вот такая задача: Вычислите частичную сумму ряда S=1-(x^2/2!)+(x^4/4!)-(x^6/6!)+... Вычисления прекратите, когда модуль очередного слагаемого станет меньше 0,001. Значение x вводится с клавиатуры. Проверьте, насколько сумма приблизилась к значению cos(x), x измеряется в радианах. Не до конца понимаю как это все организовать. Основана должна быть на постусловии (do while).
#include <stdio.h>
#include <math.h>
#include <conio.h>
int sum;
int a;
float x;
int t;
int n;
int main()
{
    printf("Vychislite chastichnyu symmy ryada: S=1-(x^2/2!)+(x^4/4!)-(x^6/6!)+...\n");
sum=0; //сумма
a=1; //первое число
t=2; //знаменатель
printf("vvedite x:");
scanf("%d", &x);
do
{
    
    sum+=a*(pow(x,t))/(Fact(t));
    t+=2;
    a*=-1;
 
}
while(pow(x,t))/(Fact(t))>=0.001);
printf("Chastichnaya symma ryada=%d\n", sum);
return 0;
}

Решение задачи: «Вычислите частичную сумму ряда (do while)»

textual
Листинг программы
#include <stdio.h>
#include <math.h>
 
int main()
{
    int i = 0;
    double s = 1.0, next = 1.0, x;
    printf("X = "); scanf("%lf", &x);
    do
    {
        i += 1;
        s += (next *= -x*x/(2*i-1)/(2*i));
    }
    while(fabs(next) > 0.0001);
    printf("s = %10.6lf\n", s);
    return 0;
}

Объяснение кода листинга программы

В этом коде выполняется вычисление ряда, который представляет собой последовательность чисел, где каждое следующее число является суммой предыдущего числа и двух последовательных степеней числа x, взятых с отрицательными коэффициентами. Ряд используется для приближенного вычисления значения функции обратной квадратному корню из числа x. Код выполняет следующие действия:

  1. Инициализация переменных:
    • i = 0 (счетчик итераций)
    • s = 1.0 (начальная сумма ряда)
    • next = 1.0 (следующее число ряда)
    • x = ввод пользователем (число, для которого вычисляется ряд)
  2. В цикле do-while выполняются следующие действия:
    • i увеличивается на 1
    • s увеличивается на сумму next и (next умноженное на -xx/(2i-1)/(2*i))
    • next умножается на -xx/(2i-1)/(2*i)
  3. Цикл продолжается, пока абсолютное значение next больше 0.0001.
  4. После окончания цикла выводится значение переменной s.
  5. Возвращается 0, что означает успешное выполнение программы. Код может быть не точным, поскольку он использует приближенные значения для вычисления ряда. Кроме того, он может не работать, если x является отрицательным числом, поскольку в этом случае ряд может не сходиться.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

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