#define _CRT_SECURE_NO_WARNINGS #include #include #include /* Az Integral[b, a] f(x) dx Riemann-integrált szeretnénk közelíteni. a: az integrál alsó határa b: az integrál felső határa f(x): egy függvény m: hány pontra lett felosztva az a-b intervallum */ double f(double x) { return 1 / sqrt(x - 3); } double Simpson(double a, double b, double m, double(*F)(double)) { double h = (b - a) / m; double Sum4 = 0.0; int i; for (i = 0; i < m; i++) { double Xi = a + i * h; Sum4 += F(Xi + h / 2); } double Sum2 = 0.0; for (i = 1; i < m; i++) { double Xi = a + i * h; Sum2 += F(Xi); } return (h / 6) * (F(a) + (4 * Sum4) + (2 * Sum2) + F(b)); } double Trapez(double a, double b, double m, double(*F)(double)) { double h = (b - a) / m; double Sum = 0.0; int i; for (i = 1; i < m; i++) { double Xi = a + i * h; Sum += F(Xi + h / 2); } return h * ((F(a) / 2) + Sum + (F(b) / 2)); } int main() { printf("Trapez: %.8f\n", Trapez(4, 5, 20, f)); printf("Simpson: %.8f\n", Simpson(4, 5, 3, f)); return EXIT_SUCCESS; }