用MATLAB编程解决最短距离问题(很急,已知四个点A,B,C,D的具体位置A(0,0),B(0,3),C(8,1),D(10,5),求两个点H1,H2的具体位置,使AH1+BH1+H1H2+H2C+H2D为最短.

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/14 13:37:11
用MATLAB编程解决最短距离问题(很急,已知四个点A,B,C,D的具体位置A(0,0),B(0,3),C(8,1),D(10,5),求两个点H1,H2的具体位置,使AH1+BH1+H1H2+H2C+H2D为最短.

用MATLAB编程解决最短距离问题(很急,已知四个点A,B,C,D的具体位置A(0,0),B(0,3),C(8,1),D(10,5),求两个点H1,H2的具体位置,使AH1+BH1+H1H2+H2C+H2D为最短.
用MATLAB编程解决最短距离问题(很急,
已知四个点A,B,C,D的具体位置A(0,0),B(0,3),C(8,1),D(10,5),求两个点H1,H2的具体位置,使AH1+BH1+H1H2+H2C+H2D为最短.

用MATLAB编程解决最短距离问题(很急,已知四个点A,B,C,D的具体位置A(0,0),B(0,3),C(8,1),D(10,5),求两个点H1,H2的具体位置,使AH1+BH1+H1H2+H2C+H2D为最短.
这是一个简单的无约束优化问题,代码附后,求出来的点如图所示.代码中的大部分是和绘图有关的,涉及计算的部分其实很少.

function zd
A = [0, 0];
B = [0, 3];
C = [8, 1];
D = [10, 5];
x0 = [1 1 1 1];

figure(gcf)
clf
set(gcf,'DoubleBuffer','on');
plot(A(1), A(2), 'o');
hold on
plot(B(1), B(2), 'o');
plot(C(1), C(2), 'o');
plot(D(1), D(2), 'o');
text(A(1), A(2), '  A', 'Horiz', 'left')
text(B(1), B(2), '  B', 'Horiz', 'left')
text(C(1), C(2), '  C', 'Horiz', 'left')
text(D(1), D(2), 'D  ', 'Horiz', 'right')
h.H1 = plot(x0(1), x0(2), 'rp');
h.H2 = plot(x0(3), x0(4), 'rp');
h.AH1 = plot([A(1) x0(1)], [A(2) x0(2)], 'g');
h.BH1 = plot([B(1) x0(1)], [B(2) x0(2)], 'g');
h.H1H2 = plot([x0(1) x0(3)], [x0(2) x0(4)], 'g');
h.H2C = plot([C(1) x0(3)], [C(2) x0(4)], 'g');
h.H2D = plot([D(1) x0(3)], [D(2) x0(4)], 'g');
axis equal

opt = optimset('Display', 'iter');
x = fminunc(@objfun, x0, opt, A, B, C, D, h);


function f = objfun(x, A, B, C, D, h)
H1 = x(1:2);
H2 = x(3:4);
f = dist(A, H1) + dist(B, H1) + dist(H1, H2) + dist(H2, C) + dist(H2, D);

set(h.H1, 'XData', H1(1), 'YData', H1(2));
set(h.H2, 'XData', H2(1), 'YData', H2(2));
set(h.AH1, 'XData', [A(1) H1(1)], 'YData', [A(2) H1(2)]);
set(h.BH1, 'XData', [B(1) H1(1)], 'YData', [B(2) H1(2)]);
set(h.H1H2, 'XData', [H1(1) H2(1)], 'YData', [H1(2) H2(2)]);
set(h.H2C, 'XData', [C(1) H2(1)], 'YData', [C(2) H2(2)]);
set(h.H2D, 'XData', [D(1) H2(1)], 'YData', [D(2) H2(2)]);
title(['AH_1 + BH_1 + H_1H_2 + H_2C + H_2D = ' num2str(f,'%.3f')])
drawnow

function d = dist(p1, p2)
d = sqrt( sum( (p1-p2).^2 ) );

用MATLAB编程解决最短距离问题(很急,已知四个点A,B,C,D的具体位置A(0,0),B(0,3),C(8,1),D(10,5),求两个点H1,H2的具体位置,使AH1+BH1+H1H2+H2C+H2D为最短. 怎样运用matlab解决最优化问题? Matlab求点与曲线最短距离请教高手一个matlab的问题,用鼠标取得了一个点,怎么求这个点与已知曲线的最短距离? matlab求最短距离的程序 C# 分支定界法 01背包问题用C#编程通过分支定界法解决背包问题.急. 用matlab解决一道数学问题 matlab解决微分方程问题 MATLAB编程解决矩阵问题其中A、N为已知矩阵,求矩阵X求达人给出这个方程的详细MATLAB编程, 求一个可以用matlab编程解决的物理或数学问题,要求用到循环,选择等结构,程序行数不低于20行,最好可以图形表达 急求应用matlab解决以下问题用matlab验证惯性质量与引力质量的相等,求实验过程和matlab验证程序 matlab求最短距离问题有n个点,每个点之间都是相连的,求从一个点经过所有的点后再回到原点的最短距离的matlab的程序. 这道题该怎么画?最短距离问题 初二数学 最短距离马吃草问题 用matlab解决运筹学中的LP问题用matlab编程,使用单纯形法解决LP问题只需解决max:z=CX,AX≤B,X≥0的情况即可.我不要那么麻烦的,只需要解决上面那种情况就行 急求!用matlab解决此层次分析法问题,题如图所示,结果已给出,求此问题的matlab程序语言过程! 怎么用Matlab计算很多散点之间最短距离?画出这些散点最短距离的连线,众多散点X,Y坐标已在txt文件中. matlab编程问题,求大神帮忙! 求用matlab解最短路问题的程序要用Dijkstra算法找出任意两点间的最短路径.希望用MATLAB或LINGO编程求解.求程序,