📄 simp.h
字号:
/*头文件calculation.h*/
#include<math.h>
//复化梯形算法
double T_fun(int n,double a,double b,double (*f)())
{
int k;
double h,x;
double F0,F1=0;
double T; //返回值
F0=(*f)(a)+(*f)(b);
h=(b-a)/n;
for(k=1;k<n;k++)
{
x=a+k*h;
F1=F1+(*f)(x);
}
T=h*(F0+2*F1)/2;
return(T);
}
//复化辛普森算法
double simpson(int n,double a,double b,double (*f)())
{
int j;
double h,x;
double F0,F1=0,F2=0;
double SN; //返回值
F0=(*f)(a)+(*f)(b);
h=(b-a)/(2*n);
for(j=1;j<2*n;j++)
{
x=a+j*h;
if(j%2)
F1=F1+(*f)(x);
else
F2=F2+(*f)(x);
}
SN=h*(F0+2*F2+4*F1)/3;
return(SN);
}
//龙贝格数值积分算法
double romberg(double a,double b,double eps,double(*f)())
{
int m,n,i,k;
double y[10]={0,0,0,0,0,0,0,0,0,0};
double h,ep,p,x,s,q;
h=b-a;
y[0]=h*((*f)(a)+(*f)(b))/2.0;
m=1;
n=1;
ep=eps+1.0;
while((ep>=eps)&&(m<=9))
{
p=0.0;
for(i=0;i<n;i++)
{x=a+(i+0.5)*h;
p=p+(*f)(x);
}
p=(y[0]+h*p)/2.0;
s=1.0;
for(k=1;k<=m;k++)
{
s=4.0*s;
q=(s*p-y[k-1])/(s-1.0);
y[k-1]=p; p=q;
}
ep=fabs(q-y[m-1]);
m=m+1; y[m-1]=q;
n=n+n; h=h/2.0;
}
return(q);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -