⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 integral.cpp

📁 用蒙特卡罗方法求积分的小程序
💻 CPP
字号:
// Integral.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdlib.h>

int main(int argc, char* argv[])
{
	if(argc == 1)
	{
		printf("命令提示: intergal <INTARG> <NUM>\n");
		printf("第二个参数为积分上限(必须为整数),第三个为计算的次数控制参数,大于1为计算次数,小于1为计算精度\n");
		return 0;
	}
	double ftX_Pos = 0.0,ftY_Pos = 0.0;
	double ftResult = 0.0;
	int nMeet = 0;
	if(atoi(argv[2]) >= 1)
	{
		for(int i = 0;i < atoi(argv[2]);i++)
		{
			ftX_Pos = (double)atoi(argv[1]) * ((double)rand()/32767);
			ftY_Pos = (double)atoi(argv[1]) * (double)atoi(argv[1]) * ((double)rand()/32767);
			if((double)ftY_Pos <= (double)ftX_Pos * (double)ftX_Pos)
				nMeet++;
		}
		ftResult = (double)((double)atoi(argv[1]) * (double)atoi(argv[1]) * (double)atoi(argv[1]) * nMeet/atoi(argv[2]));
	}
	else
	{
		double ftResult1 = 0.0, ftResult2 = 0.0;
		int nSum = 1;
		ftX_Pos = atoi(argv[1]) * ((double)rand()/32767);
		ftY_Pos = atoi(argv[1]) * atoi(argv[1]) * ((double)rand()/32767);
		if(ftY_Pos <= ftX_Pos * ftX_Pos)
			nMeet++;
		ftResult2 = atoi(argv[1]) * atoi(argv[1]) * atoi(argv[1]) * nMeet/nSum;
		double temp = 0;
		double t = atof(argv[2]);
		while(temp < atof(argv[2]))
		{
			ftX_Pos = atoi(argv[1]) * ((double)rand()/32767);
			ftY_Pos = atoi(argv[1]) * atoi(argv[1]) * ((double)rand()/32767);
			if(ftY_Pos <= ftX_Pos * ftX_Pos)
				nMeet++;
			nSum++;
			ftResult1 = ftResult2;
			ftResult2 = atoi(argv[1]) * atoi(argv[1]) * atoi(argv[1]) * nMeet/nSum;
			temp = ftResult2 - ftResult1;
			if(temp < 0)
				temp = - temp;
			if(temp > atof(argv[2]))
			{
				temp = - temp;
				t = - t;
			}
		}
		ftResult = ftResult2;
	}
	printf("积分结果:%f\n",ftResult);
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -