VS2017/c语言-求积分算法
用c语言计算积分
一、积分计算原理
先把积分区域划分为n个曲边梯形,每个求值点为曲边梯形的两个底边中点,求得每个曲边梯形的面积即为积分值
用近似法求得积分:当n为无穷大时,可将该曲边梯形近似看成矩形,求出求值点的值,将求值点处函数值乘区域长度,得到近似矩形的面积(底乘高),再将所有矩形面积求和,得到近似积分值
当满足某一精度要求时,n可为有限个。
二、算法分析
为了程序的可读性,尽量使用模块化函数来编写。
求得积分值需要以下步骤:
1.设定被积函数
2.设定积分上下限
3.设定分度
4.求出步长(即划分分度区间)
5.求出当前分度区间的求值点(每个分度区间的中点)
6.求出求值点的函数值
7.计算近似举行的面积
8.将所有近似举行的面积求和
根据以上步骤,在程序中设定了6个函数,分别是:
划分区间函数 [seek_devLenth(double a, double b)]
求求值点函数 [seek_current_x(double l,double a,double n)]
求函数值函数 [fun(double x)]
求值点值函数 [seek_height(double l, int a, int n)]
求面积函数 [seek_area(double h,double l)]
面积求和函数(即求积分函数)[integrate(double a, double b)]
最后在主函数中设定积分上下限,再调用积分函数即可
三、实现部分
取n为100,求出sin(x)在(0,Π/2)上的积分
/*编程软件:Visual Studio 2017 */
#include <iostream>
#include<math.h>using namespace std;double seek_devLenth(double a, double b); //划分区间
double seek_height(double l, int a, int n); //求值点的值
double seek_area(double h,double l); //小矩形面积
double fun(double x); //求方程值
double seek_current_x(double l,double a,double n);//求当前的横坐标
double integrate(double a, double b);// 求积分double seek_devLenth(double a,double b)
{double Lenth,Division;Division = 100; //设置分度Lenth = (b - a) / Division;return Lenth;
}double seek_current_x(double l, double a, double n)
{double Currentx;Currentx = a + n * l + l / 2; //求当前求值点坐标return Currentx;
}double fun(double x)
{double y;y = sin(x); //在此处设置被积函数return y;
}double seek_height(double l,int a,int n) //求第n个矩形的高度
{double Height;Height = fun(seek_current_x(l, a, n));return Height;
}
double seek_area(double h,double l)
{double Area;Area = h * l;return Area;
}
double integrate(double a, double b)
{double Lenth,Height,Area,AddArea=0;int i;Lenth = seek_devLenth(a,b);for (i = 0; i < 100; i++){Height = seek_height(Lenth, a, i);Area = seek_area(Height, Lenth);AddArea += Area;}return AddArea;}
int main()
{double start, end, out;start = 0;end = 3.14159 / 2;out=integrate(start, end);cout << out << endl;
/*Blablabla在CSDN发布2020-12-21*/
}
运行结果:
四、总结
该算法虽较为冗长,但简单易懂,方便修改与扩充功能。在主函数中代码长度短,调用方便,适合在复杂程序中使用。
编写仓促,望多指教!
VS2017/c语言-求积分算法相关推荐
- Romberg求积分算法
// Integral-romberg方法求积分.cpp : 定义控制台应用程序的入口点. // /* romberg方法求积分 方法也称为逐次分半加速法.它是在梯形公式,simpson公式和newt ...
- C语言实现变步长求积分算法
链接:https://blog.csdn.net/chen_dsir/article/details/71257631 博主详细介绍了复合梯形公式, 链接:https://wenku.baidu.c ...
- C++实现复化梯形公式求积分算法
1. 算法原理简介 步1 将积分区间2n等分; 步2 调用复化梯形公式: 2. 应用实例 取 n=10,利用复化梯形公式计算积分: 3. 程序代码 #include <iostream> ...
- 龙贝格求积分算法例题_数值分析实习作业之龙贝格求积
北京化工大学数值分析,龙贝尔求积, 实习题五:用龙贝格求积公式法计算习题五第一题积分,是结果尽可能准确(eps = 0.000001) 主程序: %习题五:用龙贝格求积公式计算下列积分 clear c ...
- C++实现复化辛普森公式求积分算法
1. 算法原理简介 步1 将积分区间 [a,b] 分成 n 等分,分点为 xk=a+kh(k=0,1,⋯,n),其中 h=(b-a)/n. 步2 记区间 [xk,x(k+1)] 的中点为 x(k+1/ ...
- 抛物线求积公式求积分算法matlab,基于Matlab的数值积分公式问题.doc
基于Matlab的数值积分公式问题 数值分析 学 号: 学 生 姓 名 :教 师 : 教师 2数值积分算法介绍............................................. ...
- 抛物线求积公式求积分算法matlab,数值计算实验报告---复合求积公式(梯形、抛物线、龙贝格)、导数求值(三点、四点、五点公式)...
----------------------个人作业,如果有后辈的作业习题一致,可以参考学习,一起交流,请勿直接copy ··复合抛物线公式: ··龙贝格公式: 四.实验内容 ------1 实验题目 ...
- C语言基础-基本算法
C语言基础-基本算法 在之前的两篇文章中介绍了C语言的入门程序入门程序1,入门程序2,从这篇文章我们就开始介绍C语言基础. 今天来给大家介绍算法的特性和算法的表示. 算法的基本特性 算法包含两方面的内 ...
- C语言八大排序算法,附动图和详细代码解释!
文章来源:电子工程专辑.C语言与程序设计.竹雨听闲 一.前言 如果说各种编程语言是程序员的招式,那么数据结构和算法就相当于程序员的内功. 想写出精炼.优秀的代码,不通过不断的锤炼,是很难做到的. 二. ...
最新文章
- TensorFlow基础2(张量)
- python自带的库有哪些_python常用的内置库
- delphi usb 读写_写作论语 | 崔嵘:写我所读——国外整本书阅读中读写结合的理论与实践(上)...
- 【Android 应用开发】 Android APK 反编译 混淆 反编译后重编译
- 口语学习Day8:今天聊聊微信有关的英语总结!
- JavaScript数组随机排序
- 【数据结构总结】第七章 查找
- 虚拟服务器问题,虚拟主机常见的五大问题
- git代码库迁移保留commit历史_如何把git仓库(包含所有提交历史)迁移到gitlab
- Leetcode 刷题笔记(二十四) ——动态规划篇之背包问题:01背包
- C语言经典100道编程案例
- jmeter 计数器的使用
- Excel2003创建表格首行冻结
- Python3-爬虫~selenium\phantomjs\爬取XX网页电影过程中向下滚动网页问题
- 这100 个网络基础知识,看完成半个网络高手
- php 高德地图创建标注,使用高德地图API生成带标的专属地图
- DirectX12的初始化
- 基于word2vec或doc2vec的情感分析
- C++ VS OpenGL绘制教室三维立体旋转图像
- 【编译原理】 三地址语句的具体实现
热门文章
- 人工智能强化学习汽车标定领域探讨
- 伯克利大学sawyer机器人环境配置
- 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java自来水收费管理系统7yd5p
- ATM异地跨行取钱收费大比拼
- 《深入浅出Spring》@PropertySource、@Value注解及动态刷新实现
- Windows平台OpenGL渲染视频
- 全球及中国医学新生儿筛查解决方案行业专项研究与运营前景调研报告2022版
- adblock plus规则下载(包含国内99%网站广告屏蔽规则)
- cannot import watershed from skimage.morphology
- 吹爆的一种深度拷贝方式