Ряд Тейлора: Вычислить значение функции - C (СИ)
Формулировка задачи:
Здраствуйте.Всю жизнь программировал на Паскале и вдруг си...помогите пожалуйста с заданиями,желательно с объяснением,ибо чайник полный..
1.Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от Хнач до Хкон с шагом dx с e точностью . Таблицу снабдить заголовком и шапкой. Каждая строка таблицы должна содержать значение аргумента, значение функции и количество просуммированных членов ряда.
К первой задаче нашел решение,правда на 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 = 1; /* конец интервала */
double dx = 0.1; /* шаг */
double eps = 0.001; /* точность */
int iter = 0; /* итерации -- количество слогаемых */
printf("| Аргумент X | ln(x + 1) | Кол-во членов |\n");
/* циклом проходим по всему заданному диапазону */
for (x = x1; x <= x2; x += dx) {
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 *i) {
double lastresult, result;
lastresult = 0;
do {
result = lastresult;
lastresult = (pow(-1, *i) * pow(x, *i + 1)) / (*i + 1);
(*i)++;
/* вычисляем пока разница не станет меньше точности */
} while (fabs(lastresult - result) >= eps);
return lastresult;
}
Объяснение кода листинга программы
В данном коде реализуется вычисление ряда Тейлора для функции ln(x + 1). Список действий:
- В функции main():
- Задаются аргументы функции (x), шаг (dx), точность (eps), итерации (iter) и границы интервала (x1, x2).
- Выполняется цикл, который проходит по всему заданному диапазону. На каждой итерации цикла вызывается функция func(x, eps, &iter), результат вычисления функции выводится на экран.
- Цикл завершается, когда значение x становится равным x2.
- Результатом работы функции main() является успешный выход из программы (EXIT_SUCCESS).
- В функции func(x, eps, i):
- Задаются переменные, которые будут использоваться в цикле: предыдущий результат вычисления (lastresult), текущий результат вычисления (result), итерация (i).
- Устанавливается начальное значение lastresult = 0.
- Выполняется цикл do-while, который продолжается, пока разница между текущим и предыдущим результатом вычисления больше или равна заданной точности (eps).
- На каждой итерации цикла происходит обновление значения result.
- Результатом работы функции func(x, eps, i) является окончательное значение результата вычисления ряда Тейлора. Таким образом, данный код реализует вычисление ряда Тейлора для функции ln(x + 1) с заданной точностью (eps) на заданном интервале (x1, x2) с шагом (dx).