| 基于MATLAB的蒙特卡罗方法在可靠性设计中的应用 |
| 作者 :张仙风,吕志鹏 | | 更新时间:2008-2-15 |
|
|
| 百度推广广告 | | 发生地方都是;离开;卢萨卡;离开 发送到搜索色撒发送到发生地... | |
| 百度推广广告 | | 发生地方都是;离开;卢萨卡;离开 发送到搜索色撒发送到发生地... | |
| biaoti1 | | 还是打开发生地方都是发生大幅度是否撒 是非得失发生地方司法... | |
|
(长江大学 机械工程学院,湖北 荆州 434023)
摘要:蒙特卡罗方法可以有效地解决复杂的工程问题,而MATLAB具有强大的数值计算功能。将二者结合使用,可以得到高效的解决问题的方法。本文阐述了该方法并通过实例验证了该方法的正确性和优越性。
关键词:蒙特卡罗方法;MATLAB;可靠性设计
The application of Monte Carlo method in responsibility design based on MATLAB
Zhang Xianfeng,Lv Zhipeng
(The Mechanical Engineering college, Yangtze University, Jingzhou 434023,China)
Abstract:Monte Carlo method can effectively solve complex engineering problem, and MATLAB has powerful numerical calculation function. A efficient method of solving problem can be got by integrating these two. This paper explains this method and validates its correctness and advantage by a example.
Key words:Monte Carlo method;MATLAB;reliability design
蒙特卡罗模拟法是通过随机变量的统计试验或随机摸拟,求解数学、物理和工程技术问题近似解的数值方法,因此也称为统计试验法或随机模拟法。在可靠性设计中,蒙特卡罗方法可以确定复杂随机变量的概率分布和数字特征;通过随机模拟估算系统和零件的可靠度;模拟随机过程、寻求系统最优化参数等。它是以统计抽样理论为基础,用随机数对有关独立随机变量进行抽样实验或随机模拟,以求得随机函数的函数值、统计数字特征值(如均值、概率等)和分布,作为待解问题的数值解。可应用于随机函数服从任意分布,既可解决不确定的问题,也可以用于解决确定性的问题。其缺点在于蒙特卡罗方法是对数学模型在计算上进行大量的统计模拟试验,重复工作量大,编程运算不仅程序复杂,而且需要花费大量时间。而MATLAB是一种功能强大的科学计算软件,其中的许多算法具有自适应能力,算法先进。MATLAB仅在Statistic Toolbox工具箱中的功能函数就多达二百多个,功能已足以赶超任何其它专用统计软件。而且其语言简单,编程容易,效率极高。所以,将蒙特卡罗方法和MATLAB结合,可使二者交相辉映,相得益彰。
1 蒙特卡罗模拟基本步骤
(1)确定随机变量y及其影响因素(变量)之间的函数关系 。
(2)确定随机函数中每一个变量 的概率密度函数 和累积概率分布函数 。
(3)对随机函数中的每一变量 ,在(0,1)之间生成许多均匀分布的随机数
(1)
式中 -----变量个数, =1,2,…, ;
----模拟次数, =1,2,…, 。
对于给定的 ,可由上式解出相应的 。
(4)计算零件强度函数S的统计特征量。将每一次模拟得到的随机数值代入函数的方程中,得
因此得到随机函数的均值和标准差如式(2)和(3)所示。
(2)
(3)
以上两式指的是样本的均值和样本的标准差。
(5)做随机函数的y的直方图,并拟合其分布。
2 MATLAB实现
MATLAB自带有很多功能函数,常用的有:rand()产生均匀分布的随机数,sum( )为求和函数,std( )为求标准差函数,sort( )为排序函数,hist( )为画直方图函数。另外,已知概率值求该概率的分布点时,就要用到逆概率累积函数。常用逆累积分布函数在MATLAB中调用格式列表如下:
表1 常用逆累积分布函数表
函数名 调用格式 函数注释
norminv X=norminv(P,mu,sigma) 正态逆累积分布函数
expinv X=expinv(P,mu) 指数逆累积分布函数
weibinv X=weibinv(P,A,B) 威布尔逆累积分布函数
logninv X=logninv(P,mu,sigma) 对数正态逆累积分布函数
Chi2inv X=chi2inv(P,A,B) 卡方逆累积分布函数
Betainv X=betainv(P,A,B) β分布逆累积分布函数
所以,由以上函数利用MATLAB语言格式即可建立蒙特卡罗模拟方法的M文件。
3 应用算例
已知某一零件材料的对称循环弯曲疲劳极限S-1为正态分布S-1-N(μ,σ)=N(551.4,44.1)N/mm2,假设只考虑尺寸系数ε和表面质量系数β对零件疲劳强度的影响,并且假设它门均为正态分布,即ε~N(0.70,0.05),β~N(0.85,0.09)。试确定零件强度的数字特征和分布。
按照前述步骤,用 , 和 分别表示S-1,ε和β,零件强度用 表示,则 。可建立M文件如下:
N=input('输入模拟次数N=');
t=cputime; %计时起点
p=rand(1,3*N); %产生随机数
x1=norminv(p(1:N),551.4,44.1);
x2=norminv(p(N+1:2*N),0.70,0.05);
x3=norminv(p(2*N+1:3*N),0.85,0.09);
S=x1.*x2.*x3;
E=sum(S)/N %求均值
sigma=std(S) %求标准差
sort(S); %排序
hist(S,30) %画直方图
t=cputime-t %计时终点
在命令窗口运行M文件,得到样本均值E和样本标准差sigma如下:
输入模拟次数N=100000
E=328.1721
sigma =49.5424
图1 模拟直方图
t =0.8130
所得直方图如图1所示,由直方图可知为正态分布。
本例运用泰勒级数近似法所得均值和标准差分别为328.1和49.5。可见运用蒙特卡罗方法模拟结果与理论计算结果非常接近,验证了本方法的正确性。而且模拟时间为十万次仅用0.8130秒时间,效率极高。
本例中三个变量均假设服从正态分布,如果实际问题中某些变量服从其它分布,则只需将逆累计分布函数稍作修改即可。
4 结束语
由于高速电子计算机的发展,蒙特卡罗方法在工程领域得到了广泛的应用。然而其模拟次数多,重复计算量大,编制一般程序比较复杂,而MATLAB作为大型科学计算软件正好弥补了蒙特卡罗方法的不足,将二者结合使用可以得到高效的解决问题的方法。利用蒙特卡罗基本原理编制的MATLAB程序不仅简单实用,而且比其它标准程序节约大量时间,模拟次数达十万次,用时不到1秒。模拟结果与理论结果非常接近,验证了该方法的正确性。
参考文献
[1] 李良巧,顾唯明.机械可靠性设计与分析[M].北京:国防工业出版社,1998.
[2] 王沫然.MATLAB与科学计算[M].北京:电子工业出版社,2003.
作者简介:张仙风(1985-),女,长江大学在校学生,专业:工业设计
全科论文中心http://www.issncn.net
全科论文中心http://www.issncn.net
|
|
|
|