用matlab通过8个已知点求n个未知点坐标,使这8+n个点间距离和最短 100

缺月挂疏桐love
2012-07-06 · TA获得超过322个赞
知道答主
回答量:152
采纳率:0%
帮助的人:122万
展开全部
因为,8个点已知,要使得所有点距离和最小,另外n个点肯定在这8个点的x,y坐标范围之间,所以简单给你陈述下我的想法:
(因为你没有给出具体的数据,所以只给你陈述下算法),中心思想是用枚举法,(目前只想到这个麻烦点的方法^^,并且这个方法算出的n个点的精度只能是你在程序中设置的,此处设置精度为0.01,你可以任意修改)
step1: 首先比较出8个坐标中的x,y的范围,设xE[a,b]; yE[c,d],(E在此表示属于的意思);
step2: 然后设置距离和的一个初始值,如:sum;
step3: 假设所求点的精度为0.01,开始循环n个点的坐标,使得这n个点的坐标循环的范围为{x,y}其中xE[a:0.01:b],yE[c:0.01:d],(并且如果你不想n个点重复的话,可设置相应的限制条件),用距离公式求所有点的距离和,每循环一次,就更新一下这个距离总和sum,将最小值赋给sum;用两个loop来实现上述功能,如:先循环x值,外面嵌套y值循环的大loop即可;
step4: 达到循环条件,跳出循环,return sum,程序结束。
good luck~
wacs5
2012-07-06 · TA获得超过1.6万个赞
知道大有可为答主
回答量:3724
采纳率:82%
帮助的人:2818万
展开全部
你这题肯定有问题。有一些东西没有说清楚。
我只要找到一个未知点坐标,使得它跟这己知的8个点距离的和最短。
然后后续n-1个点与这个未知点重合。
即可。

这题难度不小
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
周永红_ZYH
2012-07-07 · TA获得超过2912个赞
知道大有可为答主
回答量:1455
采纳率:90%
帮助的人:696万
展开全部
wacs5
只要找到一个未知点坐标,使得它跟这己知的8个点距离的和最短。
然后后续n-1个点与这个未知点重合。即可。

本题的题意:求出一个点,使得它跟这己知的8个点距离的和最短。
下面是程序。

close all
clear,clc

% 8个已知点
x1 = rand(8,1);
y1 = rand(8,1);

% 8+n个点间距离和1
ff = @(x) sum(sqrt( (x(1)-x1).*(x(1)-x1) + (x(2)-y1).*(x(2)-y1) ))

x0 = [sum(x1)/8,sum(y1)/8] % 初始值
[x,fval] = fminunc(ff,x0) % n个未知点坐标 极值

plot(x1,y1,'*') % 8个已知点
hold on
plot(x(1),x(2),'ro') % n个未知点坐标 极小值点
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式