From f67da39fd4ac51df6e615c518548705db1f7213a Mon Sep 17 00:00:00 2001 From: david Date: Mon, 6 May 2019 14:41:11 +0200 Subject: [PATCH] Derivative --- derivative | Bin 0 -> 17480 bytes derivative.cpp | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100755 derivative create mode 100644 derivative.cpp diff --git a/derivative b/derivative new file mode 100755 index 0000000000000000000000000000000000000000..c8670b669d4a4c03049e0a66a19e9da301344e30 GIT binary patch literal 17480 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 +#include + +using namespace std; + +double derivative(double (*f)(double), double x, double epsilon) { + return (f(x + epsilon) - f(x)) / epsilon; +} + +bool test_interval(double epsilon, double precision) { + for (double x = 0; x <= 3.14; x += 0.0001) { + double approx = derivative(sin, x, epsilon); + double precise = cos(x); + if (abs(approx - precise) > precision) { + return false; + } + } + return true; +} + +int main() { + for (double e = 0.003; e > 0.001; e -= 0.000001) { + if (test_interval(e, 0.001)) { + cout << "Epsilon found: " << e << endl; + break; + } + } + double max_diff; + double max_x; + for (double x = 0; x <= 3.14; x += 0.0001) { + double diff = abs(derivative(sin, x, 0.002) - cos(x)); + if (diff > max_diff) { + max_diff = diff; + max_x = x; + } + } + cout << "Max diff at " << max_x << " of " << max_diff << endl; + return 0; +}