Ряд Тейлора: Вычислить значение функции - 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). Список действий:

  1. В функции main():
    • Задаются аргументы функции (x), шаг (dx), точность (eps), итерации (iter) и границы интервала (x1, x2).
    • Выполняется цикл, который проходит по всему заданному диапазону. На каждой итерации цикла вызывается функция func(x, eps, &iter), результат вычисления функции выводится на экран.
    • Цикл завершается, когда значение x становится равным x2.
    • Результатом работы функции main() является успешный выход из программы (EXIT_SUCCESS).
  2. В функции func(x, eps, i):
    • Задаются переменные, которые будут использоваться в цикле: предыдущий результат вычисления (lastresult), текущий результат вычисления (result), итерация (i).
    • Устанавливается начальное значение lastresult = 0.
    • Выполняется цикл do-while, который продолжается, пока разница между текущим и предыдущим результатом вычисления больше или равна заданной точности (eps).
    • На каждой итерации цикла происходит обновление значения result.
    • Результатом работы функции func(x, eps, i) является окончательное значение результата вычисления ряда Тейлора. Таким образом, данный код реализует вычисление ряда Тейлора для функции ln(x + 1) с заданной точностью (eps) на заданном интервале (x1, x2) с шагом (dx).

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


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

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

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