C#: Метод Симпсона. Нахождение интеграла.

Случилось интересное. Некоторое время назад я разместил код метода Симпсона на pascal. После его индексации на него стало приходить большое количество поисковых запросов (до 30% от всех за сутки), и я решил написать этот метод на основных языках. Пусть первым будет C#.

В коде объявлена дополнительная функция double Y(double p) Возвращает значение функции в данной точке. Т.е при решении ваших задач достаточно просто изменить формулу внутри этой функции.

[code lang=»csharp»]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Simpson_cs
{
class Program
{
static double Y(double p)
{
return 1 / (1 + p * p);
}
static void Main(string[] args)
{
double x, a, b, h, s;
int n;
Console.WriteLine(«Отрезок интегрирования [a,b] —> (a) =»);
a = int.Parse(Console.ReadLine());
Console.WriteLine(«Отрезок интегрирования [a,b] —> (b) =»);
b = Double.Parse(Console.ReadLine());
Console.WriteLine(«На сколько частей нужно разделить отрезок? 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();
}
}
}
[/code]

Полный архив с проектом и исполняемым файлом от Microsoft Visual Studio 2010.

Добавить комментарий