Помогите разобраться с кодом метода парабол (Симпсона) - C#

Узнай цену своей работы

Формулировка задачи:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Simpson_cs
{
    class Program
    {
        static double Y(double p) //
        {
            return p * Math.Sin(p / 2);//Вывод значение формулы
        }
        static void Main(string[] args)//Главная функция
        {
            double x, a, b, h, s;// Определение переменных
            int n;
            a = 0;
            b = 2 * Math.PI;// число п
            Console.Write("Введите количество шагов разбиения n=");
            n = int.Parse(Console.ReadLine());
 
            h = (b - a) / n;//Метод симпсона
            s = 0; x = a + h;
            while (x < b)// Цикл
            {
                s = s + 4 * Y(x);
                x = x + h;
                s = s + 2 * Y(x);
                x = x + h;
            }
            s = h / 3 * (s + Y(a) - Y(b));//конец вычисления
            Console.WriteLine("Интеграл = {0}", s);//вывод
            Console.ReadKey();
        }
    }
}

Решение задачи: «Помогите разобраться с кодом метода парабол (Симпсона)»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Simpson_cs
{
    class Program
    {
        static double Y(double p) //
        {
            return p * Math.Sin(p / 2);//Вывод значение формулы
        }
        static void Main(string[] args)//Главная функция
        {
            double x, a, b, h, s;// Определение переменных
            int n;
            a = 0;
            b = 2*Math.PI;// считать будет от 0 до 2пи ???
            Console.Write("Введите количество шагов разбиения n=");
            n = int.Parse(Console.ReadLine());
 
            h = (b - a) / (2*n);//Метод симпсона здесь просто надо что бы n было четно поэтому домножим на 2
            s = 0; x = a + h;
            while (x < b)// Цикл
            {
                s = s + 4 * Y(x);
                x = x + h;
                s = s + 2 * Y(x);
                x = x + h;
            }
            s = h/3 *(s + Y(a) + Y(b));//конец вычисления ошибка была здесь надо вроде всеже +f(b)
            Console.WriteLine("Интеграл = {0}", s);//вывод
            Console.ReadKey();
        }
    }
}

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


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

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

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