牛顿-柯特斯公式C语言的实现
实验四 .牛顿 -柯特斯公式 C 语言的实现
1.实验目的:
进一步熟悉牛顿 -柯特斯公式。
掌握编程语言字符处理程序的设计和调试技术。
2.实验要求:
输入:已知积分上下限以及想要得到的分段数 。
输出:根据牛顿 -柯特斯公式求出积分值 。
3.程序流程:
(1)输入积分上下限;
(2)分别输入想要得到的分段数;
(3)通过调用函数,求出积分值。
原理如下:
b a
设将积分区间 [a, b]划分成 n 等分 ,步长 h= ,
n
求积节点取为 xk=a+kh (k = 0,1,…… ,n), 由此构造插值型求积公式
n
I (b a) C( n) f ( x )
n k k
k 0
则其求积系数为
n k n
( n ) ( 1) n
Ck (t j )dt
nk !(n k)! 0 j k
程序流程图:
开始
↓
输入积分上下限
↓
输入分段数目
↓
输出结果
程序如下:
#include
#include
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<
cin>>a>>b;
cout<
cin>>n;
//检测输入
while(!(n>=1&&n<=6))
{
cout<
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 这里可以改成想要的