@tr1ck

Правильно ли написан код для метода трапеций на с++?

h = (b - a) / n;
	for (int i = 1; i <= (n - 1); i++)
		S += f(a + h*i);
	integ = h * ((f(a) + f(b)) / 2 + S);
  • Вопрос задан
  • 2617 просмотров
Пригласить эксперта
Ответы на вопрос 2
rdev
@rdev
Хотя бы описал что у тебя означает f(). А так какой то огрызок кода, который еще надо самому додумать.

Пример с киберфорума.
#include <cmath>
#include <cstdio>
#include <cstdlib>
 
typedef double(*function)(double);
 
double integral(function f, double a, double b, unsigned step_count) {
  double sum = .0, step;
  size_t i;
  if (0 == step_count) return sum;
 
  step = (b - a) / (1.0 * step_count);
  for ( i = 1 ; i < step_count ; ++i ) {
    sum += f (a + i * step);
  }
  sum += (f(a) + f(b)) / 2;
  sum *= step; 
  return sum;
}
 
double f (double x) {
  return 2 * x;
}
 
int main() {
  printf ("\\int_0^10(x) = %f\n", integral(f, 0, 10, 15));
}
Ответ написан
Nirail
@Nirail
Дайте мне повод и я во все решу
Отвечая на вопрос: Да, этот кусок кода правильный.

Рекомендации на будущее:
1) Задавая вопрос желательно писать чуть подробней.
2) Для проверки кода можно составить формулу которую он реализует и сравнить с теоретической.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы