Derivative

This commit is contained in:
david 2019-05-06 14:41:11 +02:00
parent 7750dbddb1
commit f67da39fd4
2 changed files with 39 additions and 0 deletions

BIN
derivative Executable file

Binary file not shown.

39
derivative.cpp Normal file
View File

@ -0,0 +1,39 @@
#include <iostream>
#include <math.h>
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;
}