内容发布更新时间 : 2024/11/15 8:19:48星期一 下面是文章的全部内容请认真阅读。
第二章 数值积分和Monte Carlo方法 第一节 数值积分 S??af?x?dx 令 h?xk?1?xk,S???k?0n?1bx0?a,f?x?dxxn?b, 则
xk?1xkf?x??fk??x?xk?fk??fk?f(xk),f'k?f'(xk)
f?x?
a xk b x
零阶近似
f?x??fk???h?
n?1S?h??fk???h??
k?0n?1?h?fk???h?k?0
一阶近似
f?x??fk??x?xk?fk?1?fk??h2 h??∵
?xk?1xk22xkx12?1k?x?xk?dx???xk?xk?1?xk??h
222∴
1??S???fk?h??fk?1?fk?h???h2
2?k?0?n?1???h?1?fk?fk?1???h2 k?02n?1??1从直观看,用?fk?fk?1?近似f?x?比只用fk或fk?1好。这方法也称
2Trapezoid方法。 这样的数值积分方法的
优点:
? 简单直观,误差可以控制
缺点:
? “平均主义”,
在f?x??0的区域,f?xk??x对S贡献很小,但消耗
同等的机时。在多自由度系统这弱点尤为特出。
问题: 直观地看,零级近似和一级近似的差别在哪? 习题: 编程序数值计算高斯积分。
第二节 Monte Carlo 方法 如何用随机方法求积分?
例如,可用‘抛石子’方法。但这方法不比简单的数值积分有效。 1.简单抽样的Monte Carlo 方法
均匀地随机地选取[a,b]中M个点?xk?,显然,
1S?M?f(x)???1/kk?1MM
?当M足够大,当然可以得到足够好的积分值。 问题:为什么误差是?1/M?
答 :不妨把这看成一个M次测量的实验,假设每次测量都是独立
的,由涨落理论,误差应为?1/M。 比较误差:
Monte Carlo方法 ?S?1/M 数值积分Trapezoid方法 ?S?1/M2对单自由度而言,数值积分方法要有效得多。
对多自由度,例如d自由度,
Monte Carlo方法 ?S?1/M !! 数值积分Trapezoid方法 ?S?1/M2/d(hd?1/M) (h?1/M)
????当d非常大,数值积分方法根本没法和Monte Carlo方法比较。 我们当然可以再改进数值积分方法的精度,但这种改进的量级没法和d的大小比拟。在多体系统的数值模拟中,d通常至少是104!
Monte Carlo方法真的是完美了吗? 当然不是。
? ‘平均主义’的弱点其实还没改进
下面我们引入所谓的重要抽样Monte Carlo方法 ? 当引入重要抽样方法后,每次抽样的样品可能不独立
如何取得独立的抽样,是Monte Carlo方法的重点所在!