Вычисление функций разложением в ряд Тейлора C#
Нужно написать программу на языке C#
Условие: Вычислить с помощью разложения в ряд Тейлора значение функции с точностью eps и аргументом x (вводятся пользователем). Вывести на экран значение указанной функции, сумму ряда и количество его членов (использовать конструкцию while).
Получилось написать вот такой код
sin(x)/x = 1 - x^2 / 3! + x^4 / 5! + ... + (-1)^n * x^2n / (2n + 1)!
Но никак не могу понять как добавить в него вычисление с заданной точностью. Помогите, пожалуйста :D
Ответы (1 шт):
Автор решения: zrx
→ Ссылка
По итогу получился вот такой вот код, вроде всё работает.
// Функция для подсчёта факториала
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-ом
