From 4b7b765cde2cc5a28e20fbb02e1c7898bf463615 Mon Sep 17 00:00:00 2001 From: ASPP Student Date: Thu, 31 Aug 2023 15:10:46 +0300 Subject: [PATCH] Optimize numerical integration. --- profiling/numerical_integration.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/profiling/numerical_integration.py b/profiling/numerical_integration.py index 8ed588c..133a275 100644 --- a/profiling/numerical_integration.py +++ b/profiling/numerical_integration.py @@ -3,12 +3,11 @@ # Several improvements are possible def numerical_integration(f, a, b, n): - s = [] + s = 0 + dx = (b - a) / n + for i in range(n): - dx = (b - a) / n - x = a + (i + 0.5) * dx - y = f(x) - s = s + [y * dx] + s = s + f(a + (i + 0.5) * dx) * dx return s @@ -25,7 +24,7 @@ def measure_integration_errors(f, F, n_values, a, b): # Calculate and sum error errors = [] for F_analytical, F_numerical_boxes in zip(F_a_list, F_n_list): - F_numerical = sum(F_numerical_boxes) + F_numerical = F_numerical_boxes error = abs(F_analytical - F_numerical) errors = errors + [error]