求到n個點距離之和最小的位置

來源:互聯網
上載者:User

主  題:   一道數學問題:求到n個點距離之和最小的位置。 mathe來看看;)
作  者:   rickone (RickOne)
等  級:   
信 譽 值:   100
所屬論壇:   專題開發 資料結構與演算法
問題點數:   50
回複次數:   21
發表時間:   2005-2-24 19:26:57
  
  

程式輸入n個點的座標形式(xi,yi)[i=1 to n]
輸出一個點的位置(x,y)
使得S=∑Sqrt((x-xi)^2+(y-yi)^2)[i=1 to n]最小,即這個點到n個已知點的距離之和最小。

Top
 回複人:mathe() ( 一星(中級)) 信譽:110  2005-2-25 10:44:27  得分:0
?  

可以用迭代法
任取(x,y)=(u,v)
比如可以取u=(x1+...+xn)/n,v=(y1+...+yn)/n
然後在每一步,計算:
A=Sum{(v-yi)^2/((u-xi)^2+(v-yi)^2)^(3/2)}
B=Sum{(u-xi)(v-yi)/((u-xi)^2+(v-yi)^2)^(3/2)}
C=Sum{(u-xi)^2/((u-xi)^2+(v-yi)^2)^(3/2)}
du=(C*u-B*v)/(A*C-B*B) dv=(A*v-B*u)/(A*C-B*B)
Let u-=du, v-=dv
一直計算下去,知道du, dv充分小。
Top
Top
 回複人:mathe() ( 一星(中級)) 信譽:110  2005-2-25 13:22:25  得分:0
?  

迭代公式寫錯了
應該是B=-Sum{(u-xi)(v-yi)/((u-xi)^2+(v-yi)^2)^(3/2)}
du=(C*fu-B*fv)/(A*C-B*B) dv=(A*fv-B*fu)/(A*C-B*B)
其中fu=Sum{(u-xi)/sqrt((u-xi)^2+(v-yi)^2)}
fv=Sum{(v-xi)/sqrt((u-xi)^2+(v-yi)^2)}
其實就是想用牛頓迭代法求fu=0,fv=0
實際計算中,不知道為什麼,很快就會出現S=Sum{sqrt((u-xi)^2+(v-yi)^2)}變大
當出現這種情況,我們可以讓迭代中止,這時誤差應該很小了,
因為函數S是凸函數
Top
 回複人:mathe() ( 一星(中級)) 信譽:110  2005-2-25 13:30:35  得分:0
?  

剛才發現一個問題,我們還需要檢驗一些特殊的解:
x=xi,y=yi;
我遇上一組解,迭代結果不收斂
Source points:
0.840188,0.394383
0.783099,0.798440
0.911647,0.197551
0.335223,0.768230
0.277775,0.553970
0.477397,0.628871
0.364784,0.513401
0.952230,0.916195
0.635712,0.717297
0.141603,0.606969
結果發現,最佳解幾乎正好在(0.477397,0.628871)處,就是第四組數
Top
 回複人:happy__888([顧問團]尋開心) ( 兩星(中級)) 信譽:124  2005-2-25 14:14:32  得分:0
?  

用這種辦法需要理論上證明,距離和的運算式上的凸點分布和x,y分量之間的關係
極值點全域唯一還是不唯一是影響到迭代結果的
有可能會陷入局部最優點而達不到全域最優點的

Top
 回複人:mathe() ( 一星(中級)) 信譽:110  2005-2-25 15:34:19  得分:0
?  

函數S是凸函數!!! 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.