#include<iostream>
#include<iomanip>
#include<string>
using namespace std;
double f(double t1,double t2)
{
double y;
y=t1*t2;
return y;
}
double cx(double x)
{
double y;
y=x;
return y;
}
double dx(double x)
{
double y;
y=2*x;
return y;
}
double Dblint(double a,double b,double m,double n)
{ double s1,s2,s3,k1,k2,k3;
double h,S,L,G;
double x,y,z;
h=(b-a)/(2*n);
cout<<"h="<<h<<endl;
s1=0;
s2=0;
s3=0;
cout<<"----------------------------------------------------------------"<<endl;
for(int i=0;i<=2*n;i++)
{
x=a+i*h;
G=(dx(x)-cx(x))/(2*m);
k1=f(x,cx(x))+f(x,dx(x));
cout<<setprecision(7);
cout<<"k1="<<k1<<setw(8)<<"G="<<G<<endl;
k2=0;
k3=0;
for(int j=1;j<=(2*m-1);j++)
{
y=cx(x)+j*G;
z=f(x,y);
if(j%2==0)
{
k2=k2+z;
}
else
{
k3=k3+z;
}
}
L=(k1+2*k2+4*k3)*(G/3);
if(i==0||i==2*m)
{ s1=s1+L; }
else if(i%2==0)
{ s2=s2+L; }
else
{ s3=s3+L; }
}
S=(s1+4*s3+2*s2)*(h/3);
return S;
}
int main()
{
double a,b,m,n,S;
cout<<"请输入区间a,b和等分数m,n:"<<endl;
cin>>a>>b>>m>>n;
S=Dblint(a,b,m,n);
cout<<"输出二重积分值:"<<flush;
cout<<"S="<<S<<endl;
return 0;
}