@MyOnAsSalat

Как исправить ошибку в пересчёте Acos?

Помогите исправить ошибку в итеративном расчёте arccos, нужно именно используя домножение на коэффицент.
Первые 2 вывода функции не совпадают со встроенной функцией.
using System;

public class Program
{
    public static void Main()
    {
        Console.WriteLine("Введите X: ");
        double x = Convert.ToDouble(Console.ReadLine());
        Console.WriteLine("Введите K: ");
        double k = Convert.ToDouble(Console.ReadLine());
        Console.WriteLine("Введите EPS: ");
        double EPS = Convert.ToDouble(Console.ReadLine());
        if (Math.Abs(x) > 1)
        {
            Console.WriteLine("Неверное значение аргумента");
            return;
        }
        double s = 0;
        double a, b, c, d, e;
        a = b = c = d = 1;
        e = x;
        double last = 0;
        for (int i = 1; ; i++)
        {
            a *= 2 * i * (2 * i - 1);
            b *= 4;
            c *= i * i;
            d += 2;
            e *= x * x;
            s += a * e / b / c / d;
            if (Math.Abs(s - last) < EPS) break;
            last = s;            
        }
        Console.WriteLine("f1()");
        Console.WriteLine(Math.PI / 2 - s);

        s = 0;
        a = b = c = d = 1;
        e = x;
        for (int i = 0;i<=k ; i++)
        {
            a *= 2 * i * (2 * i - 1);
            b *= 4;
            c *= i * i;
            d += 2;
            e *= x * x;
            s += a * e / b / c / d;
        }
        Console.WriteLine("f2()");
        Console.WriteLine(Math.PI/2 - s);
        Console.WriteLine("f()");
        Console.WriteLine(Math.Acos(x));
        Console.ReadKey();

    }
}
  • Вопрос задан
  • 83 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Sumor
У вас неправильно подсчитывается i-й член последовательности.
В частности, первый член должен быть равен x, второй член x^3/6.
У вас же первый член равен 2*(2-1)*x^3/4/1/2 = 1/4*x^3, второй - 4*(4-1)*x^5/16/4/4 = 3/64*x^5
В общем у вас неправильно реализована формула разложения.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы