回覆列表
  • 1 # 使用者9487330711746

    先考慮只求一個點,到已知n個點的距離和最短的問題。將已知的n個點想象為固定的正電荷質點,待求點想象為一個帶負電荷的質點。在平面上隨機放置該負電荷後,在電場力的作用下,負電荷會朝著正電荷的方向運動,最後會停止,而停止的位置就是所求座標。考慮要求出這樣的兩個點時,就有兩個負電荷如此運動,且之間的相互排斥力會保證這樣兩個負電荷不會處在相同的位置,最終停止運動的座標即為所求。根據點電荷的受力模型可以得出待求負電荷的受力大小及方向,然後進行模擬即可。需要注意的是,最後求出的點是該位置所受到的合力為零(計算機處理中浮點數設定一個較小的數為停止條件,如1e-30),但不一定是真實所求。因為所求的負電荷間的排斥力會參與其中,對其產生影響。因此,比較好的實現方式是隨機放置一個負電荷後,求出該座標,再重複這個過程,直到第二次的解與第一次的解不一樣為止。或者將負電荷電量給小一點,這樣二者之間的排斥力會比較弱,僅用來保證求出的是不同點。程式實現方面,可以根據合力方向用擬牛頓法往梯度方向下降,也可以沿共軛方向下降,都是連續最佳化中比較成熟的技術。附上一個可能有用的連結地址:Recents Papers, William W. Hager裡面有相關連續最佳化的程式實現,將該問題建模後直接呼叫求解,應該可以滿足該問題的需要。希望有所幫助,歡迎討論。

  • 中秋節和大豐收的關聯?
  • 歌曲颳大風的原唱河詞曲作者是誰的歌詞歌譜?