急,用C语言表示牛顿柯特斯公式

用牛顿柯特斯方法求积分∫sin(x)/xdx,其中-1=<x<=1,要求误差不超过10的-3次方!!!要编程,用C语言表示!!!!很重要,谢谢大家了!

将Simpson一元函数积分**************
//***************拓展到任意一个牛顿柯特斯积分****

#include<iostream>
#include<math.h>
using namespace std;

//设置全局数组——牛顿 科特斯公式系数表

double C[6][7]={{1.0/2,1.0/2},{1.0/6,4.0/6,1.0/6},{1.0/8,3.0/8,3.0/8,1.0/8},

{7.0/90,16.0/45,2.0/15,16.0/45,7.0/90},

{19.0/288,25.0/96,25.0/144,25.0/144,25.0/96,19.0/188},

{41.0/840,9.0/35,9.0/280,34.0/105,9.0/280,9.0/35,41.0/840}};

int main()

{

double a=0.0,b=0.0,Cotes=0.0;

int n=0;

cout<<"请分别输入积分段的下届和上届:"<<endl;

cin>>a>>b;

cout<<"请输入您想设置的分段数(节点数-1):"<<endl;

cin>>n;

//检测输入

while(!(n>=1&&n<=6))
{

cout<<"分段数最多为6,请重新输入"<<endl;

cin>>n;

}

//计算科特斯公式的值

for(int j=0;j<=n;j++)

Cotes=Cotes+C[n-1][j]*log((j*(b-a)/n)+a); //函数f(x)为f(x)=ln x 这里你可以自己改为你想要的函数 当然也可以像你的代码一样通过函数指针传递f(x)表达式~~

Cotes=(b-a)*Cotes;

cout<<"牛顿—柯特斯公式计算积分的结果是"<<Cotes<<endl;

return 0;
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网