📜  哈代法则

📅  最后修改于: 2021-09-23 04:41:09             🧑  作者: Mango

哈代法则是牛顿-科特斯公式的扩展。考虑一个函数f(x),在点上列出 x_i等距 h=x_{i+1} - x_i以至于 f_1 = f(x_1), f_2 = f(x_2).....
鉴于以下输入
1.一个函数f(x) ,必须计算其被积函数。
2. 上下限   x_{1}, x_{2}=x_{1}+h, x_{3}=x_{1}+2h, x_{4}=x_{1}+3h, x_{5}=x_{1}+4h, ....

可以通过逼近被积函数 f(x) 推导出哈代法则

例子 :

任务是使用哈代法则找到函数的被积函数

f(x) = 1/(1+x^2)上限,b = 6,下限 a = 0。

方法 :
哈代法则是一种数值积分技术,用于寻找积分的近似值。

 f_1, f_2, f_3, f_4, f_5, f_6, f_7 是 f(x) 在它们各自的 x 间隔处的值。
为了对区间 (a, b) 中的任何函数f(x) 进行积分,请按照以下步骤进行:

1.n=6的值,即区间划分的部分数。
2.计算宽度,h = (ba)/6
3.计算x0到x6的值如下 x_1 = a, x_2 = x_1 + h, x_3 = x_1 + 2h, ...x_7=x_1 + 5h
考虑y = f(x)。现在找到值 y(y_1, y_2, .. y_7) 对于相应的 x(x_1, x_2, x_3... x_7)值。
4. 代入以上所有哈代法则中的值来计算积分值。

下面是上述方法的实现:

// C program to implement Hardy's Rule
// on the given function
  
#include 
#include 
  
// In order to represent the implementation,
// a function f(x) = 1/(1 + x) is considered
// in this program
  
// Function to return the value of f(x)
// for the given value of x
float y(float x)
{
    return (1 / (1 + x));
}
  
// Function to computes the integrand of y
// at the given intervals of x with
// step size h and the initial limit a
// and final limit b
float Hardyrule(float a, float b)
{
    // Number of intervals
  
    int n = 6;
    int h;
  
    // Computing the step size
    h = ((b - a) / n);
    float sum = 0;
  
    // Substituing a = 0, b = 4 and h = 1
    float hl = (28* y(a) + 162 * y(a + h)
  
                + 220 * y(a + 3 * h)
                +  162* y(a + 5 * h)
                +28* y(a + 6*h))*h/100
                ;
  
    sum = sum + hl;
    return sum;
}
  
// Driver code
int main()
{
    float lowlimit = 0;
    float upplimit = 6;
    printf("f(x) = %.4f",
           Hardyrule(0, 6));
    return 0;
}
输出:
f(x) = 1.9500