24小时热门版块排行榜    

查看: 656  |  回复: 6
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

byin

铜虫 (正式写手)

[求助] 关于最速下降法精度的问题

最速下降法么,我的理解是,从x1点出发,沿着x1点的负梯度方向(即原子受力方向)向前走,走到势能V在该方向上最近的极小值点x2,再沿着x2的负梯度方向拐弯继续走。因此,撇开效率不谈,理论上,最速下降法可以达到任意要求的精度,比如受力小于1e-4 eV/A等很小的量。

1,但是为什么我的算例中,有的例子中,受力到2e-3 eV/A就走不动了,给其任意小的位移更新dx,势能V都会增加?

2,另外有一些例子就比较离谱了,受力还很大的时候,比如10 eV/A,势能也推不动,这是为什么?

谢谢!
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Bessel

木虫 (正式写手)

【答案】应助回帖

★ ★ ★
jiaoyixiong: 金币+3, 赞!头像很拉风,讲解很专业! 2013-01-20 15:20:40
引用回帖:
3楼: Originally posted by byin at 2013-01-20 08:20:56
谢谢回复1

问题是,无论是最小值点还是极小值点,导数总要为0吧。但是数值计算中,其导数(受力)总是不能达到任意小的数。...

计算机不可能达到任意小的数,double 类型的小数部分只能精确到小数点后 10 位。 一般根据系统误差要求,设定某个值 epslion,当俩数的差的绝对值小于epslion时,可以认为这俩数相等了。
4楼2013-01-20 15:18:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 7 个回答

Bessel

木虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
jiaoyixiong: 金币+5, 赞!鼓励交流 2013-01-20 08:54:51
你要找的是全局最小值,理论上当然能找到。但是计算机来算又是另一回事,很可能系统陷入了势能面上的局域极小值的阱里,很难翻过势垒继续往能量更低的方向走。

举个形象的例子,人们下山的时候,虽然目的地是山脚(势能最小),山路起伏,下山过程中可能会走一段上坡路(势垒)。
2楼2013-01-20 01:45:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

byin

铜虫 (正式写手)

引用回帖:
2楼: Originally posted by Bessel at 2013-01-20 01:45:57
你要找的是全局最小值,理论上当然能找到。但是计算机来算又是另一回事,很可能系统陷入了势能面上的局域极小值的阱里,很难翻过势垒继续往能量更低的方向走。

举个形象的例子,人们下山的时候,虽然目的地是山脚 ...

谢谢回复1

问题是,无论是最小值点还是极小值点,导数总要为0吧。但是数值计算中,其导数(受力)总是不能达到任意小的数。
3楼2013-01-20 14:20:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

byin

铜虫 (正式写手)

引用回帖:
4楼: Originally posted by Bessel at 2013-01-20 15:18:17
计算机不可能达到任意小的数,double 类型的小数部分只能精确到小数点后 10 位。 一般根据系统误差要求,设定某个值 epslion,当俩数的差的绝对值小于epslion时,可以认为这俩数相等了。...

好的,谢谢!

但是我的第二个问题怎么解释呢?那些例子中,受力还很大,就不能再更新了。任意小的坐标更新都会使势能增大,why?
5楼2013-01-20 15:33:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见