[文集] [专题] [检索] [独立评论] [海阔天空] [矛盾江湖] [全版论坛]

独立评论

作者: 脕玫赂脮   禄脴脫娄脝陆脮媒拢潞录脝脣茫露镁脦卢露脿脙忙脤氓碌脛脙忙禄媒潞脥脰脺鲁陇 2023-04-10 04:30:48  [点击:1068]
刚刚写了一个小程序,计算2维外凸多面体的外围周长和面积。

下面的图线是所算出的周围长度和内部面积随着beta 参数的变化。

这里给出不同beta参数下所算出的周长和面积,只是为了显示所算的精度,实际计算中,只需要计算两次就可以,既可以给出目标值,还可以给出误差。

蒙特卡洛算法一般也叫Randmization method.
蒙特卡洛算法的每一次选择样本点都要验算所有的不等式限制条件,Complexity 是m*n,

假设所选的长方形面积是A,所要计算的多面体的面积是B, 如果所要求的精度是p,所要求的样本数至少是N > A/(B*p). 通常A/B至少上千。于是,达到10位数的精度,总的Complexity 大致是N=10^13 *m*n

我这里给出的算法应该是1000*m*n. 1000 是对圆周积分时对2×pi 角度细分的数目。

对于任何由一系列连续的非线性函数所给出的外凸区域,都可以用这种方法来求出表面面积和体积。那将是另外的一个课题。

另外,蒙特卡洛方法在很多情况下并不适用。比如对下面的问题:

x+y <= 0.00001
-x-y <= 0.00001
x-y <= 10^8
-x+y <= 10^8

这是一个细长方体。你要选择的长方形A的面积至少要10^17, 而B~10^3,即便是N=10^14 计算精度也只能是0.1.




下面的图形是以(1,0)为选定的极坐标点画出的曲线。

锟斤拷锟洁辑时锟斤拷: 2023-04-10 17:18:34

加跟贴

笔名:     新网友请先注册笔名 密码:
主题: 进文集
内容: