自动选取步长梯形法算法.cpp

来自「数值分析课程必备的算法:自动选取步长梯形法算法。有需要的同学下载」· C++ 代码 · 共 43 行

CPP
43
字号
//自动选取步长梯形法算法
	
#include<iostream.h>
#include<math.h>

double fun(double);
void main()
{	
	double a,b,h,e,T0,T1,S;
	int n;

	cout<<"**************自动选取步长梯形法算法**************"<<endl;
	cout<<"请输入积分区间的[a,b]:"<<endl;
	cout<<"a= ";		cin>>a;
	cout<<"b= ";		cin>>b;

	cout<<"请输入容许误差e:"<<endl;
	cout<<"e= ";		cin>>e;

	h=(b-a)/2;
	T1=(fun(a)+fun(b))*h;
	n=1;

	int flag=1;
	while(flag==1)
	{	T0=T1;
		S=0;
		for (int k=1;k<=n;k++)
		{
			S+=fun(a+(2*k-1)*(h/n));
		}
		T1=T0/2+S*(h/n);
		if (fabs(T1-T0)<3*e) 
		{	flag=0;
			cout<<"所求函数f(t)=2/(1+t*t)在["<<a<<","<<b<<"]的积分近似值为:"<<T1<<endl;
		}
		else {	n=2*n;	flag=1;	}	
	}
}
double fun(double x)
{
	return 2/(1+x*x);
}

⌨️ 快捷键说明

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