c_cpp 本本法的基本思想是在积分区间上随机均匀的产生点,即在[a,b]上随机均匀的取点,求出由这些点产生的函数值的算术平均值,再乘以区间宽度,即可解出定积分得近似解。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 本本法的基本思想是在积分区间上随机均匀的产生点,即在[a,b]上随机均匀的取点,求出由这些点产生的函数值的算术平均值,再乘以区间宽度,即可解出定积分得近似解。相关的知识,希望对你有一定的参考价值。
//随机化算法 用随机投点法计算定积分
#include "stdafx.h"
#include "RandomNumber.h"
#include <iostream>
using namespace std;
double Darts(int n,double a,double b);
double f(double x);
int main()
{
int n1 = 100,n2 = 1000,n3 = 1000,n4 = 10000,n5 = 10000000;
double a = 2.0,b = 3.0;
cout<<"n1="<<n1<<",r1="<<Darts(n1,a,b)<<endl;
cout<<"n2="<<n2<<",r2="<<Darts(n2,a,b)<<endl;
cout<<"n3="<<n3<<",r3="<<Darts(n3,a,b)<<endl;
cout<<"n4="<<n4<<",r4="<<Darts(n4,a,b)<<endl;
cout<<"n5="<<n5<<",r5="<<Darts(n5,a,b)<<endl;
return 0;
}
/*
* 基本思想是在矩形区域内随机均匀投点,求出由这些点
* 产生的函数值的算术平均值,再乘以区间宽度,即可得
* 出定积分的近似解
*/
double Darts(int n,double a,double b)
{
static RandomNumber dart;
double sum = 0.0;
for(int i=0; i<n; i++)
{
double x = (b-a)*dart.fRandom() + a;//产生[a,b)之间的随机数
sum = sum + f(x);
}
return (b-a)*sum/n;
}
double f(double x)
{
return x*x;
}
以上是关于c_cpp 本本法的基本思想是在积分区间上随机均匀的产生点,即在[a,b]上随机均匀的取点,求出由这些点产生的函数值的算术平均值,再乘以区间宽度,即可解出定积分得近似解。的主要内容,如果未能解决你的问题,请参考以下文章
episode53:桶排序
随机梯度下降法的数学基础
估计python中均匀随机变量之和的概率密度
c_cpp 【随机化算法】计算定积分【7.2.2】
c_cpp 线性反馈移位寄存器基于均匀随机数发生器......它产生2 ** 32 -1个随机数
均匀分布的随机数