C++作业-不用库函数实现 导数
一元连续函数求导。
1)编写一个函数用于计算
2)编写一个函数用于计算
3)编写一个函数用于计算(提示:使用exp函数)
4)定义一个函数指针类型,可以表示以上三个函数。
5)编写一个函数,计算任意一个一元连续函数在给定点处的导数。要求使用函数指针作为参数。
(提示:,是一个很小的数,比如
关于
typedef double (*pf)(const double);
的解释:
定义一个函数指针pf,它指向的函数有一个double类型参数,返回值也是double类型。
#include <iostream> #include <stdlib.h> #include <math.h> using namespace std; // 函数声明 typedef double (*pf)(const double); double calcDerivative(pf,const double); // 待处理函数 double f1(const double x){ return sin(x); } double f2(const double x){ return 2*x+1; } double f3(const double x){ return 1 / (1 + exp(-x)); } // 导数计算 double calcDerivative(pf f, const double x){ double delta = 1.0 / 10000000; double num = (f(x + delta) - f(x - delta)) / (2 * delta); return num; } void main(){ double num1 = calcDerivative(f1, 3.1415926); double num2 = calcDerivative(f2, 0); double num3 = calcDerivative(f3, 0); cout << "f1'(3.1415926) = " << num1 << endl; cout << "f2'(0) = " << num2 << endl; cout << "f3'(0) = " << num3 << endl; system("pause"); }