Вычисление экспоненты через ряд Тейлора - C (СИ)

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

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

Сама формула имеет вид : Сколько я ее не правлю,она все равно не работает. Точнее, она работала,но при маленьких N и с очень большой погрешностью. После того как переменные из long long перевел в double, каждый раз в ответ выдает "-nan(ind)". До этого ругалась,что делю на ноль. На что она только не ругалась. Поясните,пожалуйста, что в коде не так?
#include <stdio.h>

int main(void)
{
    const int N=20;
    long long int counter=2;
    double sum = 1.0, factorial,number;
 
    printf("Input the power of number ""e"": ");
    scanf_s("%d",  &number);
    factorial = number;
    while (counter<=N)
       {      
         sum+= factorial;
         factorial*=number/counter;
         counter++;
       }
    printf("The result is %f\n",sum);
    return 0;
}

Решение задачи: «Вычисление экспоненты через ряд Тейлора»

textual
Листинг программы
#include <stdio.h>
#include <math.h> 
 
int main(void)
{
    const int N=100;
    int counter=2;
    double sum, factorial,number;
 
    printf("Input the power of number ""e"": ");
    scanf("%lf",  &number);
    factorial = number;
    sum = 1.0
    while (counter<=N) {      
         sum+= factorial;
         factorial*=number/counter;
         counter++;
    }
    printf("The result is %lf, exp(%lf) = %lf\n", sum, number, exp(number));
    return 0;
}

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

В этом коде вычисляется экспонента числа e в степени, используя ряд Тейлора. Вот список действий, которые происходят в коде:

  1. Включаются необходимые заголовочные файлы:
    • stdio.h для работы с вводом и выводом данных
    • math.h для использования функции exp(), которая вычисляет экспоненту
  2. Задаются начальные значения переменных:
    • const int N=100 задает общее количество разрядов, которые будут учитываться при вычислении ряда Тейлора
    • int counter=2 инициализирует счетчик, который будет использоваться для вычисления суммы ряда
    • double sum и double factorial инициализируются нулевыми значениями для хранения суммы ряда и факториала соответственно
    • double number инициализируется значением, введенным пользователем, для хранения числа e в степени
  3. Выводится запрос на ввод числа e в степени:
    • printf(Input the power of number `e`: ) выводит запрос на ввод
    • scanf(%lf, &number) считывает введенное значение и сохраняет его в переменной number
  4. Вычисляется факториал числа e в степени:
    • factorial = number инициализирует факториал введенным значением
  5. Выполняется цикл для вычисления суммы ряда Тейлора:
    • while (counter<=N) выполняет цикл до тех пор, пока счетчик не превысит значение N
    • sum += factorial добавляет факториал к сумме ряда
    • factorial *= number/counter обновляет факториал, умножая его на число e в степени, деленное на текущее значение счетчика
    • counter++ увеличивает значение счетчика на 1
  6. Выводятся результаты вычислений:
    • printf(The result is %lf, exp(%lf) = %lf\n, sum, number, exp(number)) выводит сумму ряда, число e в степени и результат вычисления функции exp()
  7. Завершается выполнение программы:
    • return 0 завершает выполнение программы

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


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

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

11   голосов , оценка 4.091 из 5
Похожие ответы