用蒙特卡罗方法求积分

news/2024/10/7 20:28:07

实验任务

采用 Monte-Carlo 法计算函数 y=x0~10 之间的积分值

实验目的

熟悉 MPI_Reduce() 函数的用法

实验方法

该算法的思想是通过随机数把函数划分成小的矩形块,通过求矩形块的面积和来求积分值,我们生成 n0~10 之间的随机数,求出该随机数所对应的函数值作为矩形的高,由于随机数在 n 很大时会近似平均分布在 0~10 区间,所以矩形的宽取相同的值为 10/n ,对所有的矩形块求和即可得函数的积分值。

代码示例

/*文件名 inte.c*/ 
#define N 100000000 
#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
#include "mpi.h" 
int main(int argc, char** argv) 
{ 
int myid,numprocs; 
int i; 
double local=0.0; 
double inte,tmp=0.0,x; 
MPI_Init(&argc, &argv); 
MPI_Comm_rank(MPI_COMM_WORLD, &myid); 
MPI_Comm_size(MPI_COMM_WORLD,&numprocs); 
srand((int)time(0));//设置随机数种子 
/*各节点分别计算一部分积分值*/ 
/*以下代码在不同节点运行的结果不同*/

程序说明

以上程序通过随机数将积分区域划分为 100000000 个小的区域,各节点计算一部分小矩形的面积,最后通过 MPI_Reduce()函数对所有节点的计算结果进行归约求和得到最后的积分值,归约的过程就是各节点向主节点发送数据,由主节点接收数据并完成指定的计算操作,这一思想与云计算中Map/Reduce 思想类似,都是将任务分配到各节点计算最后由主节点汇总结果。程序通过 myid 和 numpros 参数的配合使同一段程序在不同的节点运行时完成不同部分的积分工作,这利用了 MPI 并行编程中变量分布式存储的原理,不同的节点其 myid 值是不同的。可见在 MPI 中会出现相同的代码在不同的节点执行时结果不一样的情况,这在串行程序中是不会出现的。
运行结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/28210.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Kafka源码分析(四) - Server端-请求处理框架

Kafka源码分析,侧重于请求处理框架系列文章目录 https://zhuanlan.zhihu.com/p/367683572 一. 总体结构 先给一张概览图:服务端请求处理过程涉及到两个模块:kafka.network和kafka.server。 1.1 kafka.network 该包是kafka底层模块,提供了服务端NIO通信能力基础。 有4个核心…

一次通过dump文件分析OutOfMemoryError异常代码定位过程

OutOfMemoryError是Java程序中常见的异常,通常出现在内存不足时,导致程序无法运行。借助MAT内存分析工具分析可能的内存泄漏代码问题定位。OutOfMemoryError是Java程序中常见的异常,通常出现在内存不足时,导致程序无法运行。 当出现OutOfMemoryError异常时,可能的现象是这…

前端埋点数据采集(二)mock应用系统10万条前端埋点数据

前端埋点数据采集(二)mock应用系统10万条前端埋点数据 上一期我们分享了前端埋点数据采集(一)采集系统架构设计 我们说应用系统的数据,采集到大数据平台来,然后再到数仓。但是很多实际场景是应用系统、大数据平台、数仓平台各自并没有完成系统的搭建和开发。假设现在一个…

windows下安装Jenkins以及配置分布式agent节点

安装Jenkins: 1.Jenkins稳定版本的war包路径:https://get.jenkins.io/war-stable/ 2.jdk下载:https://www.oracle.com/java/technologies/downloads/ 3.启动Jenkins:命令行运行java -jar jenkins.war 至此可以通过浏览器127.0.0.1:8080,连接上本地Jenkins配置分布式agent节…

locust压测

目录locust1.依赖2. 实例2.1 压测方式2.2 locust服务端2.3 待压测接口服务3. 参考文档 locust 1.依赖 pip install locust2. 实例 2.1 压测方式 1. 压测方式 1.1 前台自编辑方式修改文件名为locustfile.py 并在控制台使用locust启动前台服务 用户自定义压测参数并开启压测1.2 …

如何快速找出文件夹里的全部带有符号纯符号的文件

参考此文章:如何快速找出文件夹里的全部带有中文&纯中文的文件 只需要根据自己的需求,把下面相关的设置调整好即可

前端埋点数据采集(一)采集系统架构设计

前几次内容分享,我们逐步搭建了传统hadoop大数据平台、zookeeper、kafka集群等。假设现在一个场景是:今天产品经理提了1个优先级极高的需求:应用系统前端埋点数据都需要被采集到大数据平台hadoop上。“前端埋点数据的采集系列”,主要分为以下5个部分: 一、采集系统架构设计…