c - 如何用C实现无限极限梯形积分?

标签 c integration infinity

我正在尝试创建一个 C 程序来对 0 和无穷大之间的 sin(x)/sqrt(x) 进行积分。我使用梯形规则,当函数趋于无穷大时切断端点。

但是返回的总数太高,我不知道为什么。代码如下:

#include<math.h>
#include<stdio.h>

double func(double u)
{ double a;
  a = ((sin(u))/(sqrt(u)));
  return a;}

void main()
    {
    int i, N;
    double sum, u, a, b, h, Fa, Fb, F;

    printf("Enter value of N\n");
    scanf("%d" ,&N);

    a=0.01;
    b=1000;

    h=(b-a)/(N-1);

    sum=0;
    F=func(a);
    u=a;

    for(i=0; i<N; i++)
    {
            sum=sum+F;
            u=u+h;
            F=fabs(func(u));
    }

    Fa=func(a);
    Fb=func(b);

    sum=sum-(0.5*Fa)-(0.5*Fb);
    sum=sum*h;

    printf("I: %lf\n", sum);
}

有什么想法吗?

最佳答案

工作示例:http://ideone.com/Xibrov

只需删除 F=fabs(func(u)); 行中的 fabs 即可。

并且您应该在末尾使用 int main(void)return 0; 而不是 void main()

关于c - 如何用C实现无限极限梯形积分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29087126/

相关文章:

c - 在 C 中使用 Realloc

c - 使用外部函数在任务中获取互斥量

c++ - 包含来自基于 C 的代码的 C++ header (fstream)?

c - 在 C 中运行时检测库特性

hadoop - Hive 无法识别 hbase 中的数字类型值

php - 我应该如何将一些 javascript 集成到 php 应用程序中?

javascript - 寻找将 WEB 应用程序与 Silverlight 和 VB6 集成的客户端集成解决方案

postgresql - 如何在 postgres 中声明区间无穷大?

c++ - 在 C++ 中使用 std::complex<T> 创建复无穷大

r - 在R中的值替换期间区分无穷大和负无穷大