c5.cpp

来自「数值分析最常用的四十种算法」· C++ 代码 · 共 38 行

CPP
38
字号
//C5.cpp
//Composite Simpson Rule

#include<iostream.h>
#include<math.h>

double f(double x)
{
	if (x==0)
		return 1;
	else
	    return sin(x)/(x);
}

double ComSimp(double x0,double xn,int n)
{
	double s1,s2,h;
	int i;
	h=(xn-x0)/n;s1=f(x0+h/2);s2=0;        //Initialization
	for (i=1;i<n;i++)
	{
		s1+=f(x0+i*h+h/2);
		s2+=f(x0+i*h);
	}
    return h/6*(f(x0)+4*s1+2*s2+f(xn));
}

void main()
{
	double x0=0,xn=1;
	int n=2;
	cout<<ComSimp(x0,xn,n)<<endl;
}

//When n==100,the answer is:0.946083
//When n==2,the answer is:0.946087,
//两次相差不大,可见复化Simpson公式有着极好的计算效果
//但编写程序时必须注意本题除数会为零的情况

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?