Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Посчитать интеграл методом трапеции

Мухаммад Омаров Ученик (50), открыт 2 недели назад
Здравстуйте помагите пожалуйста.
Необходимо написать программу для вычисления интеграла по формуле трапеции с тремя десятичными знаками.
2 ответа
Андрей Высший разум (460736) 2 недели назад
 using System;
class Test {
static double f(double x) {
return 1.0 / Math.Sqrt(0.5 + x * x);
}

static void Main() {
double sum = (f(1.2) + f(2.4)) / 2.0;
double res = sum * (2.4 - 1.2), prev;
int n = 1;
do {
n *= 2;
prev = res;
for (int i = 1; i < n; i += 2) {
sum += f((2.4 * i + 1.2 * (n - i)) / n);
}
res = sum * (2.4 - 1.2) / n;
} while (Math.Abs(prev - res) >= 0.0003);
Console.WriteLine($"{res:f3}");
}
}
Jurijus Zaksas Искусственный Интеллект (445688) 2 недели назад
Если по уму и красивенько, то так:

 public delegate double Function(double x); 

public static double Integrate(Function f, double a, double b, double dx)
{
double Result = 0d;
if (a > b)
(a, b) = (b, a);
int n = 0;
double x;
do
{
x = a + dx * n++;
Result += (f(x) + f(x + dx)) * dx / 2d;
}
while (x < b);
return Result;
}

static void Main(string[] args)
{
double Result, OldResult = 0d;
double dx = 0.1;
do
{
Result = Integrate(x => 1d / Math.Sqrt(0.5 + x * x), 1.2, 2.4, dx);
if (Math.Abs(OldResult - Result) < 0.001)
break;
OldResult = Result;
dx /= 2d;
}
while (true);
Console.WriteLine($"{Result:f3}");
}
Похожие вопросы