定积分数值计算(C++实现)
实验目的
- 掌握C++基本控制结构
- 掌握C++函数的定义与使用
实验原理
函数f(x)f(x)f(x)在区间[a,b][a,b][a,b]的定积分为曲线f(x)f(x)f(x)、xxx轴、直线x=ax=ax=a和直线x=bx=bx=b围成的面积,可以近似的将这块面积沿xxx轴等分为NNN个小矩形,并计算他们的面积之和而得到。
矩形宽度为(b−a)/N(b-a)/N(b−a)/N,矩形高度为f((xi+xi−1)/2)f((x_i+x_{i-1})/2)f((xi+xi−1)/2)。
使用解析解∫1/√(1−x2)dx=arcsinx∫ {1/√(1-x^2 ) dx=arcsinx }∫1/√(1−x2)dx=arcsinx对数值计算结果进行验证。
实验内容
题目:编写一个程序计算函数f(x)=1/√(1−x2)f(x)=1/√(1-x^2 )f(x)=1/√(1−x2)在定义域[0,1)[0,1)[0,1)内任意指定区间的定积分近似值。
要求:
- 计算区间和区间等分数目从命令行分别读取;
- 程序具有健壮性,对计算区间超出定义域等异常情况给出错误提示并提醒用户重新输入;
- 测试尽可能多种异常情况;
- 测试3组区间数据,每组区间下给出5种不同等分数目。
提高(选做):进一步考虑曲线f(x)f(x)f(x)在各处变化率(即切线斜率)不同,采用区间等分方法误差较大,可以考虑非均匀区间划分方法。
实验结果(含源码)
这里我没有做提高题,原题代码如下
#include<iostream> //实验一:定积分数值计算 2019/03/28
#include<cmath>
using namespace std;/* 函数Fx=1/√1-x^2 */
double F(double x){return 1/sqrt(1-x*x);
}/* 函数defIntegral,输入区间[a,b]以及区间等分数目n,计算f(x)=1/√1-x^2在[a,b]内的定积分近似值 */
void defIntegral(double a, double b, int n){double x=a;double dx = (b-a)/n; //沿x轴将面积分为n个小矩形,每个矩形宽为(b-a)/ndouble s,S=0; //s表示每个小矩形的面积,S表示总面积if(a<0||a>=1)cout<<"error left border"<<endl; //当a的值不在定义域内时,提示区间左值错误else if(b>=1||b<=0)cout<<"error right border"<<endl; //当b的值不在定义域内时,提示区间右值错误else{for(int i=1;i<=n;i++){s=F((x+x+dx)/2)*dx;S+=s; // 将每个小矩形的面积叠加x+=dx;}cout<<S<<endl;}
}int main(){ //用3组区间5种精度检验函数结果准确性,这里仅给出一组cout << "输入区间为[0,0.999]" << endl;defIntegral(0, 0.999, 10);defIntegral(0, 0.999, 50);defIntegral(0, 0.999, 100);defIntegral(0, 0.999, 500);defIntegral(0, 0.999, 1000);return 0;
}
这里用了三组测试数据,分别是[0,0.999][0,0.999][0,0.999]、[0.1,0.3][0.1,0.3][0.1,0.3]、[0.5,0.8][0.5,0.8][0.5,0.8]
五种区间精度分别为101010、505050、100100100、500500500、100010001000.
用arcsinarcsinarcsin计算器分别检验计算结果:
[0,0.9][0,0.9][0,0.9]上的积分为: 1.526071241.526071241.52607124;
[0.1,0.3][0.1,0.3][0.1,0.3] 上的积分为:0.204525230.204525230.20452523;
[0.5,0.8][0.5,0.8][0.5,0.8] 上的积分为:0.403696440.403696440.40369644.
可见将区间分得越细,计算结果越精确
定积分数值计算(C++实现)相关推荐
- matlab 把区间等分分,MATLAB数学实验报告 定积分的近似计算
MATLAB数学实验报告 实验日期:2015年11月20日 实验名称定积分的近似计算 姓名:学号:班级: 问题背景描述: 利用牛顿-莱布尼兹公式虽然可以精确地计算定积分的值,但它仅适用于被积函数的原函 ...
- python的科学计算库有哪些_《用Python进行科学计算》——SciPy数值计算库
SciPy函数库在NumPy库的基础上增加了众多的数学.科学以及工程计算中常用的库函数.例如线性代数.常微分方程数值求解.信号处理.图像处理.稀疏矩阵等. 最小二乘拟合 假设有一组实验数据(x[i], ...
- 高等数学:第五章 定积分(2) 定积分的性质、中值定理
§5.2 定积分的性质.中值定理 规定: 1.时, 2.时, 这两条规定的意义较直观. 当时,曲边梯形退缩成一段线, 故其面积应该为零: 当时,区间所对应的分点成为 相应的小区间的长度 . 此时,相 ...
- 高等数学:第五章 定积分(1)概念与性质 中值定理 微积分基本公式
§5.1 定积分的概念 一.从阿基米德的穷竭法谈起 [引例]从曲线与直线,, 所围图形的面积. 如图:在区间 上插入 个等分点 ,得曲线上点 ,过这些点分别向轴,轴引垂线,得到阶梯形.它们的面积 ...
- 数值计算与MATLAB微积分
目录 前言 数值微分 导数的差分公式 偏微分的差分公式 数值积分 微分运算 积分运算 符号工具箱 总结 前言 本文主要介绍了数值微分.数值积分的方法,以及MATLAB利用数值微积分方法进行微积分运算的 ...
- 定积分的计算与辛普森积分及龙贝格积分
定积分的计算与辛普森积分及龙贝格积分 定积分的计算 辛普森积分公式与自适应辛普森积分 龙贝格积分(Romberg积分) 面积或者体积的计算 hdu1724 [NEERC 2014 D题 Damage ...
- matlab近似计算求积分,matlab 实验二 定积分的近似计算
实验二定积分的近似计算 利用牛顿-莱布尼兹公式虽然可以精确地计算定积分的值,但它仅适用于被积函数的原函数能用初等函数表达出来的情形.如果这点办不到或者不容易办到,这就有必要考虑近似计算的方法.在定积分 ...
- [人工智能-数学基础-1]:深度学习中的数学地图:计算机、数学、数值计算、数值分析、数值计算、微分、积分、概率、统计.....
作者主页(文火冰糖的硅基工坊):https://blog.csdn.net/HiWangWenBing 本文网址:https://blog.csdn.net/HiWangWenBing/article ...
- 用梯形法求定积分的值
一.梯形法求解定积分的过程 1.求定积分值存在的问题 计算定积分是数值计算领域内的一个重要内容.对于能够得到原函数的被积函数,如: , 其定积分可以直接计算. 但对于不易得到原函数的被积函数,可以考虑 ...
- MATLAB是一个强大的数值计算软件,常用于数值分析的实现
数值分析是数学中研究数值计算方法和计算误差的一个分支.它是将数学模型用数值方法求解的学科,通常涉及计算数学.计算机科学和工程学科等.MATLAB是一个强大的数值计算软件,常用于数值分析的实现. 以下是 ...
最新文章
- 如何只训练网络中的全连接层
- android蓝牙查看电池容量_双麦降噪+高保真音效 QCY Air Bean真无线智能蓝牙耳机评测...
- 【数据结构与算法】之深入解析“H指数”的求解思路与算法示例
- 利用TF-IDF提取新闻文章摘要
- docker 删除包含关键字的镜像_30分钟带你轻松掌握Docker原理
- 原版98启动盘镜像.img_装机技巧系列(二):系统安装之Windows 10启动盘制作
- 网页打不开微信连接到服务器失败是怎么回事,微信打不开网页怎么回事?
- 华中农业大学第五届程序设计大赛 (7/12)
- java 多语言_JAVA实现多语言
- 工业摄像头传感器尺寸与像元尺寸的关系
- 创建企业邮箱后如何登录邮箱?企业邮箱登陆入口在哪里?
- Astalavista被蹂躏过程 转载自baoz net
- 踩坑!穿山甲广告Android SDK接入
- 重点工作事项督办督查跟踪管理方案
- 《失业七个月,面试六十家公司》的深圳体验
- pta c语言作业,C语言PTA平台习题与答案
- WPS word文档插入图片显示不全
- 观影感受 之 《都挺好》
- 微信公众号自定义菜单如何添加emoji表情图标?
- Mac:Permission denied XXX