Вычислить значение бесконечной суммы с определенной точностью - C#
Формулировка задачи:
Доброго времени суток!
Нужно вычислить значение бесконечной суммы с точностью e=10-5 . Детская задача, но никак не могу вспомнить её реализацию Может кто подсобить? Вот что накидал:public partial class Form1 : Form
{
private double eps = 0.00001; // точность
private double sum = 0.0; // начальное значение суммы
private int n; // вводимое n
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try // тут считывание n с поля ввода и запуск потока
{
if (textBox1.Text != "")
n = Int32.Parse(textBox1.Text);
else
throw (new Exception("Поле ввода пустое!"));
Thread tr = new Thread(Count);
tr.Start();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void Count() // тут считается значение бесконечной суммы (собственно тут находится бред)
{
while (Math.Abs(sum) <= eps)
{
sum += 1 / Math.Pow(2 * n - 1, 4);
n--;
}
}
}Заранее спасибо!
Решение задачи: «Вычислить значение бесконечной суммы с определенной точностью»
textual
Листинг программы
using System;
using System.Globalization;
using System.Windows.Forms;
namespace WindowsFormsApplication
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private const double Eps = 1E-5; // Точность.
private readonly Func<double, double> _func = d => Math.Pow(1 / (2 * d + 1), 4); // Заданная функция.
private void button1_Click(object sender, EventArgs e)
{
var sum = 0.0;
var i = 0;
var cur = _func(i);
while (cur > Eps)
sum += cur = _func(++i);
MessageBox.Show(sum.ToString(CultureInfo.CurrentCulture));
}
}
}