Вычисление суммы ряда - C# (189507)
Формулировка задачи:
Задание 1. Вычислить сумму S= -cos(x) + (cos(2x))/2^2 -...+ (-1)^n*(cosnx)/n^2 при x=пи/4.
Суммирование прекращать, когда очередной член ряда будет меньше eps=0.0001.
Сумма S и контрольная функция (в смысле для контроля при каждом значении х вычисляется также функция) y=((x^2-(pi^2)/3))/4 для одного и того же х должны приблизительно совпадать.
И еще нужно определить, на каком члене суммы будут прекращены вычисления
Задание 2. Тоже самое, только S= 1+x+x^2+...+x^n/(n!) , контрольная функция y=e^x; x=2.5
Помогите пожалуйста, совсем запутался((((
Решение задачи: «Вычисление суммы ряда»
textual
Листинг программы
static void Main(string[] args)
{
double S = 0, Seps;
//считаем функцию с косинусом
double x = Math.PI / 3;
int Iter;
for (Iter = 1; Iter < MaxIterations; Iter++)
{
Seps = FunctionCos(Iter, x);
S += Seps;
if (Math.Abs(Seps) < eps) break;
}
Console.WriteLine("Требуемая точность {0} достигнута на {1} итерации. \n Сумма элементов S = {2}", eps, Iter-1, S);
Console.WriteLine("Проверочная функция S = " + FunctionCosControl(x));
x = 2.5;
//считаем функцию с факториалом
for (Iter = 0; Iter < MaxIterations; Iter++)
{
Seps = FunctionFaktorial(Iter, x);
S += Seps;
if (Math.Abs(Seps) < eps) break;
}
Console.WriteLine("Требуемая точность {0} достигнута на {1} итерации. \n Сумма элементов S = {2}", eps, Iter-1, S);
Console.WriteLine("Проверочная функция S = " + FunctionFaktorialControl(x));
Console.ReadLine();
}
/// <summary>Функция с косинусом
/// </summary>
/// <param name="n">порядковый номер</param>
/// <param name="x">переменная</param>
/// <returns></returns>
public static double FunctionCos(int n, double x)
{
return (Math.Pow((-1), n) * (Math.Cos(n*x)) / Math.Pow(n, 2));
}
//Функция контроля
public static double FunctionCosControl(double x)
{
return ((Math.Pow(x, 2) - Math.Pow(Math.PI, 2) / 3)) / 4;
}
/// <summary>функция с факториалом
/// </summary>
/// <param name="n">порядковый номер</param>
/// <param name="x">переменная</param>
/// <returns></returns>
public static double FunctionFaktorial(int n, double x)
{
return (Math.Pow(x, n) / (Faktorial(n)));
}
//Проверочная функции с факториалом
public static double FunctionFaktorialControl(double x)
{
return (Math.Pow(Math.E, x));
}
/// <summary>
/// Функция вычисления факториала
/// </summary>
/// <param name="n"></param>
/// <returns></returns>
static long Faktorial(int n)
{
if (n == 0)
return 1;
else
return n * Faktorial(n - 1);
}