Вычислить значение бесконечной суммы с определенной точностью - 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));
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5
Похожие ответы