Вычислить и вывести на экран значения функции, заданной с помощью ряда Тейлора - C (СИ)
Формулировка задачи:
Если кто поможет буду очень благодарен!
Решение задачи: «Вычислить и вывести на экран значения функции, заданной с помощью ряда Тейлора»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double func(double x, double eps, int *iter);
int main(int argc, char **argv) {
double x; /* аргумент функции */
double rr = 0; /* результат вычисления функции */
double x1 = 1; /* начало интервала */
double x2 = 5; /* конец интервала */
double dx = 1; /* шаг */
double eps = 0.01; /* точность */
int iter = 0; /* итерации -- количество слогаемых */
printf("\n| Аргумент X | arth(x) | Кол-во членов |\n");
for (x = x1; x <= x2; x += dx) { /* циклом проходим по всему заданному диапазону */
rr = func(x, eps, &iter);
printf("| %5.2f | %16.13f | %5d |\n", x, rr, iter);
}
/* x = 60; */
/* rr = func(x, eps, &iter); */
/* printf("| %5.2f | %16.13f | %5d |\n", x, rr, iter); */
return EXIT_SUCCESS;
}
double func(double x, double eps, int *n) {
double lastresult, result;
lastresult = 0;
do {
result = lastresult;
lastresult = 1 / ((2 * *n + 1) * pow(x, 2* *n + 1));
(*n)++;
/* вычисляем пока разница не станет меньше точности */
} while (fabs(lastresult - result) >= eps);
return lastresult;
}
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с I/O, математикой и стандартным вводом/выводом
- Определяем функцию
func, которая принимает три аргумента:x,epsиiter. Значение функции вычисляется с помощью ряда Тейлора - В функции
mainопределяем переменные:x,rr,x1,x2,dx,epsиiter. Задаем начальные значения и шаги для переменнойxи инициализируем переменнуюiterнулем - С помощью цикла
forпроходим по всему заданному диапазону значенийx. На каждой итерации вызываем функциюfuncи сохраняем результат в переменнуюrr. Затем выводим значенияx,rrиiterна экран - В функции
funcинициализируем переменнуюlastresultнулем. Затем с помощью циклаdo...whileвычисляем значение функции до тех пор, пока разница междуlastresultиresultне станет меньше заданной точностиeps - Возвращаем окончательное значение
lastresultиз функцииfunc - В функции
mainкомментируем строки кода, которые позволяют вычислить значение функции для аргументаx = 60и установить значениеiter = 1 - Завершаем программу с помощью
return EXIT_SUCCESS