求定积分的方法有很多种,下面是我总结的几种比较常用的方法。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>#define N        3double fun(double x)
{double y;y = sqrt(4-(x)*(x));//y = sin(x);return y;
}/*随机点法求定积分*/
double Darts(int n)
{double x, y;time_t t;int i = 0;int count = 0;srand((unsigned)time(&t));for (i=0; i<n; i++){x = rand()%100/100.0;y = rand()%100/100.0;if (y <= 1-pow(x,2)){count++; }   }return (double)count/(double)n;
}/*左矩形法求定积分*/
double LeftRect(double down, double up, int n)
{double h, s;int i;/*计算步长*/h = (up-down)/n;s = fun(down)*h;for (i=1; i<n; i++){s = s + fun(down+i*h)*h;  } return s;
}/*梯形公式求定积分*/
double Trape(double down, double up, int n)
{double h, s;int i = 0;/*计算步长*/h = (up-down)/n;s = 0.5*(fun(down)+fun(down+h))*h;for (i=1; i<n; i++){s = s + 0.5 * (fun(down+i*h) + fun(down+(i+1)*h))*h;}return s;
} /*复合梯形公式*/
double T(double x, double y, int z)
{double h, Tn;int i = 0;h = (y-x)/z;Tn = (fun(x)+fun(y))/2;for (i=0; i<z; i++){Tn = Tn+fun(x+i*h); }   Tn = Tn*h;return Tn;
} /*辛普生公式求定积分,公式为:S[n]=(4*T[2*n]-T[n])/3,其中T[2n],T[n]为梯形公式计算结果*/
double Simposn(double down, double up, int n)
{double s;/*辛普生公式*/s = (4*T(down, up, 2*n) - T(down, up, n))/3;return s;
}/*高斯公式求定积分*/
double Gass(double (*func)(double x), double a, double b, int n)
{int i = 0;//高斯点及其求积系数列表float x1[1]={0.0};                                                  float A1[1]={2};float x2[2]={-0.5573503,0.5573503};                                float A2[2]={1,1};float x3[3]={-0.7745967,0.0,0.7745967};                             float A3[3]={0.555556,0.888889,0.555556};float x4[4]={0.3399810,-0.3399810,0.8611363,-0.8611363};            float A4[4]={0.6521452,0.6521452,0.3478548,0.3478548};float x5[5]={0.0,0.5384693,-0.5384693,0.9061799,-0.9061799};       float A5[5]={0.5688889,0.4786287,0.4786287,0.2369269,0.2369269};   float *p, *t;switch (n){case 1:          p = x1;t = A1;break;case 2:          p = x2;t = A2;break;case 3:          p = x3;t = A3;break;case 4:          p = x4;t = A4;break;case 5:          p = x5;t = A5;break;default :   printf("intput wrong!");}float g = 0;for (i=0; i<n; i++){g += (*func)((b-a)*p[i]/2+(a+b)/2)*t[i];} g *= (b-a)/2;return g;
}int main(int argc, char *argv[])
{printf("随机点法积分值%f\n", Darts(10000));double down, up;int n;double sum = 0;printf("积分下限:\n");scanf("%lf", &down);printf("积分上限:\n");scanf("%lf", &up);printf("分隔数目:\n");scanf("%d", &n);sum = LeftRect(down, up, n);printf("左矩形法积分值为:%f\n", sum);sum = Trape(down, up, n);printf("梯形公式积分值为:%f\n", sum);sum = Simposn(down, up, n);printf("辛普生公式积分值为:%f\n", sum);sum = Gass(fun, down, up, N);printf("高斯公式积分值为:%f\n", sum);return 0;
}

转载于:https://www.cnblogs.com/james1207/p/3268789.html

