Вычисление функции рядом Тейлора - C (СИ)

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

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

Помогите пожалуйста разобраться с задачей: Вычислить и вывести на экран значения исходной функции , значения функции, рассчитанное с помощью ряда Тейлора, на интервале от х нач до х кон из области определения функции с шагом dx и точностью ԑ. На экране так же должно отображаться количество просуммированных членов ряда. (Нужно написать программу на си) Вот моя программа, считает не правильно, не понимаю где ошибка
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <locale.h>
 
int main() {
    setlocale(LC_ALL, "rus");
    int n = 0;
    double nach, kon, dx, x;
    double e, eps, sum = 0;
    printf("Введите начальное значение --> ");
    scanf("%lf", &nach);
    printf("Введите конечное значение --> ");
    scanf("%lf", &kon);
    printf("Введите точность --> ");
    scanf("%lf", &eps);
    printf("Введите число шагов --> ");
    scanf("%lf", &dx);
 
    printf("\n|---------------------------------------------------------------------------------------------------------|\n");
    printf("|  Значение аргумента    |          Значение функции              | Кол-во просуммированных членов ряда   |");
    printf("\n|---------------------------------------------------------------------------------------------------------|\n");
    x = nach;
 
    while (x <= kon) {
        e = x;
        sum = 0;
        n = 0;
        do{
 
            sum += e;
            e = (pow(-1.0, n)*pow(x, 2 * n + 1)) / (2 * n + 1);
            n++;
            
        } while (fabs(e) <= eps);

        printf("|%.2lf                    |%lf                                |%d                                      |", x, sum, n );
        printf("\n|---------------------------------------------------------------------------------------------------------|\n");
 
        x += dx;
    }

    getch();
    return 0;
}

Решение задачи: «Вычисление функции рядом Тейлора»

textual
Листинг программы
int main() {
    setlocale(LC_ALL, "rus");
    int n = 0;
    double nach, kon, dx, x;
    double e, eps, sum = 0;
    printf("nach --> ");
    scanf("%lf", &nach);
    printf("kon --> ");
    scanf("%lf", &kon);
    printf("eps --> ");
    scanf("%lf", &eps);
    printf("dx --> ");
    scanf("%lf", &dx);
 
    dx=(kon-nach)/dx;  /* !!! */
 
    printf("\n|---------------------------------------------------------------------------------------------------------|\n");
    printf("|         x              |             f(x)                       |                  n                    |");
    printf("\n|---------------------------------------------------------------------------------------------------------|\n");
    
    x = nach;
 
    while (x <= kon) {
        e = x;
        sum = 0;
        n = 0;
        do{
            sum += e;
            e = (pow(-1.0, n)*pow(x, 2 * n + 1)) / (2 * n + 1);
            n++;
        } while (fabs(e) > eps); /* !!! */
 
        printf("|%.2lf                    |%lf                                |%d                                      |", x, sum, n );
        printf("\n|---------------------------------------------------------------------------------------------------------|\n");
 
        x += dx;
        
    }
 
    getch();
    return 0;
}

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

  1. Установка локали на русский язык с помощью функции setlocale.
  2. Инициализация переменных: n - счетчик, используемый в цикле do-while; nach, kon - границы интегрирования; dx - шаг интегрирования; e, eps - коэффициенты, используемые в формуле Тейлора; sum - сумма ряда Тейлора; x - текущее значение переменной интегрирования.
  3. Ввод границ интегрирования, шага интегрирования, коэффициентов и начального значения переменной интегрирования с помощью функции scanf.
  4. Вычисление значения dx, используя формулу (kon-nach)/dx.
  5. Вывод таблицы с графами функции и ее приближениями по ряду Тейлора с помощью функции printf.
  6. Использование цикла while для вычисления значений функции и ее приближений на заданном интервале. Внутри цикла do-while происходит вычисление значения суммы ряда Тейлора и ее приближения.
  7. Вывод очередного значения x, значения суммы ряда Тейлора, значения счетчика n и значения переменной e с помощью функции printf.
  8. Проверка условия для выхода из цикла do-while с помощью оператора if.
  9. Вывод таблицы с графами функции и ее приближениями по ряду Тейлора с помощью функции printf.
  10. Увеличение значения x на шаг интегрирования dx.
  11. Завершение программы с помощью функции getch и возврат значения 0.

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


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

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

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