Интеграл методом трапеции - C (СИ)
Формулировка задачи:
Напишите программу по решению интегралов через универсальную функцию.
Решение задачи: «Интеграл методом трапеции»
textual
Листинг программы
#include <stdio.h> #include <math.h> typedef double (*Function)(double); typedef double (*SolverMethod)(Function, double, double, int); double Solve(Function f, double a, double b, int n, SolverMethod solver) { return solver(f, a, b, n); } double TrapezoidMethod(Function f, double a, double b, int n) { double h = (b - a) / n; double sum = (f(b) - f(a)) / 2.0; double x = a + h; for (int i = 1; i < n - 1; i++) { sum = sum + f(x); x = x + h; } return h * sum; } double f1(double x) { return (2.0 * x) / exp(2.0 * x); } double f2(double x) { return sqrt(x * x + 1); } int main(void) { const int N = 400; printf("%.4f\n", Solve(f1, -1, 3, N, TrapezoidMethod)); printf("%.4f\n", Solve(f2, -3, 2, N, TrapezoidMethod)); return 0; }
Объяснение кода листинга программы
- Программа на языке C
- Задача - вычисление интеграла методом трапеции
- Введенные функции:
- f1(x) = (2.0 x) / exp(2.0 x)
- f2(x) = sqrt(x * x + 1)
- Создание типа данных Function для представления функции
- Создание типа данных SolverMethod для представления метода решения
- Функция Solve принимает функцию, пределы интегрирования и количество трапеций в качестве параметров и использует метод решения, переданный в качестве последнего параметра
- Функция TrapezoidMethod реализует метод трапеции
- В функции TrapezoidMethod:
- переменная h инициализируется как (b - a) / n
- вычисляется сумма (f(b) - f(a)) / 2.0
- цикл for используется для вычисления суммы f(x) для x от a до b - h
- возвращается значение h * сумма
- В функции main:
- N инициализируется как 400
- вычисляется и выводится результат интеграла для f1 от -1 до 3 с N трапеций
- вычисляется и выводится результат интеграла для f2 от -3 до 2 с N трапеций
- Программа успешно компилируется и выполняется
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д