Skip to content

计算积分(发散收敛) ​

试计算积分

∫0∞xax−xdx\displaystyle{\int_0^\infty x^{\frac{a}{x}-x}\mathrm{d}x}

保留至小数点后55位。若积分发散,请输出 orz\text{orz}。

cpp
const double eps=1e-12;
double a;
double f(double x){
    return pow(x,a/x-x);
}
double simpson(double l,double r,double sl,double sr){
    double mid=(l+r)/2;
    return (r-l)*(sl+4*f(mid)+sr)/6;
}
double asr(double l,double r,double s,double sl,double sr){
    double mid=(l+r)/2;
    double S=f(mid);
    double left=simpson(l,mid,sl,S),right=simpson(mid,r,S,sr);
    if(fabs(left+right-s)<eps)return left+right;
    return asr(l,mid,left,sl,S)+asr(mid,r,right,S,sr);
}
void solve(){
    cin>>a;
    if(a<0)return cout<<"orz",void();
    cout<<setprecision(5)<<fixed<<asr(eps,20,f((eps+20)/2),f(eps),f(20));
}