1、先进复合材料设计与制备技术基础_计算机辅助材料设计蒙特卡洛方法 计算机辅助材料设计蒙特卡洛方法 问题:1、粒子随机移动2、粒子随机沉积3、粒子随机堆积计算机辅助材料设计蒙特卡洛方法 介绍 一种随机模拟方法 欧洲著名赌城,摩纳哥的蒙特卡罗 赌博游戏与概率的内在联系 美国曼哈顿计划。第二次世界大战期间,美国 Los Alamos实验室论证出了制造原子弹的可能性,但要制出实际可用的核武器,逐项解决大量复杂的理论和技术问题,如中子轨道和辐射轨道等等问题。描述这些过程需要相当复杂的微分、积分的耦合方程组。科学家们采用建立基础的物理模型,用随机抽样法在计算机上进行模拟的方法。这种方法与数学模拟法不同,不从
2、物理模型建立数学模型(太复杂),而是在计算机上进行试验,用随机抽样法解决问题。计算机辅助材料设计蒙特卡洛方法 基本思想统计实验计算法人为地造出一种概率模型,使它的某些参数恰好重合于所需计算的量;又可以通过实验,用统计方法求出这些参数的估值;把这些估值作为要求的量的近似值。 计算机辅助材料设计蒙特卡洛方法 应用 实验次数越多,所得到的结果才越精确。 借助计算机 优点:一是简单,省却了繁复的数学报导和演算过程,使得一般人也能够理解和掌握;二是快速。简单和快速,是蒙特卡罗方法获得应用的技术基础。 计算机辅助材料设计蒙特卡洛方法 产生随机数 1、 C2、 Fortran 77计算机辅助材料设计蒙特卡洛
3、方法 C语言 #include #define RAND_MAX 0x7FFF 32767#define random(num) (rand() % (num)#define randomize() srand(unsigned)time(NULL)int rand(void) 0-RAND_MAXint random(int num) 0-(num-1)void srand(unsigned seed) 初始化随机数发生器void randomize(void) 用随机数初始化随机数发生器 计算机辅助材料设计蒙特卡洛方法 Fortran 77CALL RANDOM(ranval) REAL
4、*4 返回 0, 1)随机数CALL SEED(seedval) INTEGER *2 改变伪随机数发生器的起始点GETTIM 选择时间为 “种子 ”值计算机辅助材料设计蒙特卡洛方法 平均分布 C库函数 rand()来产生一个随机的整数。 该随机数是平均在 0RAND_MAX之间平均分布的 RAND_MAX是一个常量,是这样定义的:#define RAND_MAX 0x7fff 它是一个 short型数据的最大值 如果要产生一个浮点型的随机数,可以将rand()/1000.0这样就得到一个 032.767之间平均分布的随机浮点数。 计算机辅助材料设计蒙特卡洛方法 平均分布 产生 -10001000之间的精度为四位小数的平均分布的随机数可以这样来实现。先产生一个 0到10000之间的随机整数。方法如下: int a = rand()%10000; 保留四位小数产生 01之间的随机小数: double b = (double)a/10000.0; 通过线性组合实现任意范围内的随机数的产生 实现 -10001000内的平均分布的随机数: double dValue = (rand()%10000)/10000.0*1000-(rand()%10000)/10000.0*1000