Вычисление функции рядом Тейлора - 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;
- }
Объяснение кода листинга программы
- Установка локали на русский язык с помощью функции setlocale.
- Инициализация переменных: n - счетчик, используемый в цикле do-while; nach, kon - границы интегрирования; dx - шаг интегрирования; e, eps - коэффициенты, используемые в формуле Тейлора; sum - сумма ряда Тейлора; x - текущее значение переменной интегрирования.
- Ввод границ интегрирования, шага интегрирования, коэффициентов и начального значения переменной интегрирования с помощью функции scanf.
- Вычисление значения dx, используя формулу (kon-nach)/dx.
- Вывод таблицы с графами функции и ее приближениями по ряду Тейлора с помощью функции printf.
- Использование цикла while для вычисления значений функции и ее приближений на заданном интервале. Внутри цикла do-while происходит вычисление значения суммы ряда Тейлора и ее приближения.
- Вывод очередного значения x, значения суммы ряда Тейлора, значения счетчика n и значения переменной e с помощью функции printf.
- Проверка условия для выхода из цикла do-while с помощью оператора if.
- Вывод таблицы с графами функции и ее приближениями по ряду Тейлора с помощью функции printf.
- Увеличение значения x на шаг интегрирования dx.
- Завершение программы с помощью функции getch и возврат значения 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д