ex3.cpp

来自「算法分析中的辛甫生公式和梯形公式」· C++ 代码 · 共 66 行

CPP
66
字号
// ex3.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"



#include<iostream>
#include<cmath>

using namespace std;

#define f(x) (4/(1+x*x))  //举例函数
#define epsilon 0.00001  //精度

//复化Simpson公式
float Simpson(float aa, float bb, long n)
{//aa,bb:端点  n,分区数
    if (!(n%2)) //保证n为偶数
        n = n+1;
    long m = n/2;

    float sum = 0;
    float h = (bb-aa)/n; //步长

    float sum1 = 0, sum2 = 0;
    for (long i=0; i<m; i++)
    {
        sum1 += f(aa + (2*i+1)*h);
		sum2 += f(aa + (2*i)*h);
    }

    sum = f(aa) + f(bb) + 2*sum2 + 4*sum1;

    return (h*sum/3);
}

float computerT(float aa, float bb, long n)
{//aa,bb:端点  n,分区数
    float sum = 0;
    float h = (bb-aa)/n; //步长
    for (long i=1; i<n; i++)
    {
        sum += f(aa + i*h);
    }
    sum += (f(aa) + f(bb))/2;

    return (h*sum);
}


int _tmain(int argc, _TCHAR* argv[])
{
    float a,b;
    long n=2;
	cout<<"y=4/(1+x*x),求积分"<<endl;
    cout<<"Simpson积分and梯形积分,请输入积分范围a,b:"<<endl;
    cin>>a>>b;
	
    cout<<"辛甫生公式积分结果:"<<Simpson(a, b, n)<<endl;
	cout<<"梯形公式积分结果:"<<computerT(a, b, n)<<endl;


    system("pause");
    return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?