Вычисление функций разложением в ряд Тейлора C#

Рейтинг: 0Ответов: 1Опубликовано: 28.03.2023

Нужно написать программу на языке C#

Условие: Вычислить с помощью разложения в ряд Тейлора значение функции с точностью eps и аргументом x (вводятся пользователем). Вывести на экран значение указанной функции, сумму ряда и количество его членов (использовать конструкцию while).

введите сюда описание изображения

Получилось написать вот такой код

sin(x)/x = 1 - x^2 / 3! + x^4 / 5! + ... + (-1)^n * x^2n / (2n + 1)!

Но никак не могу понять как добавить в него вычисление с заданной точностью. Помогите, пожалуйста :D

Ответы

▲ 1Принят

По итогу получился вот такой вот код, вроде всё работает.

// Функция для подсчёта факториала
double Factorial(double arg)
{
    double factorial = 1;

    for (int i = 2; i <= arg; i++)
        factorial = factorial * i;

    return factorial;
}

// Вычисление функции с помощью разложения в ряд
double E = Convert.ToDouble(textBox1.Text); // Получаемая точность
double X = Convert.ToDouble(textBox2.Text); // Получаемый аргумент X

double n = 0; // Шаг
double A = (Math.Pow(-1, n) * Math.Pow(X, 2 * n)) / Factorial(2 * n + 1); // Первое значение
double last_elem = 0; // Предыдущее значение
double S = 0; // Общая сумма

// Пока разность между соседними элементами ряда меньше заданной точности
while (Math.Abs(A - last_elem) > E)
{
    S += A; // Добавление значения к общей сумме
    last_elem = A; // Запись предыдущего элемента
    n++; // Увеличение шага
    A *= (Math.Pow(-1, n) * Math.Pow(X, 2 * n)) / Factorial(2 * n + 1); // Перезапись текущего элемента
}

label7.Text = S.ToString(); // Сумма ряда
label8.Text = n.ToString(); // Количество членов ряда
label9.Text = (Math.Sin(X) / X).ToString(); // Значение функции с заданным X-ом