📄 three.cpp
字号:
#include<iostream.h>
#include<math.h>
#include<iomanip.h>
long double f(long double a);
#define pi 3.1415926
main()
{
long double a=0,b=1,m=1;
long double TRUE =pi/4*1.4142136;
long double A;//辛蒲生值
long double B;//梯形值
long double h;//步长
do{
long double X1=f(a)+f(b);
long double X0=0;
long double Xe=0;
h=(long double)(b-a)/(2*m);
for(int j=1;j<=2*m-1;j++)
{
long double X=(long double)a+j*h;
if(j%2==1)
X0=(long double)X0+f(X);
else
Xe=(long double)Xe+f(X);
}
A=(long double)h*(X1+2*Xe+4*X0)/3;
m=m*2;
}while((TRUE-A)>=0.00000001||(TRUE-A)<=-0.00000001);
cout<<"辛蒲生组合公式"<<endl<<"等份数m="<<setprecision(15)<<m/2<<" "<<"步长h="<<h
<<" "<<"真值TRUE="<<TRUE<<" "<<"计算值A="<<A<<"误差:"<<fabs(TRUE-A)<<endl;
m=1;
do{
double X2=0;
double X1=f(a)+(b);
h=(long double)(b-a)/(2*m);
for( int j=1;j<=2*m-1;j++)
{
long double X=(long double)a+j*h;
X2=X2+f(X);
}
B=(long double)h*(X1+2*X2)/2;
m=m*2;
}while(fabs(B-TRUE)>0.0000001);
cout<<"梯形组合公式"<<endl<<"等份数m="<<setprecision(15)<<m/2<<" "<<"步长h="<<h
<<" "<<"真值TRUE="<<TRUE<<" "<<"计算值B="<<B<<"误差:"<<fabs(TRUE-B)<<endl;
return 0;
}
long double f(long double x)
{
return (long double)(1+x*x)/(1+pow(x,4));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -