十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这是辛普森积分法。
创新互联建站主要从事网站制作、做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务广宗,十多年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792
给你写了fun_1( ),fun_2(),请自己添加另外几个被积函数。
调用方法 t=fsimp(a,b,eps,fun_i);
a,b --上下限,eps -- 迭代精度要求。
#includestdio.h
#includestdlib.h
#include math.h
double fun_1(double x)
{
return 1.0 + x ;
}
double fun_2(double x)
{
return 2.0 * x + 3.0 ;
}
double fsimp(double a,double b,double eps, double (*P)(double))
{
int n,k;
double h,t1,t2,s1,s2,ep,p,x;
n=1; h=b-a;
t1=h*(P(a)+P(b))/2.0;
s1=t1;
ep=eps+1.0;
while (ep=eps)
{
p=0.0;
for (k=0;k=n-1;k++)
{
x=a+(k+0.5)*h;
p=p+P(x);
}
t2=(t1+h*p)/2.0;
s2=(4.0*t2-t1)/3.0;
ep=fabs(s2-s1);
t1=t2; s1=s2; n=n+n; h=h/2.0;
}
return(s2);
}
void main()
{
double a,b,eps,t;
a=0.0; b=3.141592653589793238; eps=0.0000001;
// a definite integral by Simpson Method.
t=fsimp(a,b,eps,fun_1);
printf("%g\n",t);
t=fsimp(a,b,eps,fun_2);
printf("%g\n",t);
// ...
printf("\n Press any key to quit...");
getch();
}
源代码如下:
#include#includefloat f1(float x)
{
return(1.0+x);
}
float f2(float x)
{
return(2.0*x+3.0);
}
float f3(float x)
{
return(exp(x)+1);
}
float f4(float x)
{
return(pow(1+x,2));
}
float f5(float x)
{
return(pow(x,3));
}
float fsimp(float a,float b,float (*p)(float))
{
float c,s;
c=(a+b)/2;
s=(b-a)/6*(p(a)+4*p(c)+p(b));
return s;
}
int main()
{
float a,b;
printf("请输入积分下限a的值:");
scanf("%f",a);
printf("请输入积分上限b的值:");
scanf("%f",b);
printf("%f\n",fsimp(a,b,f1));
}
扩展资料
1、对应于一个积分式要有一段程序,可以改变程序的一小部分来改变所要求的积分式。
2、除数不能位0。
3、两个整数相除,结果仍是整数。
4、若被除数其中有一个为浮点数或者两个都为浮点数,则结果为浮点类型。操作数必须为整数,不能是浮点数。
#includeiostream.h
//定义结构类型
struct student
{
int num;
char name[20];
float grade;
};
void main(void)
{
//声明数组
int i,size;
char str[]="This is a string.";
int int_values[] = {51, 23, 2, 44, 45,0,11};
float float_values[] = {15.1, 13.3, 22.2, 10.4, 1.5};
student st_arr[]={101,"WangLin",92,102,"LiPing",85,103,"ZhaoMin",88};
//显示char类型数组元素及其大小
size=sizeof(str) / sizeof(char);
cout"Number of elements in str: ";
coutsizeendl;
for(i=0;isize;i++) {
coutstr[i];
}
coutendl;
//显示int类型数组元素及其大小
size=sizeof(int_values) / sizeof(int);
cout"Number of elements in int_values: ";
coutsizeendl;
for(i=0;isize;i++) {
coutint_values[i]" ";
}
coutendl;
//显示float类型数组元素及其大小
size=sizeof(float_values) / sizeof(float);
cout"Number of elements in float_values: ";
coutsizeendl;
for(i=0;isize;i++) {
coutfloat_values[i]" ";
}
coutendl;
//显示student类型数组元素及其大小
size=sizeof(st_arr) / sizeof(student);
cout"Number of elements in st_arr: ";
coutsizeendl;
for(i=0;isize;i++) {
coutst_arr[i].num" ";
coutst_arr[i].name" ";
coutst_arr[i].gradeendl;
}
}
#includeiostream.h
//add()函数的定义,其有返回值
double add(double x,double y)
{
double z;
z=x+y;
coutx"+"y"="zendl;
return(z);
}
main()
{
double a=0.5,b=1.0;
//以不同参数形式调用函数add()
cout"add(1.5,2.5)="add(1.5,2.5)endl;
cout"add(a,b)="add(a,b)endl;
cout"add(2*a,a+b)="add(2*a,a+b)endl;
cout"----------------------"endl;
//以表达式方式调用函数add()
double c=2*add(a,b);
cout"c="cendl;
cout"----------------------"endl;
//以语句式方式调用函数add()
add(2*a,b);
cout"----------------------"endl;
//用其他类型参数调用函数add()
int n=1,m=2;
cout"add("n","m")="add(n,m)endl;
}
#includeiostream.h
//定义符号函数sgn(),其返回值为int类型
int sgn(double x)
{
if (x0) return(1); //返回出口1
if (x0) return(-1); //返回出口2
return(0); //返回出口3
}
//main()函数定义
main()
{
double x;
int i;
for (i=0;i=2;i++) {
cout"x=";
cinx;
cout"sgn("x")="sgn(x)endl;
}
}
把积分算式算出来,然后用C写。
比如[a,b]的积分上限和下限,对x积分,就是x^2/2, 代入a,b