⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sinpson.txt

📁 数值算法的实现 辛普森算法 实现积分 在c语言下实现
💻 TXT
字号:
题目:
        用变步长辛卜生求积法求解: 
                      

算法分析:
              设定积分为 
              要求误差小于e
              如下:
              令h=(b-a)/2,s0=f(a)+f(b),s1=f(a+b)
               s2=0,s=(s0+4s1)h/3,n=1
        L:     令h=h/2;n=2n;s2=s1+s2,s1=0
              对i=1~~n令s1=s1+f(a-h+2ih)
令s*=(s0+4s1+2s2)h/3    d=|s*-s|/15,s=s*
若|D|>ε则转到L    否则 输出S并停止计算。
            
源程序:


#include <stdio.h>
#include <math.h>
void main()
{
	double x1,xh,eps,Result;
	double Simpson_VariStep(double x1,double xh,double eps);
	x1=0;                    //积分区间下限
	xh=3.14159265/2;         //积分区间上限
	eps=1.0e-5;              //精度要求   
	Result=Simpson_VariStep(x1,xh,eps);
	printf("\n Result =%f",Result);
}

double AFunction(double x);


double Simpson_VariStep(double x1,double xh,double eps)

{
	double AFunction();
	int subs ,n,i;
	double result,s1,t1,s2,t2,x,p,width;
	n=1;
	width=xh-x1;
    t1=width*(AFunction(x1)+AFunction(xh))/2.0;
	s1=t1;
	s2=s1+2.0*eps;
	subs=1;
	while(subs)
	{
		p=0.0;
		for(i=0;i<=n-1;++i)
		{
			x=x1+(i+0.5)*width;
			p=p+AFunction(x);
		}
		t2=(t1+width*p)/2.0;
		s2=(4*t2-t1)/3.0;
		result=s2;
		subs=fabs(s2-s1)>=eps;
		t1=t2;
		n=n+n;
		width=width/2.0;
		s1=s2;
	}
	return (s2);
}




double AFunction( double x)//被积函数

{
	double result ;
	result =sin(x)/x;
	return (result);
}
结果: p = 1.3708


⌨️ 快捷键说明

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