Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора - C (СИ) (78817)

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

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

Котики мои Вы дорогие, помогите зайчику с такими вот заданиями. Не могу разобраться скорее с не с самими программулинами, а с приведением в рекуррентный вид (

Решение задачи: «Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора»

textual
Листинг программы
#include <stdio.h>
#include <math.h>
#include <locale.h>
 
float summa(int, int, float);
 
int main()
{
    setlocale(2, ".1251");
    int x;
    float eps = 0.000001, sum = 0; //eps - точность
    printf("Введите x: ");
    scanf("%d", &x);
    for (int i = 1; 1/(i*pow(x, i)) > eps; sum += 1/(i*pow(x, i)), i += 2)
         ;
 
    printf("Нерекурсивный цикл: %f", 2*sum);
    printf("\nРекурсивная функция: %f", 2*summa(x, 1, eps));
    printf("\nЗначение ln((x+1)/(x-1): %f", log((x+1.)/(x-1.)));
    return 0;
}
 
float summa(int x, int n, float eps)
{
    float s = 1/(n*pow(x, n));
    if (s > eps)
        return s + summa(x, n+2, eps);
    else
        return s;
}

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

  1. #include - подключает файл стандартного ввода/вывода, что позволяет использовать функции для работы с консолью (например, printf).
  2. #include - подключает математические функции, такие как sqrt, pow, log и другие.
  3. #include - подключает функции для работы с локалью, в данном случае используется для установки русской локали.
  4. float summa(int x, int n, float eps) - объявление функции с тремя аргументами: целое число x, целое число n и число с плавающей точкой eps.
  5. int main() - функция main(), в которой происходит основная работа программы.
  6. setlocale(2, .1251); - установка русской локали.
  7. int x; - объявление переменной целого типа x.
  8. float eps = 0.000001, sum = 0; //eps - точность - объявление переменных eps и sum, и инициализация eps значением 0.000001.
  9. printf(Введите x:); - вывод сообщения с просьбой ввести значение x.
  10. scanf(%d, &x); - ввод значения x с клавиатуры и сохранение его в переменной x.
  11. for (int i = 1; 1/(ipow(x, i)) > eps; sum += 1/(ipow(x, i)), i += 2) - инициализация цикла, который будет выполняться до тех пор, пока значение 1/(ipow(x, i)) больше eps. На каждой итерации к сумме sum добавляется значение 1/(ipow(x, i)).
  12. *printf(Нерекурсивный цикл: %f, 2sum);** - вывод значения суммы sum, умноженной на 2.
  13. *printf(\nРекурсивная функция: %f, 2summa(x, 1, eps));** - вывод значения суммы, вычисленной с помощью рекурсивной функции summa, умноженной на 2.
  14. printf(\nЗначение ln((x+1)/(x-1): %f, log((x+1.)/(x-1.))); - вывод значения натурального логарифма (ln) от (x+1)/(x-1).
  15. return 0; - завершение функции main().
  16. float summa(int x, int n, float eps) - тело функции summa.
  17. *float s = 1/(npow(x, n));** - вычисление значения s, которое является началом рекурсии.
  18. if (s > eps) - проверка, является ли значение s больше eps.
  19. return s + summa(x, n+2, eps); - если значение s больше eps, то возвращается сумма s и вызывается рекурсивная функция summa с новыми значениями аргументов.
  20. return s; - если значение s меньше или равно eps, то возвращается значение s.

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


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

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

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