1. 题目链接:
2. 题意:
给定一个不规则的圆柱的上下两面的竖坐标以及半径
R
与坐标的关系:
3. 分析:
将其看成一个旋转体:
1. 旋转体的体积的求法:
将其微分,看成无数个小圆柱体的和然后做定积分就可以了。
V=∫z2z12∗π∗(2+cos2(x))dx
这个积分很好求,化简之后为:
V=π∗(4∗x+2∗sin(x)+x/2+sin(2∗x))|z2z1
2. 求旋转体的表面积:
S=∫z2z12∗π∗f(x)∗1+f′2(x)−−−−−−−−√dx
这个积分不是很好求我们可以用 辛普森积分法来求解。
4. Code
#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1.0);
double calc(double u)
{
return 4.0*sin(u)+sin(u*2.0)/4.0+9.0*u/2.0;
}
double f(double u)
{
return cos(u)+2.0;
}
double df(double u)
{
return (2.0+cos(u))*sqrt(1.0+sin(u)*sin(u));
}
double xps(double l,double r)
{
return (r-l)*(df(r)+4.0*df((l+r)/2)+df(l))/6.0;
}
int main(){
int t;
double z1,z2;
cin>>t;
while(t--){
cin>>z1>>z2;
double ans=calc(z2)-calc(z1);
double ans1=0;
double h=(z2-z1)/5001;
double g = z1;
for (int i=1;i<=5001;i++)
{
ans1+=xps(g,g+h);
g+=h;
}
ans1*=2*pi;
ans1+=pi*f(z1)*f(z1);
printf("%.2lf %.2lf\n",ans*pi,ans1);
}
return 0;
}