我正在寻找一种算法,希望在那里存在,但也许我没有找到合适的术语来搜索…
我有一种三维空间的“弹性带”,它固定在起点和终点。对于空间中的每一点,我都可以计算作用在带上的“外力”。“内力”的作用类似于弹簧(切向力)。我在寻找内(收缩)力和外(分散)力之间的平衡条件。问题是外力不是封闭的(但它们是稳定的)。
目前,我已经解决了这个问题,我用一些等距点对带的初始猜测进行采样,计算每个采样点中的力,沿着产生的力的方向移动该点,并重复直到不再发生实质性的移动。
但是,我想知道是否有更有效的解决方案?搜索关于这个主题的出版物的好词是什么?
谢谢你的提示!
最佳答案
关于起点的想法:
你可能想考虑一个多尺度算法,沿着multigrid的路线。粗略的想法是,“粗粒度”的弹性带可以很快地被放松,然后被用作更精确的近似解。当然,还有更多的细节。
如果弹性带中连杆之间的弹簧在位移中具有线性力,则几乎可以将问题设置为机械平衡的矩阵方程(零力):(Coupling matrix) * (Displacement vector) = 0
。位移向量中的元素i表示节点i和i+1之间的位移如果在弹性带的起点和终点上添加约束,则会变得更加复杂。考虑在受约束限制的向量搜索空间上使用conjugate gradient method。另一种可能性是研究linear programming文献。
如果弹簧是非线性的,像共轭梯度这样的方法仍然可以应用,但也可能不起作用。
关于algorithm - 弹性带快速松弛算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7121659/