杨源的专栏

黑马之王的个人原创文集

用c语言解决simpson算法

#include<iostream.h>
#include<math.h>
#include<iomanip.h>
double sum4(double);//函数声明
double sum2(double);
double f(double);
//////////////////////////////////////////////
void main()
{
double sn,s2n,h,result,a,b;
double eps;
int n;
cout<<"请输入a=";
cin>>a;
cout<<"请输入b=";
cin>>b;
cout<<"请输入EPS(比如:如果输入7,则表示为10^-7)=";
cin>>eps;
if(a>b||eps<0)return;
eps=pow(10,-eps);//精度
h=b-a;
n=(int)((b-a)/h);
sn=h/(6*n)*(f(a)+4*sum4(h)+2*sum2(h)+f(b));
while(h>0)
{
h/=2;
s2n=h/(6*n)*(f(a)+4*sum4(h)+2*sum2(h)+f(b));
if((fabs(s2n-sn)/15)>eps)sn=s2n;
else
{
result=s2n;//退出循环条件
break;
}
}
cout<<"结果是"<<setprecision(9)<<result<<endl<<"h的大小="<<h<<endl;
}
//////////////////////////////////////////////
double f(double x)//函数f(x)的表达式
{
return (exp(-x*x));
}
//////////////////////////////////////////////
double sum4(double h)//复合simpson公式的系数为4的求和
{
int n,i;
double sum=0;
n=(int)(1/h);
for(i=0;i<n;i++)
sum+=f((i+0.5)*h);
return sum;
}
//////////////////////////////////////////////
double sum2(double h)//复合simpson公式的系数为2的求和
{
int n,i;
double sum=0;
n=(int)(1/h);
for(i=1;i<n;i++)
sum+=f(i*h);
return sum;
}
阅读更多
文章标签: 语言 c ini 算法
想对作者说点什么? 我来说一句

Simpson公式数值积分c++源代码

2011年11月04日 551KB 下载

变步长simpson积分法

2013年12月30日 714B 下载

变步长梯形法求积分C语言实现

2010年05月30日 1006B 下载

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