Ряд Тейлора рекурсией - C#

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

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

Добрый вечер. При написание рекурсивного вычисления значения функции с помощью ряда Тейлора возникла следующая проблема: при достаточно большом шаге - 0,1; 0,2 -очень сильно страдает точность вычисления, при маленьком шаге, к примеру - 0,001, всё нормально. Помогите, пожалуйста, исправить ошибку.
 class Program
    {
        const double e = 0.00000001;
        public static double step(double ch, double st)
        {
            if (st == 0) return (1);
            else if (st < 0) return (1 / step(ch, -st));
            else return (ch * step(ch, st - 1));
        }
        public static double arth(double x, int n)
        {
            if (n == 0) return x;
            else return (step(x, 2 * n + 1) / (2 * n + 1)) + arth(x, n - 1);
        }
        static void Main(string[] args)
        {
            double x, sum=0;
            int count = 0;
 
            Console.Write("Начальное значение = ");
            double dnach = Convert.ToDouble(Console.ReadLine());
            Console.Write("Конечное значение = ");
            double dkon = Convert.ToDouble(Console.ReadLine());
            Console.Write("Шаг = ");
            double dx = Convert.ToDouble(Console.ReadLine());
 
            Console.WriteLine("+------------+------------+------------+");
            Console.WriteLine("|      x     |   Arth(x)  |  Проверка  |");
            Console.WriteLine("+------------+------------+------------+------------+");
 
            for (x = dnach; x <= dkon; x = x + dx)
            {
                if (Math.Abs(x) < 1)
                Console.WriteLine("  {0,8:F5}   |  {1,8:F5}  |  {2,8:F5}  |", x, arth(x, count), 0.5 * Math.Log((1 + x) / (1 - x)));
                count++;
            }
            Console.WriteLine("+------------+------------+------------+------------+");
            Console.ReadLine();
        }
    }

Решение задачи: «Ряд Тейлора рекурсией»

textual
Листинг программы
else if (st < 0) return (1d / step(ch, -st));

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


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

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

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