守卫剑阁五虎将人物:懂C++的进

来源:百度文库 编辑:中科新闻网 时间:2024/05/05 22:41:22
这是我编的求3x平方+2x+1的定积分,如何把它改成求任意二次函数的定积分,高手帮帮忙啊。也就是说如何在主函数里输入a,b,c,把它用在
f(x)这个函数里。
#include<iostream>
using namespace std;
int main()
{
double f(double x);
double g(double (*p)(double),double m,double n,int k);
double m,n,z,(*p)(double);
int k=100000;
cin>>m>>n;
p=f;
z=g(p,m,n,k);
cout<<z<<endl;
return 0;
}

double g(double (*p)(double),double m,double n,int k)
{
int i;
double w,x,s=0;
w=(m-n)/k;
x=n;
for(i=0;i<k;i++)
{
x=x+w;
s=s+(*p)(x)*w;
}
return(s);
}

double f(double x)
{
double s;
s=3*x*x+2*x+1;
return(s);
}

你是根据定积分的几何意义来编的,改起来相对麻烦。如果直接套用定积分的积分公式:ax^2+bx+c -->(a/3)*x^3+(b/2)*x^2+c*x 则更容易执行。
#include<iostream>
using namespace std;
void f(double a,double b,double c,double m,double n);
void main()
{
double a,b,c, m,n;
cout<<"enter a,b,c."<<endl;
cin>>a>>b>>c;
cout<<"your funtion is "<<a<<"x^2+"<<b<<"x+"<<c<<endl;

cout<<"enter up-bound"<<endl;
cin>>m ;
cout<<"enter lower-bound"<<endl;
cin>>n;

f(a,b,c,m,n);
}
void f(double a,double b,double c,double m,double n)
{
double r1=(a/3)*m*m*m+(b/2)*m*m+c*m;
double r2=(a/3)*n*n*n+(b/2)*n*n+c*n;
cout<<r1-r2<<endl;
}
这个程序得出的结果误差更小。