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

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

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

Помогите пожалуйста разобраться с задачей: Вычислить и вывести на экран значения исходной функции , значения функции, рассчитанное с помощью ряда Тейлора, на интервале от х нач до х кон из области определения функции с шагом dx и точностью ԑ. На экране так же должно отображаться количество просуммированных членов ряда. (Нужно написать программу на си) Вот моя программа, считает не правильно, не понимаю где ошибка
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <math.h>
  4. #include <locale.h>
  5. int main() {
  6. setlocale(LC_ALL, "rus");
  7. int n = 0;
  8. double nach, kon, dx, x;
  9. double e, eps, sum = 0;
  10. printf("Введите начальное значение --> ");
  11. scanf("%lf", &nach);
  12. printf("Введите конечное значение --> ");
  13. scanf("%lf", &kon);
  14. printf("Введите точность --> ");
  15. scanf("%lf", &eps);
  16. printf("Введите число шагов --> ");
  17. scanf("%lf", &dx);
  18. printf("\n|---------------------------------------------------------------------------------------------------------|\n");
  19. printf("| Значение аргумента | Значение функции | Кол-во просуммированных членов ряда |");
  20. printf("\n|---------------------------------------------------------------------------------------------------------|\n");
  21. x = nach;
  22. while (x <= kon) {
  23. e = x;
  24. sum = 0;
  25. n = 0;
  26. do{
  27. sum += e;
  28. e = (pow(-1.0, n)*pow(x, 2 * n + 1)) / (2 * n + 1);
  29. n++;
  30. } while (fabs(e) <= eps);
  31.  
  32. printf("|%.2lf |%lf |%d |", x, sum, n );
  33. printf("\n|---------------------------------------------------------------------------------------------------------|\n");
  34. x += dx;
  35. }
  36.  
  37. getch();
  38. return 0;
  39. }

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

textual
Листинг программы
  1. int main() {
  2.     setlocale(LC_ALL, "rus");
  3.     int n = 0;
  4.     double nach, kon, dx, x;
  5.     double e, eps, sum = 0;
  6.     printf("nach --> ");
  7.     scanf("%lf", &nach);
  8.     printf("kon --> ");
  9.     scanf("%lf", &kon);
  10.     printf("eps --> ");
  11.     scanf("%lf", &eps);
  12.     printf("dx --> ");
  13.     scanf("%lf", &dx);
  14.  
  15.     dx=(kon-nach)/dx;  /* !!! */
  16.  
  17.     printf("\n|---------------------------------------------------------------------------------------------------------|\n");
  18.     printf("|         x              |             f(x)                       |                  n                    |");
  19.     printf("\n|---------------------------------------------------------------------------------------------------------|\n");
  20.    
  21.     x = nach;
  22.  
  23.     while (x <= kon) {
  24.         e = x;
  25.         sum = 0;
  26.         n = 0;
  27.         do{
  28.             sum += e;
  29.             e = (pow(-1.0, n)*pow(x, 2 * n + 1)) / (2 * n + 1);
  30.             n++;
  31.         } while (fabs(e) > eps); /* !!! */
  32.  
  33.         printf("|%.2lf                    |%lf                                |%d                                      |", x, sum, n );
  34.         printf("\n|---------------------------------------------------------------------------------------------------------|\n");
  35.  
  36.         x += dx;
  37.        
  38.     }
  39.  
  40.     getch();
  41.     return 0;
  42. }

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы