Нужно найти tg(x) с помощью разложения в ряд Тейлора с заданной точностью
Факториал работает правильно, числа Бернули тоже, вот только окончательный результат не сходиться:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace lab5
{
class Program
{
static void Main(string[] args)
{
double otv1 = 0.0;
//Ввод числа x
Console.Write("Введите число x < Pi/2: ");
double x = System.Convert.ToDouble(Console.ReadLine());
if (x >= Math.PI / 2) { Console.WriteLine("Вы ввели некорректное число x!"); }
Console.WriteLine("Расчет tg(x) с заданным числом повторений: ");
//Ввод числа n
Console.Write("Введите число n > 0: ");
int n = int.Parse(Console.ReadLine());
//Расчет tg(x) с заданным числом повторений
for (int i = 1; i <= n; i++)
{
otv1 = otv1 + ((getBern(n))*Math.Pow(4, i) * (Math.Pow(4, i)-1) * (Math.Pow(x,(2*n)-1)))/fact(2*n);
Console.WriteLine(otv1);
}
Console.ReadLine();
}
//Числа Бернули
static double getBern(int n)
{
double bern;
if (n == 0)
{
bern = 1.0;
}
else
{
bern = 0.0;
for (int k = 1; k <= n;k++ )
{
bern +=(-1)/System.Convert.ToDouble(n+1)*fact(n+1)/(fact(k+1)*fact(n-k))*getBern(n-k);
}
}
return bern;
}
//Факториал
static double fact(int k)
{
if (k == 0)
{
return 1;
}
else
{
return k * fact(k - 1);
}
}
}
}
в чем может быть проблема?