Интеграл методом трапеции - 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 трапеций
- Программа успешно компилируется и выполняется
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д