• Регистрация
lucasespero
lucasespero 0.00
н/д

Найти наибольший периметр треугольника, вершины которого принадлежат различным точкам множества

01.06.2022

Создать приложение в Matlab для решения задачи: дано множество из N точек(N>2, точки заданы своими координатами x, y, координаты точек различны).
Найти наибольший периметр треугольника, вершины которого принадлежат различным точкам множества A, и сами эти точки.

Теги

    01.06.2022

    Ответы

    • aBoomest
      aBoomest+942.89
      3.06.2022 09:49

      Перебором?

      • Centurio
        Centurio+42.00
        4.06.2022 17:22
        clear,clc
        N=randi([3,15]);
        xy=randi([-20 20],2,N);
        k=nchoosek(1:N,3);
        M=xy(:,k');
        M=reshape(M,2,3,[]);
        i=nchoosek(1:3,2);
        A=M(:,i',:);
        A=reshape(A,2,2,3,[]);
        B=diff(A,1,2);
        B=squeeze(sqrt(sum(B.^2)));
        S=sum(B);
        [p,f]=max(S);
        disp(['Наибольший периметр Р=',num2str(p)]);
        disp('Координаты вершин треугольника:');
        disp([['x = ';'y = '],num2str(M(:,:,f))])
        plot(xy(1,:),xy(2,:),'o')
        hold on
        plot(polyshape(M(1,:,f),M(2,:,f)))