C语言实现定积分求解方法相关推荐

  1. c语言怎样写积分程序,C语言实现定积分求解方法

    求定积分的方法有很多种,下面是我总结的几种比较常用的方法. #include #include #include #include #define N3 double fun(double x) { ...

  2. 用C语言实现定积分求解的三种方法,梯形公式,辛普森公式,自适应辛普森公式

    1.梯形公式: 梯形公式(trapezoidal rule)是一种求定积分的方法.它假定函数在区间上是一条直线,因此可以通过计算梯形的面积来估计函数的定积分 #include<stdio.h&g ...

  3. 定积分求解方法——换元积分法

    换元积分法 定积分换元积分法 例题 定积分换元积分法 例题

  4. 定积分求解方法——分步积分法

    定积分分步积分法 分步积分法 例题 附[沃里斯公式] 分步积分法 例题 附[沃里斯公式]

  5. 用C语言编码定积分,C语言__用六种方法求定积分C语言__用六种方法求定积分.doc...

    C语言__用六种方法求定积分C语言__用六种方法求定积分 描述问题 利用①左矩形公式,②中矩形公式,③右矩形公式 ,④梯形公式,⑤simpson公式,⑥Gauss积分公式求解定积分. 分析问题 2.1 ...

  6. 《C语言程序设计:问题与求解方法》——3.8节不同类型数据之间的类型转换

    本节书摘来自华章社区<C语言程序设计:问题与求解方法>一书中的第3章,第3.8节不同类型数据之间的类型转换,作者:何 勤,更多章节内容可以访问云栖社区"华章社区"公众号 ...

  7. 《C语言程序设计:问题与求解方法》——3.9节常见编程错误

    本节书摘来自华章社区<C语言程序设计:问题与求解方法>一书中的第3章,第3.9节常见编程错误,作者:何 勤,更多章节内容可以访问云栖社区"华章社区"公众号查看 3.9 ...

  8. 《C语言程序设计:问题与求解方法》——1.4节本章习题

    本节书摘来自华章社区<C语言程序设计:问题与求解方法>一书中的第1章,第1.4节本章习题,作者:何 勤,更多章节内容可以访问云栖社区"华章社区"公众号查看 本章习题 一 ...

  9. 《C语言程序设计:问题与求解方法》——0.5节本章习题

    本节书摘来自华章社区<C语言程序设计:问题与求解方法>一书中的第0章,第0.5节本章习题,作者:何 勤,更多章节内容可以访问云栖社区"华章社区"公众号查看 本章习题 1 ...

最新文章

  1. 东莞.NET技术线下沙龙活动资料分享
  2. 细说新一代HTML5/JavaScript的UI控件wijmo5 的新架构
  3. JS面向对象的实现和原理
  4. vue3 element-ui el-date-picker选择日期后,悬停至日期icon时切换为清空icon
  5. c++fabs函数_C语言中常用的标准库函数有哪些?
  6. Linux命令速查手册
  7. python单词统计、给定一个段落()_自己动手Python写一个词频统计小项目
  8. 水水的证件-身份证、证件加水印小工具
  9. 模块一 day03 Python基础
  10. 西门子实数转整数_怎样将实数转换成整数
  11. charles安装教程--以及针对安装证书后https<unknown>爬坑
  12. C语言第六章函数实验报告,第六章实验报告
  13. 简单的机械臂设计(Splay树)
  14. 左岸:如何修炼成某一领域的高手
  15. CVE-2018-6794一把梭
  16. SimpleDateFormat的使用:SimpleDateFormat对日期Date类的格式化和解析
  17. 【Windows下设置全局以管理员身份运行cmd】
  18. 000 高数预备知识
  19. ValueError(“Incompatible indexer with Series“)
  20. 轻轨列车 light rail train

热门文章

  1. VMware Linux 下安装 Oracle 11gR2 RAC
  2. [数学模型]疯狂的UNO
  3. [Easyx\C++]一个简单的QQ聊天机器人的实现
  4. 工作组计算机用户名和密码,访问局域网工作组需要用户名和密码怎么办
  5. 自己拍的视频怎么剪辑配音乐 剪辑视频音乐和视频对不上怎么办
  6. python生成马保国敲架子鼓动图二维码(彩色)
  7. 闲谈 | 敏捷宣言说了什么
  8. 小猫爪:S32K3学习笔记19-S32K3之如何集成SPD进自己的工程
  9. 微信小程序-组件化开发(上)
  10. 基于java软式装修设计网站mp4计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署