cout<<"intesum1=";
integralt(a,b,n,F1);//应用函数指针调用函数
cout<<"intesum2=";
integralt(a,b,n,F2);//应用函数指针调用函数
cout<<"辛普生法:
"<cout<<"intesum1=";
integralts(a,b,n,F3);//应用函数指针调用函数
cout<<"intesum2=";
integralts(a,b,n,F4);//应用函数指针调用函数
}
voidintegralt(doublex,doubley,intz,double(*f)(double,double,int))//利用梯形法球定积分
{
doubleff;
ff=(*f)(x,y,z);//用函数指针调用F1函数
cout<}
doubleF1(doublex,doubley,intz)
{
doubleh,Y1;//定义局部变量
h=HIGH1(x,y,z);//调用宏定义
Y1=h/2*(f1(x)+f1(y)+2*sum1(x,y,z));//梯形法公式
returnY1;//返回梯形法得到的1+x*x的定积分的值
}
doubleF2(doublex,doubley,intz)
{
doubleh,Y2;//定义局部变量
h=HIGH1(x,y,z);//调用宏定义
Y2=h/2*(f2(x)+f2(y)+2*sum2(x,y,z));//梯形法公式,调用f2,sum2函数
returnY2;//返回梯形法得到的1+x+x*x+x*x*x的定积分的值
}
doublef1(doubleu)
{
doubley1;//定义变量
y1=u*u+1;
returny1;//返回值
}
doublef2(doublev)
{
doubley2;//定义变量
y2=1+v+v*v+v*v*v;
returny2;//返回值
}
doublesum1(doublec,doubled,inte)
{
doubleh=HIGH1(c,d,e);//调用宏定义
doubles1=0;//定义变量
for(inti=1;i<=e-1;i++)//for循环
{
doubleg=c+i*h;
s1+=f1(g);
}
returns1;//返回值
}
doublesum2(doublep,doubleq,intr)
{
doubleh=HIGH1(p,q,r);//引用宏定义
doubles2=0;//定义变量
for(inti=1;i<=r-1;i++)//for循环
{
doubleg=p+i*h;
s2+=f2(g);
}
returns2;//返回值
}
voidintegralts(doublex,doubley,intz,double(*f)(double,double,int))//辛普生法
{
doubleff;
ff=(*f)(x,y,z);//函数指针
cout<}
doubleF3(doublex,doubley,intz)
{
doubleh,Y1;//定义变量
h=HIGH2(x,y,z);
Y1=h/3*(f3(x)+f3(y)+4*sum5(x,y,z)+2*sum6(x,y,z));//调用f3,sum5,sum6函数
returnY1;//返回值
}
doubleF4(doublex,doubley,intz)
{
doubleh,Y2;
h=HIGH2(x,y,z);
Y2=h/3*(f4(x)+f4(y)+4*sum3(x,y,z)+2*sum4(x,y,z));
returnY2;
}
doublef3(doubleu)
{
doubley1=1+u*u;
returny1;
}
doublef4(doublev)
{
doubley2=1+v+v*v+v*v*v;
returny2;
}
doublesum5(doublep,doubleq,intr)
{
doubleh=HIGH2(p,q,r);
doubles=0;
for(inti=1;i<=2*r-1;i+=2)//for循环
{
doubleg=p+i*h;
s+=f3(g);
}
returns;
}
doublesum6(doublep,doubleq,intr)
{
doubleh=HIGH2(p,q,r);
doubles=0;
for(inti=2;i<=2*r-2;i+=2)//for循环
{
doubleg=p+i*h;
s+=f3(g);
}
returns;
}
doublesum3(doublec,doubled,inte)
{
doubleh=HIGH2(c,d,e);
doubles=0;
for(inti=1;i<=2*e-1;i+=2)
{
doubleg=c+i*h;
s+=f4(g);
}
returns;
}
doublesum4(doublec,doubled,inte)
{
doubleh=HIGH2(c,d,e);
doubles=0;
for(inti=2;i<=2*e-2;i+=2)
{
doubleg=c+i*h;
s+=f4(g);
}
returns;
}
四、对该设计题目有何更完善的方案
1、对自己完成程序进行自我评价。
复习了函数和函数指针部分的内容,通过运用函数调用,for循环以及累加和运算,经过反复调试,将近一周的时间,终于完成了课程设计,感觉很充实,进一步熟悉了函数的运用,进步很大,同时课设过程中也是遇到很多困难,通过和同学的讨论和向老师的请教,终于完成了课程设计。
2、对课题提出更完善的方案
改程序,使一次运行中,可以输入多组数据,并进行计算,在输出结果中可以直观的比较出梯形法与辛普生法求定积分的精度问题。
五、收获及心得体会
1、通过本次课程设计,自己在哪些方面的能力有所提高。
熟悉了函数和函数指针的知识,以及for循环和函数累加和的应用。
提高了自学能力,通过不断地调试程序,不断的改进,在此过程中,,磨砺了自己的毅力,最终程序成功运行,更增强了今后在学习中的自信。
2、收获和心得体会。
1)首先要有耐心;
2)增强自学能力,不会就问,或查资料;
3)锻炼自己的意志,要能坚持,不放弃,要自信。
日期:
2012年06月28日