如何求曲线上两点间的最大距离?
我用循环语句计算每两个点之间的距离,然后取出最大值,可是由于数据量大,循环起来很慢,有没有什么方法,能简便快速的求出呢?谢谢指导。[ 本帖最后由 lxq 于 2006-10-12 11:32 编辑 ] 不用循环就可以了
[ 本帖最后由 ChaChing 于 2010-8-15 21:23 编辑 ] 不用循环应该怎么办呢?麻烦eight说的具体点!谢谢 贴一下原始数据吧,我懒得自己弄
[ 本帖最后由 ChaChing 于 2010-8-15 21:24 编辑 ] 你应该把你的问题说清楚啊。 设两曲线的方程分别为:
y1=f(x1);
y2=f(x2);
其中x1∈,x2∈;
则两曲线之间最大距离y可表示为:
y=sqrt((x(1)-x(2))^2+((y(1)-x(y))^2)
则求y最大值问题有以上式可转化为
min-sqrt((x(1)-x(2))^2+((y(1)-x(y))^2)
a≤x(1)≤b;
c≤x(2)≤d;
的优化问题;
可采用fminbnd,fmincon等函数求解 原始数据是:
x=
y=[-8.8471 -8.7307 -9.7784 -8.6143 -11.175 -9.8948 -10.477 -10.477 -9.5456 -8.8471 -9.7784 -8.0322 -9.3127 -9.7784 -10.244 -10.244 -9.0799 -9.7784 -9.3127 -8.4979 -9.3127 -9.662 -9.4292 -8.8471 -9.0799 -8.4979 -8.8471 -6.7517 -8.6143 -7.9158 -8.1487 -8.1487 -7.2174 -7.683 -9.0799 -8.1487 -8.0322 -7.9158 -8.3815 -7.9158 -9.3127 -8.3815 -8.4979 -8.8471 -9.7784 -10.011 -10.011 -10.244 -10.244 -10.477 -10.826 -9.3127 -9.3127 -9.0799 -9.7784 -9.7784 -8.0322 -8.8471 -9.7784 -10.244 -9.7784 -10.477 -10.477 -9.3127 -9.3127 -9.8948 -10.244 -9.3127 -8.3815 -8.7307 -7.683 -7.4502 -8.3815 -8.8471 -10.011 -9.0799 -9.5456 -8.9635 -8.8471 -8.3815 -9.3127 -9.0799 -10.244 -10.71 -11.175 -9.3127 -9.7784 -9.5456 -9.8948 -10.71 -8.8471 -8.3815 -8.6143 -9.3127 -8.6143 -8.2651 -8.3815 -8.3815 -9.4292 -8.8471 -8.1487 -8.3815 -8.3815 -7.4502 -7.683 -7.4502 -7.9158 -9.5456 -9.7784 -10.71 -10.128 -10.477 -9.3127 -8.6143 -9.7784 -8.8471 -9.7784 -8.1487 -10.71 -12.223 -11.641 -12.223 -11.175 -11.292 -10.71 -10.244 -10.244 -9.7784 -9.3127 -9.8948 -8.3815 -9.0799 -9.3127 -7.9158 -8.6143 -7.4502 -7.4502 -8.0322 -9.7784 -8.1487 -8.6143 -9.5456 -9.5456 -11.175 -10.71 -11.874 -10.244 -10.244 -11.175 -11.175 -11.175 -10.71 -10.477 -12.107 -11.292 -10.244 -10.36 -9.3127 -7.9158 -8.8471 -8.6143 -9.8948 -11.175 -10.71 -9.7784 -8.4979 -9.0799 -9.4292 -9.3127 -9.0799 -8.1487 -7.9158 -8.3815 -8.3815 -9.3127 -8.2651 -8.1487 -8.7307 -10.244 -10.244 -10.011 -10.244 -9.5456 -10.71 -10.011 -9.7784 -9.5456 -10.244 -8.4979 -8.6143 -8.6143 -8.8471 -9.662 -8.8471 -10.011 -10.593 -10.244 -9.3127 -10.71 -8.8471 -10.011 -9.7784 -9.5456 -9.5456 -9.5456 -9.8948 -10.477 -10.71 -10.244 -10.011 -10.244 -10.36 -10.244 -10.71 -9.3127 -7.683 -8.6143 -10.011 -10.477 -11.175 -10.477 -10.011 -8.7307 -8.3815 -9.3127 -9.3127 -9.3127 -9.3127 -8.3815 -8.0322 -8.8471 -8.7307 -10.011 -11.641 -12.107 -11.175 -10.942 -10.244 -10.71 -11.175 -9.5456 -9.3127 -10.36 -9.5456 -8.3815 -8.3815 -9.0799 -9.3127 -8.6143 -9.0799
]
这是我根据数据拟和出的曲线的方程:
121.0907 x^6 - 289.6766 x^5 + 211.7924 x^4 - 17.0045 x^3 - 36.1942 x^2 + 10.4089 x - 9.7191
我想在这条曲线上求出两点间最大的距离。 我想在这条曲线上求出两点间最大的距离--什么意思
[ 本帖最后由 ChaChing 于 2010-8-15 21:12 编辑 ] 呵呵,是任意两点还是对x轴而言相邻的两点。 是曲线中任意两点之间的最大距离。文献中叫做曲线的直径。 已经解决了,感觉应当是准确答案...-_-|||
===================================
如何求曲线上两点间的最大距离?
===================================
[ 本帖最后由 bainhome 于 2006-10-14 14:57 编辑 ] 能不能贴出来?
去仿真那还要注册,口黑 非常感谢各位的帮忙,已经基本搞定!谢谢! 原帖由 yqchenlolo 于 2006-10-13 15:53 发表
能不能贴出来?
去仿真那还要注册,口黑
那是个很好的论坛,注册一下,进去逛逛就知道了,里面有好多好帖
注册一下又花不了多少时间 还是贴一下,以后可以参考,呵呵。
function DistanceForTwoPoint
clc; x=[.004:.004:1]';
f=121.0907*x.^6-289.6766*x.^5+211.7924*x.^4-17.0045*x.^3-36.1942*x.^2+10.4089*x-9.7191;
X=; A=max(pdist(X));
P=nchoosek(1:length(x),2);
Ind=find(pdist(X)==A);
P1=P(Ind,:);
disp(['两点之间最大距离为Dist=',num2str(A)])
disp(['这两个点分别是第',num2str(P1(1)),'个点和第',num2str(P1(2)),'个点'])
=================================================
运行程序得到如下结果:
两点之间最大距离为Dist=1.1468
这两个点分别是第36个点和第228个点
页:
[1]
2