请求解下面的积分并输出答案:
输入
多组输入。
每一个样例包含两个正整数 a,b (0<a<=b<=10)
输出
每一个样例输出一个整形,即积分的答案乘以10000。(精度为 1e-5 ,每次取左端点)
样例输入
1 1
1 2
2 8
样例输出
0
6593
-312
解题思路:
由于的不定积分无法用初等函数求出。
于是我们可以想到泰勒公式
从而得到
对其积分
于是我们便可在的精度要求下求出定积分
代码实现:
#include <bits/stdc++.h>
using namespace std;
const double eps=1e-5;
double fun(double x){
double t=x,ans=x;
int n=1;
while(fabs(t)>=eps){ //精度要求
t=(-t*x*x)/((n+1)*(n+2));
ans+=t/(n+2);
n+=2;
}
return ans;
}
int main(){
double a,b;
while(~scanf("%lf%lf",&a,&b)){
double r1=fun(a),r2=fun(b); //F(b)-F(a)
printf("%d\n",(int)((r2-r1)*10000));
}
return 0;
}