📄 自动选择步长simpson法.cpp
字号:
//黄泳晞 2003402054529
//P.147 算法4.1 自动选择步长Simpson法
#include <iostream.h>
#include <math.h>
#define EPS 0.000001
class Simpson{
public:
float FUNCTION(float X);
float APSIMP(float A,float B);
};
float Simpson::FUNCTION(float X){
float result;
result=exp(-X*X);
return result;
}
float Simpson::APSIMP(float A,float B){
float Y1,Y2,CONST,X,H,Er,S,P=0,OLD=0,NEW[100]={0};
int N=1,K=1,j;
Y1=FUNCTION(A);
Y2=FUNCTION(B);
CONST=Y1+Y2;
while (1){
H=(B-A)/N;
for (j=1;j<=N;j++){
X=A+(2*j-1)*H/2;
NEW[K]=NEW[K]+FUNCTION(X);
}
if (K>1)
OLD=OLD+NEW[K-1];
S=H*(CONST+4*NEW[K]+2*OLD)/6;
Er=fabs(S-P)/15;
if (Er>EPS){
K=K+1;P=S;N=N+N;
}else break;
}
cout<<"近似值S= "<<S<<endl<<"步长H= "<<H<<endl;
return 0;
}
void main(){
Simpson T;float A,B;
cout<<"Simpson公式求积分的近似解"<<endl<<"请输入积分上限A和下限B"<<endl<<"A= ";
cin>>A;
cout<<"B= ";
cin>>B;
T.APSIMP(A,B);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -