diff --git a/derivative b/derivative new file mode 100755 index 0000000..c8670b6 Binary files /dev/null and b/derivative differ diff --git a/derivative.cpp b/derivative.cpp new file mode 100644 index 0000000..33c1143 --- /dev/null +++ b/derivative.cpp @@ -0,0 +1,39 @@ +#include +#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; +}