C语言实现定积分求解方法
求定积分的方法有很多种,下面是我总结的几种比较常用的方法。
#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语言实现定积分求解方法相关推荐
- c语言怎样写积分程序,C语言实现定积分求解方法
求定积分的方法有很多种,下面是我总结的几种比较常用的方法. #include #include #include #include #define N3 double fun(double x) { ...
- 用C语言实现定积分求解的三种方法,梯形公式,辛普森公式,自适应辛普森公式
1.梯形公式: 梯形公式(trapezoidal rule)是一种求定积分的方法.它假定函数在区间上是一条直线,因此可以通过计算梯形的面积来估计函数的定积分 #include<stdio.h&g ...
- 定积分求解方法——换元积分法
换元积分法 定积分换元积分法 例题 定积分换元积分法 例题
- 定积分求解方法——分步积分法
定积分分步积分法 分步积分法 例题 附[沃里斯公式] 分步积分法 例题 附[沃里斯公式]
- 用C语言编码定积分,C语言__用六种方法求定积分C语言__用六种方法求定积分.doc...
C语言__用六种方法求定积分C语言__用六种方法求定积分 描述问题 利用①左矩形公式,②中矩形公式,③右矩形公式 ,④梯形公式,⑤simpson公式,⑥Gauss积分公式求解定积分. 分析问题 2.1 ...
- 《C语言程序设计:问题与求解方法》——3.8节不同类型数据之间的类型转换
本节书摘来自华章社区<C语言程序设计:问题与求解方法>一书中的第3章,第3.8节不同类型数据之间的类型转换,作者:何 勤,更多章节内容可以访问云栖社区"华章社区"公众号 ...
- 《C语言程序设计:问题与求解方法》——3.9节常见编程错误
本节书摘来自华章社区<C语言程序设计:问题与求解方法>一书中的第3章,第3.9节常见编程错误,作者:何 勤,更多章节内容可以访问云栖社区"华章社区"公众号查看 3.9 ...
- 《C语言程序设计:问题与求解方法》——1.4节本章习题
本节书摘来自华章社区<C语言程序设计:问题与求解方法>一书中的第1章,第1.4节本章习题,作者:何 勤,更多章节内容可以访问云栖社区"华章社区"公众号查看 本章习题 一 ...
- 《C语言程序设计:问题与求解方法》——0.5节本章习题
本节书摘来自华章社区<C语言程序设计:问题与求解方法>一书中的第0章,第0.5节本章习题,作者:何 勤,更多章节内容可以访问云栖社区"华章社区"公众号查看 本章习题 1 ...
最新文章
- 东莞.NET技术线下沙龙活动资料分享
- 细说新一代HTML5/JavaScript的UI控件wijmo5 的新架构
- JS面向对象的实现和原理
- vue3 element-ui el-date-picker选择日期后,悬停至日期icon时切换为清空icon
- c++fabs函数_C语言中常用的标准库函数有哪些?
- Linux命令速查手册
- python单词统计、给定一个段落()_自己动手Python写一个词频统计小项目
- 水水的证件-身份证、证件加水印小工具
- 模块一 day03 Python基础
- 西门子实数转整数_怎样将实数转换成整数
- charles安装教程--以及针对安装证书后https<unknown>爬坑
- C语言第六章函数实验报告,第六章实验报告
- 简单的机械臂设计(Splay树)
- 左岸:如何修炼成某一领域的高手
- CVE-2018-6794一把梭
- SimpleDateFormat的使用:SimpleDateFormat对日期Date类的格式化和解析
- 【Windows下设置全局以管理员身份运行cmd】
- 000 高数预备知识
- ValueError(“Incompatible indexer with Series“)
- 轻轨列车 light rail train
热门文章
- VMware Linux 下安装 Oracle 11gR2 RAC
- [数学模型]疯狂的UNO
- [Easyx\C++]一个简单的QQ聊天机器人的实现
- 工作组计算机用户名和密码,访问局域网工作组需要用户名和密码怎么办
- 自己拍的视频怎么剪辑配音乐 剪辑视频音乐和视频对不上怎么办
- python生成马保国敲架子鼓动图二维码(彩色)
- 闲谈 | 敏捷宣言说了什么
- 小猫爪:S32K3学习笔记19-S32K3之如何集成SPD进自己的工程
- 微信小程序-组件化开发(上)
- 基于java软式装修设计网站mp4计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署