2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1, 2, 3, 4, 5, 6
 
 Re: Задача о четырехугольнике
Сообщение20.07.2014, 15:04 
Спасибо за картинку самопересекающегося, четырёхугольника,_Ivana, я так и думал. :-) И за другие картинки тоже, теперь понятно как расщепляется вырожденная окружность, проходящая через данные точки, как вершины убегают на бесконечность, и что соответствует вырожденной окружности решений.

-- 20.07.2014, 08:33 --

Skeptic, а можно на это посмотреть?

 
 
 
 Re: Задача о четырехугольнике
Сообщение20.07.2014, 23:47 
Skeptic в сообщении #888930 писал(а):
Vitalius, должны кривые в сообщении #888830 проходить через точку пересечения осей и перпендикуляров?


Точка пересечения осей координатной системой ли имеете ввиду? Да, в данном случае она является точкой $P$ - основание перпендикуляра, спущен из точку пересечения диагоналей (эту точку я обозначаю как $K$) искомого четырёхугольника $ABCD$ к $AB$. Кривые также как и в невырожденных случаях проходят через неё - на чертеже это видно. Через точку $K$ пересечения перпендикуляров (и диагоналей искомого четырёхугольника $ABCD$) тоже проходят эти кривые. На чертеже эта точка находится внутри четырёхугольника $PQRS$ как и должно быть согласно условия.

mishafromusa в сообщении #888937 писал(а):
Skeptic, а можно на это посмотреть?


А что смотреть-то? Если речь идёт об уравнения, которые определяют координаты точку $K$ через координаты заданных точек $P$, $Q$, $R$ и $S$, то они у нас есть, при этом в достаточно компактном виде - каждое из них это алгебраическое уравнение, содержащее 4 определителя матриц 4 ранга. Тот класс замкнутых алгебраических крив 4 порядка, которые определяют эти уравнения с 4 определителями, мне понравился.

Вот картинки с почти вырожденном случае $(x_{P},y_{P})=(0.001,0.001)$, $(x_{Q},y_{Q})=(1,0)$, $(x_{R},y_{R})=(2,2)$, $(x_{S},y_{S})=(-1,1)$ (всего на 1/1000 изменил координаты точки $P$, а всё остальное оставил как и в вырожденном случае):

Изображение

Изображение

Ясно видно как и откуда вырождение появляется при $(x_{P},y_{P})=(0,0)$). Отметим ещё одно свойство наших крив - они не самопересекаются. Только "перешейка между двумя полуостровами" может быть очень узкой - также как и "вход залива между ними".

 
 
 
 Re: Задача о четырехугольнике
Сообщение21.07.2014, 01:11 
Кстати, всё-таки есть случаи когда наши кривые не замкнуты. Это когда $PQRS$ - параллелограмм. Вот пример:

$(x_{P},y_{P})=(0,0)$, $(x_{Q},y_{Q})=(1,0)$, $(x_{R},y_{R})=(2,2)$, $(x_{S},y_{S})=(1,2)$

Изображение

Изображение

Кривые асимптотически выходят на прямые, которые параллельны странам параллелограмма.

Для прямоугольников $PQRS$ картинка не очень интересна - ибо это вырожденный случай из-за того, что вокруг них можно описать окружность. Кривые распадаются на ту же самую описанную окружность и две перпендикулярные прямые, пересекающиеся в центре прямоугольника.

Похоже когда $PQRS$ трапеция ($PQ||RS$), одна из кривых ($G_{PQRS}(x,y)=0$) не замкнута. Однако в этом случае асимптотические прямые этой кривы не параллельны странам $PQ$ и $RS$ трапеции $PQRS$.

 
 
 
 Re: Задача о четырехугольнике
Сообщение21.07.2014, 05:13 
_Ivana в сообщении #888721 писал(а):
Не знаю как другие, а мне еще непонятны вопросы существования и единственности решения, о чем ТС (пропавший) также завещал. Хотя насчет некоторых вариантов несуществования у меня есть мысли.

Я отнюдь не пропал и внимательно слежу за дискуссией.

 
 
 
 Re: Задача о четырехугольнике
Сообщение21.07.2014, 05:57 
Vitalius в сообщении #889049 писал(а):
А что смотреть-то? Если речь и
Я спрашивал Skepticа, а он решал задачу иначе, итерациями.

-- 20.07.2014, 22:59 --

Skeptic в сообщении #888868 писал(а):
Получил аналитическое выражение связи координат точек пересечения перпендикуляров и диагоналей в четырёхугольнике. Это система двух кубических уравнений.
А можно ли посмотреть на это выражение?

-- 20.07.2014, 23:05 --

Vitalius в сообщении #889061 писал(а):
Похоже когда $PQRS$ трапеция ($PQ||RS$), одна из кривых ($G_{PQRS}(x,y)=0$) не замкнута.
Как и в случае параллелограма.

-- 20.07.2014, 23:07 --

Vitalius в сообщении #889061 писал(а):
Для прямоугольников $PQRS$ картинка не очень интересна
Но ужасно вырождена.
Кстати, прямые -- это окружности бесконечного радиуса, и если смотреть на наши картинки, как картинки на проективной плоскости, то ситуация несколько упрощается.

-- 20.07.2014, 23:16 --

Vitalius в сообщении #889049 писал(а):
Вот картинки с почти вырожденном случае
Тут хорошо видно, как из 4-х окружностей, 2 из которых совпадают, получаются 2 кривые 4-й степени.

 
 
 
 Re: Задача о четырехугольнике
Сообщение21.07.2014, 09:48 
Окружности в вырожденном случае три (3). При этом 3 окружность - общая для обеих вырожденных кривых 4 порядка.

Кстати, вот полная картинка в этом вырожденном случае:

$(x_{P},y_{P})=(0,0)$; $(x_{Q},y_{Q})=(1,0)$; $(x_{R},y_{R})=(2,2)$; $(x_{S},y_{S})=(-1,1)$;

$(x_{A},y_{A})=(-\frac{16}{15},\frac{8}{15})$; $(x_{B},y_{B})=(\frac{3}{5},-\frac{3}{10})$; $(x_{C},y_{C})=(\frac{13}{5},\frac{6}{5})$; $(x_{D},y_{D})=(-\frac{2}{5},\frac{26}{5})$; $(x_{K},y_{K})=(\frac{2}{5},\frac{4}{5})$.

Изображение

Данный четырёхугольник $PQRS$ на рисунке окрашен в чёрном, искомый четырёхугольник $ABCD$ - в коричневом, его диагонали $AC$ и $BD$ - в оранжевом, а перпендикуляры, спущенные к странам $ABCD$ от точку $K$ пересечения диагоналей - в зеленном. Наши кривые как и в неполной картинке окрашены в синем и красном цвете.

 
 
 
 Re: Задача о четырехугольнике
Сообщение21.07.2014, 11:49 
А вот и полная картинка в "красивом" невырожденном случае:

$(x_{P},y_{P})=(0,0)$, $(x_{Q},y_{Q})=(1,0)$, $(x_{R},y_{R})=(2,4)$, $(x_{S},y_{S})=(-1,1)$

$x_{A}=\frac{-1943253794180608-4858134485451520 \sqrt{17}+39879733250302 \sqrt{3} \left(-43+13 \sqrt{17}\right)^{3/2}}{12631149662173952}+$

$+\frac{1403866486305424 \sqrt{3 \left(-43+13 \sqrt{17}\right)}-1941375504529 \sqrt{3} \left(-43+13 \sqrt{17}\right)^{5/2}-22068557295 \sqrt{3} \left(-43+13 \sqrt{17}\right)^{7/2}}{12631149662173952}$,

$y_{A}=\frac{13602776559264256-2429067242725760 \sqrt{17}+37645104711414 \sqrt{3} \left(-43+13 \sqrt{17}\right)^{3/2}}{6315574831086976}-$

$-\frac{570564184193 \sqrt{3} \left(-43+13 \sqrt{17}\right)^{5/2}+10853314455 \sqrt{3} \left(-43+13 \sqrt{17}\right)^{7/2}+511667054324128 \sqrt{3 \left(-43+13 \sqrt{17}\right)}}{6315574831086976}$,

$x_{B}=\frac{14-\sqrt{3 \left(-43+13 \sqrt{17}\right)}}{13}$,

$y_{B}=\frac{823377822766720-240237419610240 \sqrt{17}+7314616653346 \sqrt{3} \left(-43+13 \sqrt{17}\right)^{3/2}}{475136229895808}-$

$-\frac{39670379847 \sqrt{3} \left(-43+13 \sqrt{17}\right)^{5/2}+1252565865 \sqrt{3} \left(-43+13 \sqrt{17}\right)^{7/2}+62856231370288 \sqrt{3 \left(-43+13 \sqrt{17}\right)}}{475136229895808}$,

$x_{C}=\frac{-158556696942758400-206123706025585920 \sqrt{17}-5135141052712798 \sqrt{3} \left(-43+13 \sqrt{17}\right)^{3/2}}{484390709160126912}-$

$-\frac{163911995483399 \sqrt{3} \left(-43+13 \sqrt{17}\right)^{5/2}+369894579465 \sqrt{3} \left(-43+13 \sqrt{17}\right)^{7/2}-654742865487707024 \sqrt{3 \left(-43+13 \sqrt{17}\right)}}{484390709160126912}$,

$y_{C}=\frac{5072228735198841216+103061853012792960 \sqrt{17}+5283476223566786 \sqrt{3} \left(-43+13 \sqrt{17}\right)^{3/2}}{968781418320253824}+$

$+\frac{143333194298953 \sqrt{3} \left(-43+13 \sqrt{17}\right)^{5/2}+212706401415 \sqrt{3} \left(-43+13 \sqrt{17}\right)^{7/2}-606684443323869232 \sqrt{3 \left(-43+13 \sqrt{17}\right)}}{968781418320253824}$,

$x_{D}=\frac{726776919023547392+27066749276087040 \sqrt{17}+1924867432344618 \sqrt{3} \left(-43+13 \sqrt{17}\right)^{3/2}}{322996541361305344}+$

$+\frac{31381713698949 \sqrt{3} \left(-43+13 \sqrt{17}\right)^{5/2}-88900795845 \sqrt{3} \left(-43+13 \sqrt{17}\right)^{7/2}-215594071402242896 \sqrt{3 \left(-43+13 \sqrt{17}\right)}}{322996541361305344}$,

$y_{D}=\frac{680138827963212800-13533374638043520 \sqrt{17}-509685485109298 \sqrt{3} \left(-43+13 \sqrt{17}\right)^{3/2}}{161498270680652672}-$

$-\frac{5459125608789 \sqrt{3} \left(-43+13 \sqrt{17}\right)^{5/2}-49077910845 \sqrt{3} \left(-43+13 \sqrt{17}\right)^{7/2}-51917654582904480 \sqrt{3 \left(-43+13 \sqrt{17}\right)}}{161498270680652672}$,

$x_{K}=\frac{-1+\sqrt{3 \left(-43+13 \sqrt{17}\right)}}{13}$,

$y_{K}=\frac{-53386093246720-389126111786 \sqrt{3} \left(-43+13 \sqrt{17}\right)^{3/2}-8793924573 \sqrt{3} \left(-43+13 \sqrt{17}\right)^{5/2}}{138803842441472}-$

$-\frac{3977235 \sqrt{3} \left(-43+13 \sqrt{17}\right)^{7/2}-37349752659824 \sqrt{3 \left(-43+13 \sqrt{17}\right)}}{138803842441472}$.

Изображение

Точные решения для координаты искомых точек $A(x_{A},y_{A})$, $B(x_{B},y_{B})$, $C(x_{C},y_{C})$, $D(x_{D},y_{D})$ и $K(x_{K},y_{K})$, получил с помощью системой квадратичных форм, которую предложил. Как видите координаты точки $K(x_{K},y_{K})$ получаются такие же, как и решение системы от двух уравнений с 4 определителями, которые задают наши алгебраические кривые 4 порядка (они окрашены в красном и синем цвете на чертеже).

 
 
 
 Re: Задача о четырехугольнике
Сообщение21.07.2014, 14:58 
Нашёл два четырёхугольника, имеющих общие точки оснований перпендикуляров.
Код:
Основания перпендикуляров
            X=2273.9403  Y=-1431.1553
            X=2403.8937  Y=-1481.1734
            X=2463.5689  Y=-1502.9207 
            X=2595.3806  Y=-1464.8595 

Первый четырёхугольник

            X=2447.4969  Y=-1249.7398 
            X=2693.3102  Y=-1607.3133 
            X=2411.4709  Y=-1479.2478 
            X=2168.9776  Y=-1540.8710 

Второй четырёхугольник
            X=2273.0563  Y=-1373.7644 
            X=2437.4143  Y=-1508.6916 
            X=2593.0517  Y=-1474.3511 
            X=2293.4167  Y=-2695.5119 

 
 
 
 Re: Задача о четырехугольнике
Сообщение23.07.2014, 00:24 
mishafromusa в сообщении #888863 писал(а):
Интересно было бы сделать игрушку, в которой данные точки можно таскать мышкой и смотреть как меняются ГМТ, пары касающихся окружностей и четырёхугольники, соответствующие точкам пересечения ГМТ. Это несложно сделать в Mathematica
Попытался реализовать идею в Матлабе. Исходные точки таскаются мышкой, при этом меняются кривые ГМТ. При щелчке мышкой далее, чем 5% от любой исходной точки, выполняется поиск решения в окрестности точки щелчка (лучше целенаправленно щелкать в точки пересечения кривых) и строится это решение. Сделано весьма коряво, это мой первый опыт создания GUI, буду признателен за дельные советы и замечания.
Насколько я понял, надо создать файл с именем GUI_test.m, и скопировать в него следующий код:

(Оффтоп)

Код:
function GUI_test(arg)
    if nargin == 0;
        Initialize
    elseif arg == 0
        Action
    elseif arg == -1
        SetWindowSize
    end
end

function Initialize()
%     set(gcf,'numbertitle','off','menubar','none')

    h.ws = [0; 0; 5];
    axis([h.ws(1)-h.ws(3)/2, h.ws(1)+h.ws(3)/2, h.ws(2)-h.ws(3)/2, h.ws(2)+h.ws(3)/2])
    axis square

    uicontrol('style','text', 'units','normalized', 'position',[.86 .65 .12 .03], 'string','центр по X');
    uicontrol('style','edit', 'units','normalized', 'position',[.86 .60 .12 .05],....
       'string',h.ws(1), 'value',1, 'callback','GUI_test(-1)');
    uicontrol('style','text', 'units','normalized', 'position',[.86 .55 .12 .03], 'string','центр по Y');
    uicontrol('style','edit', 'units','normalized', 'position',[.86 .50 .12 .05], ...
       'string',h.ws(2), 'value',2, 'callback','GUI_test(-1)');
    uicontrol('style','text', 'units','normalized', 'position',[.86 .45 .12 .03], 'string','ширина окна');
    uicontrol('style','edit', 'units','normalized', 'position',[.86 .40 .12 .05], ...
       'string',h.ws(3), 'value',3, 'callback','GUI_test(-1)');

    h.P = [1,1; 1,-1; -1,-1; -1,0];
    h.P0.mark = line(0, 0, 'marker','o','erase','xor','color','r','LineWidth',2,'Visible','off');
    h.P1.mark = line(h.P(1, 1),h.P(1, 2),'marker','o','erase','xor','color','k');
    h.P2.mark = line(h.P(2, 1),h.P(2, 2),'marker','o','erase','xor','color','k');
    h.P3.mark = line(h.P(3, 1),h.P(3, 2),'marker','o','erase','xor','color','k');
    h.P4.mark = line(h.P(4, 1),h.P(4, 2),'marker','o','erase','xor','color','k');

    h.F0.line = line([h.P(:, 1); h.P(1, 1)], [h.P(:, 2); h.P(1, 2)], 'erase','xor','color','k');
    h.F1.line = line(0, 0, 'erase','xor','color','b','Visible','off');
    h.F2.line = line(0, 0, 'marker','.','erase','xor','color','g','Visible','off');
    h.F3.line = line(0, 0, 'marker','.','erase','xor','color','g','Visible','off');

    h.C1.line = line(h.P(1, 1),h.P(1, 2),'erase','xor','color','c','LineStyle',':');
    h.C2.line = line(h.P(1, 1),h.P(1, 2),'erase','xor','color','m','LineStyle',':');

    Curves(h);

    set(gcf,'name','Задача о четырёхугольнике')
    set(gcf,'tag','Задача о четырёхугольнике', ...
        'userdata',h, ...
        'windowbuttondownfcn', 'GUI_test(0); set(gcf,''windowbuttonmotionfcn'',''GUI_test(0)'')', ...
        'windowbuttonupfcn', 'set(gcf,''windowbuttonmotionfcn'','''')')
end

function Action
    h = get(gcf,'userdata');
    pt = get(gca,'currentpoint');
    x = pt(1,1:2);

    d1 = (x(1)-h.P(1,1))^2 + (x(2)-h.P(1,2))^2;
    d2 = (x(1)-h.P(2,1))^2 + (x(2)-h.P(2,2))^2;
    d3 = (x(1)-h.P(3,1))^2 + (x(2)-h.P(3,2))^2;
    d4 = (x(1)-h.P(4,1))^2 + (x(2)-h.P(4,2))^2;
    d_min = min([d1, d2, d3, d4]);

    if d_min < h.ws(3)/20
        set(h.P0.mark,'Visible','off');
        set(h.F1.line,'Visible','off');
        set(h.F2.line,'Visible','off');
        set(h.F3.line,'Visible','off');

        if d_min == d1
            h.P = [x; h.P(2,:); h.P(3,:); h.P(4,:)];
            h_P = h.P1;
        elseif d_min == d2
            h.P = [h.P(1,:); x; h.P(3,:); h.P(4,:)];
            h_P = h.P2;
        elseif d_min == d3
            h.P = [h.P(1,:); h.P(2,:); x; h.P(4,:)];
            h_P = h.P3;
        elseif d_min == d4
            h.P = [h.P(1,:); h.P(2,:); h.P(3,:); x];
            h_P = h.P4;
        else
            return
        end

        set(h_P.mark,'xdata',x(1),'ydata',x(2));
        set(h.F0.line,'xdata',[h.P(:, 1); h.P(1, 1)],'ydata',[h.P(:, 2); h.P(1, 2)]);
        Curves(h);
        set(gcf,'userdata',h);
    else
        Figures(h, x);
    end
end

function Curves(h)
    X1 = h.P(1,1); Y1 = h.P(1,2);
    X2 = h.P(2,1); Y2 = h.P(2,2);
    X3 = h.P(3,1); Y3 = h.P(3,2);
    X4 = h.P(4,1); Y4 = h.P(4,2);

    ds = h.ws(3)/50;
    xx = (h.ws(1)-h.ws(3)/2):ds:(h.ws(1)+h.ws(3)/2);
    yy = (h.ws(2)-h.ws(3)/2):ds:(h.ws(2)+h.ws(3)/2);
    [x0,y0] = meshgrid(xx, yy);

    zz = ((X2 - x0).*(X1.*(X1 - x0) + Y1.*(Y1 - y0)) - (X1 - x0).*(X2.*(X2 - x0) + Y2.*(Y2 - y0))).*((Y4 - y0).*(X3.*(X3 - x0) + Y3.*(Y3 - y0)) - (Y3 - y0).*(X4.*(X4 - x0) + Y4.*(Y4 - y0))) - ((X4 - x0).*(X3.*(X3 - x0) + Y3.*(Y3 - y0)) - (X3 - x0).*(X4.*(X4 - x0) + Y4.*(Y4 - y0))).*((Y2 - y0).*(X1.*(X1 - x0) + Y1.*(Y1 - y0)) - (Y1 - y0).*(X2.*(X2 - x0) + Y2.*(Y2 - y0))) - x0.*(((X2 - x0).*(X1.*(X1 - x0) + Y1.*(Y1 - y0)) - (X1 - x0).*(X2.*(X2 - x0) + Y2.*(Y2 - y0))).*((X3 - x0).*(Y4 - y0) - (X4 - x0).*(Y3 - y0)) - ((X4 - x0).*(X3.*(X3 - x0) + Y3.*(Y3 - y0)) - (X3 - x0).*(X4.*(X4 - x0) + Y4.*(Y4 - y0))).*((X1 - x0).*(Y2 - y0) - (X2 - x0).*(Y1 - y0))) - y0.*(((Y2 - y0).*(X1.*(X1 - x0) + Y1.*(Y1 - y0)) - (Y1 - y0).*(X2.*(X2 - x0) + Y2.*(Y2 - y0))).*((X3 - x0).*(Y4 - y0) - (X4 - x0).*(Y3 - y0)) - ((Y4 - y0).*(X3.*(X3 - x0) + Y3.*(Y3 - y0)) - (Y3 - y0).*(X4.*(X4 - x0) + Y4.*(Y4 - y0))).*((X1 - x0).*(Y2 - y0) - (X2 - x0).*(Y1 - y0)));
    C = contourc(xx, yy, zz, [0, 0]);
    C(:,1) = [];
    set(h.C1.line,'xdata',C(1,:),'ydata',C(2,:));

    zz = ((X4 - x0).*(X1.*(X1 - x0) + Y1.*(Y1 - y0)) - (X1 - x0).*(X4.*(X4 - x0) + Y4.*(Y4 - y0))).*((Y3 - y0).*(X2.*(X2 - x0) + Y2.*(Y2 - y0)) - (Y2 - y0).*(X3.*(X3 - x0) + Y3.*(Y3 - y0))) - ((X3 - x0).*(X2.*(X2 - x0) + Y2.*(Y2 - y0)) - (X2 - x0).*(X3.*(X3 - x0) + Y3.*(Y3 - y0))).*((Y4 - y0).*(X1.*(X1 - x0) + Y1.*(Y1 - y0)) - (Y1 - y0).*(X4.*(X4 - x0) + Y4.*(Y4 - y0))) - x0.*(((X4 - x0).*(X1.*(X1 - x0) + Y1.*(Y1 - y0)) - (X1 - x0).*(X4.*(X4 - x0) + Y4.*(Y4 - y0))).*((X2 - x0).*(Y3 - y0) - (X3 - x0).*(Y2 - y0)) - ((X3 - x0).*(X2.*(X2 - x0) + Y2.*(Y2 - y0)) - (X2 - x0).*(X3.*(X3 - x0) + Y3.*(Y3 - y0))).*((X1 - x0).*(Y4 - y0) - (X4 - x0).*(Y1 - y0))) - y0.*(((Y4 - y0).*(X1.*(X1 - x0) + Y1.*(Y1 - y0)) - (Y1 - y0).*(X4.*(X4 - x0) + Y4.*(Y4 - y0))).*((X2 - x0).*(Y3 - y0) - (X3 - x0).*(Y2 - y0)) - ((Y3 - y0).*(X2.*(X2 - x0) + Y2.*(Y2 - y0)) - (Y2 - y0).*(X3.*(X3 - x0) + Y3.*(Y3 - y0))).*((X1 - x0).*(Y4 - y0) - (X4 - x0).*(Y1 - y0)));
    C = contourc(xx, yy, zz, [0, 0]);
    C(:,1) = [];
    set(h.C2.line,'xdata',C(1,:),'ydata',C(2,:));
end

function Figures(h, x)
    X1 = h.P(1,1); Y1 = h.P(1,2);
    X2 = h.P(2,1); Y2 = h.P(2,2);
    X3 = h.P(3,1); Y3 = h.P(3,2);
    X4 = h.P(4,1); Y4 = h.P(4,2);

        function r = diagonal_conditions(p0)
            x0 = p0(1); y0 = p0(2);
            r = [((X2 - x0).*(X1.*(X1 - x0) + Y1.*(Y1 - y0)) - (X1 - x0).*(X2.*(X2 - x0) + Y2.*(Y2 - y0))).*((Y4 - y0).*(X3.*(X3 - x0) + Y3.*(Y3 - y0)) - (Y3 - y0).*(X4.*(X4 - x0) + Y4.*(Y4 - y0))) - ((X4 - x0).*(X3.*(X3 - x0) + Y3.*(Y3 - y0)) - (X3 - x0).*(X4.*(X4 - x0) + Y4.*(Y4 - y0))).*((Y2 - y0).*(X1.*(X1 - x0) + Y1.*(Y1 - y0)) - (Y1 - y0).*(X2.*(X2 - x0) + Y2.*(Y2 - y0))) - x0.*(((X2 - x0).*(X1.*(X1 - x0) + Y1.*(Y1 - y0)) - (X1 - x0).*(X2.*(X2 - x0) + Y2.*(Y2 - y0))).*((X3 - x0).*(Y4 - y0) - (X4 - x0).*(Y3 - y0)) - ((X4 - x0).*(X3.*(X3 - x0) + Y3.*(Y3 - y0)) - (X3 - x0).*(X4.*(X4 - x0) + Y4.*(Y4 - y0))).*((X1 - x0).*(Y2 - y0) - (X2 - x0).*(Y1 - y0))) - y0.*(((Y2 - y0).*(X1.*(X1 - x0) + Y1.*(Y1 - y0)) - (Y1 - y0).*(X2.*(X2 - x0) + Y2.*(Y2 - y0))).*((X3 - x0).*(Y4 - y0) - (X4 - x0).*(Y3 - y0)) - ((Y4 - y0).*(X3.*(X3 - x0) + Y3.*(Y3 - y0)) - (Y3 - y0).*(X4.*(X4 - x0) + Y4.*(Y4 - y0))).*((X1 - x0).*(Y2 - y0) - (X2 - x0).*(Y1 - y0)));
                ((X4 - x0).*(X1.*(X1 - x0) + Y1.*(Y1 - y0)) - (X1 - x0).*(X4.*(X4 - x0) + Y4.*(Y4 - y0))).*((Y3 - y0).*(X2.*(X2 - x0) + Y2.*(Y2 - y0)) - (Y2 - y0).*(X3.*(X3 - x0) + Y3.*(Y3 - y0))) - ((X3 - x0).*(X2.*(X2 - x0) + Y2.*(Y2 - y0)) - (X2 - x0).*(X3.*(X3 - x0) + Y3.*(Y3 - y0))).*((Y4 - y0).*(X1.*(X1 - x0) + Y1.*(Y1 - y0)) - (Y1 - y0).*(X4.*(X4 - x0) + Y4.*(Y4 - y0))) - x0.*(((X4 - x0).*(X1.*(X1 - x0) + Y1.*(Y1 - y0)) - (X1 - x0).*(X4.*(X4 - x0) + Y4.*(Y4 - y0))).*((X2 - x0).*(Y3 - y0) - (X3 - x0).*(Y2 - y0)) - ((X3 - x0).*(X2.*(X2 - x0) + Y2.*(Y2 - y0)) - (X2 - x0).*(X3.*(X3 - x0) + Y3.*(Y3 - y0))).*((X1 - x0).*(Y4 - y0) - (X4 - x0).*(Y1 - y0))) - y0.*(((Y4 - y0).*(X1.*(X1 - x0) + Y1.*(Y1 - y0)) - (Y1 - y0).*(X4.*(X4 - x0) + Y4.*(Y4 - y0))).*((X2 - x0).*(Y3 - y0) - (X3 - x0).*(Y2 - y0)) - ((Y3 - y0).*(X2.*(X2 - x0) + Y2.*(Y2 - y0)) - (Y2 - y0).*(X3.*(X3 - x0) + Y3.*(Y3 - y0))).*((X1 - x0).*(Y4 - y0) - (X4 - x0).*(Y1 - y0)))];
        end

    options = optimoptions('fsolve','Display','off');
    p0 = fsolve(@diagonal_conditions, [x(1), x(2)], options);

    a = p0(1) - h.P(:, 1);
    b = p0(2) - h.P(:, 2);
    c = a.*h.P(:, 1) + b.*h.P(:, 2);
    ac = circshift(a, -1);
    bc = circshift(b, -1);
    cc = circshift(c, -1);
    z = a.*bc - ac.*b;
    xv = (bc.*c - b.*cc)./z;
    yv = (cc.*a - c.*ac)./z;

    set(h.P0.mark,'xdata',p0(1),'ydata',p0(2),'Visible','on');
    set(h.F1.line,'xdata',[xv; xv(1)],'ydata',[yv; yv(1)],'Visible','on');
    set(h.F2.line,'xdata',[xv(1); xv(3)],'ydata',[yv(1); yv(3)],'Visible','on');
    set(h.F3.line,'xdata',[xv(2); xv(4)],'ydata',[yv(2); yv(4)],'Visible','on');
end

function SetWindowSize()
    h = get(gcf,'userdata');
    h.ws(get(gco,'value')) = str2num(get(gco,'string'));
    axis([h.ws(1)-h.ws(3)/2, h.ws(1)+h.ws(3)/2, h.ws(2)-h.ws(3)/2, h.ws(2)+h.ws(3)/2])
    axis square
    Curves(h);
    set(gcf,'userdata',h)
end

 
 
 
 Re: Задача о четырехугольнике
Сообщение26.07.2014, 22:06 
Не прошло и недели, как я более-менее разобрался с GUI и созданием исполняемых файлов в Матлабе, создал экзешник, демонстрирующий решение сабжевой задачи, желающим вышлю. Сам экзешник весит 23Мб, но для его запуска необходимо предварительно установить бесплатную Матлабовскую компоненту MATLAB Compiler Runtime (MCR), которую можно скачать отсюда - дистрибутив весит ~400Мб :) Ну или просто 200 строк текста, у кого уже установлен Матлаб.
Изображение

 
 
 
 Re: Задача о четырехугольнике
Сообщение23.08.2014, 13:01 
Думаю, неплохо будет если отметим ещё один способ вывести уравнения для обсуждаемого здесь геометрическое место точек касания двух семейств окружностей, лежащие в плоскостью, представители первого из которых проходят через точек $T(x_{T},y_{T})$ и $U(x_{U},y_{U})$, а представители второго через точек $V(x_{V},y_{V})$ и $W(x_{W},y_{W})$. Припоминаю, что это ГМТ задаётся в неявном виде с помощью следующего уравнения:

(1) $G_{TUVW}(x,y)=0$,

где:

(2) $\begin{array}{c} G_{TUVW}(x,y)\equiv\left| \begin{array}{cccc} 2x & 1 & 0 & 0 \\ x^{2}+y^{2} & x & y & 1 \\ x_{T}^{2}+y_{T}^{2} & x_{T} & y_{T} & 1 \\ x_{U}^{2}+y_{U}^{2} & x_{U} & y_{U} & 1 \\ \end{array} \right|\left| \begin{array}{cccc} 2y & 0 & 1 & 0 \\ x^{2}+y^{2} & x & y & 1 \\ x_{V}^{2}+y_{V}^{2} & x_{V} & y_{V} & 1 \\ x_{W}^{2}+y_{W}^{2} & x_{W} & y_{W} & 1 \\ \end{array} \right|-\\ \\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ -\left| \begin{array}{cccc} 2y & 0 & 1 & 0 \\ x^{2}+y^{2} & x & y & 1 \\ x_{T}^{2}+y_{T}^{2} & x_{T} & y_{T} & 1 \\ x_{U}^{2}+y_{U}^{2} & x_{U} & y_{U} & 1 \\ \end{array} \right|\left| \begin{array}{cccc} 2x & 1 & 0 & 0 \\ x^{2}+y^{2} & x & y & 1 \\ x_{V}^{2}+y_{V}^{2} & x_{V} & y_{V} & 1 \\ x_{W}^{2}+y_{W}^{2} & x_{W} & y_{W} & 1 \\ \end{array} \right|. \end{array}$

Положим:

(3) $a_{TU}(x,y)\equiv\left| \begin{array}{cccc} 2x & 1 & 0 & 0 \\ x^{2}+y^{2} & x & y & 1 \\ x_{T}^{2}+y_{T}^{2} & x_{T} & y_{T} & 1 \\ x_{U}^{2}+y_{U}^{2} & x_{U} & y_{U} & 1 \\ \end{array} \right|$, (4) $b_{TU}(x,y)\equiv\left| \begin{array}{cccc} 2y & 0 & 1 & 0 \\ x^{2}+y^{2} & x & y & 1 \\ x_{T}^{2}+y_{T}^{2} & x_{T} & y_{T} & 1 \\ x_{U}^{2}+y_{U}^{2} & x_{U} & y_{U} & 1 \\ \end{array} \right|$,

(5) $a_{VW}(x,y)\equiv\left| \begin{array}{cccc} 2x & 1 & 0 & 0 \\ x^{2}+y^{2} & x & y & 1 \\ x_{V}^{2}+y_{V}^{2} & x_{V} & y_{V} & 1 \\ x_{W}^{2}+y_{W}^{2} & x_{W} & y_{W} & 1 \\ \end{array} \right|$, (6) $b_{VW}(x,y)\equiv\left| \begin{array}{cccc} 2y & 0 & 1 & 0 \\ x^{2}+y^{2} & x & y & 1 \\ x_{V}^{2}+y_{V}^{2} & x_{V} & y_{V} & 1 \\ x_{W}^{2}+y_{W}^{2} & x_{W} & y_{W} & 1 \\ \end{array} \right|$.

Очевидно:

(7) $G_{TUVW}(x,y)=\left| \begin{array}{cc} a_{TU}(x,y) & b_{TU}(x,y) \\ a_{VW}(x,y) & b_{VW}(x,y) \end{array}\right|$.

Пусть как и раньше точка касания одной конкретной окружности из первого семейства с другой конкретной окружности из второго семейства обозначим с $K(x_{K},y_{K})$. Рассмотрим уравнения этих двух окружностей. Они таковы:

(8) $\left| \begin{array}{cccc} x^{2}+y^{2} & x & y & 1 \\ x_{K}^{2}+y_{K}^{2} & x_{K} & y_{K} & 1 \\ x_{T}^{2}+y_{T}^{2} & x_{T} & y_{T} & 1 \\ x_{U}^{2}+y_{U}^{2} & x_{U} & y_{U} & 1 \\ \end{array} \right|=0$, (9) $\left| \begin{array}{cccc} x^{2}+y^{2} & x & y & 1 \\ x_{K}^{2}+y_{K}^{2} & x_{K} & y_{K} & 1 \\ x_{V}^{2}+y_{V}^{2} & x_{V} & y_{V} & 1 \\ x_{W}^{2}+y_{W}^{2} & x_{W} & y_{W} & 1 \\ \end{array} \right|=0$.

Первая окружность проходит через точек $K(x_{K},y_{K})$, $T(x_{T},y_{T})$ и $U(x_{U},y_{U})$, а вторая через точек $K(x_{K},y_{K})$, $V(x_{V},y_{V})$ и $W(x_{W},y_{W})$. Ясно, что (8) можем записать и так:

(10) $\left(x-\frac{1}{2}A_{KTU}}{S_{KTU}^{-1}\right)^{2}+\left(y-\frac{1}{2}B_{KTU}}{S_{KTU}^{-1}\right)^{2}=S_{KTU}^{-1}\left[(4S_{KTU})^{-1}\left(A_{KTU}^{2}+B_{KTU}^{2}\right)+C_{KTU}\right]$,

где:

(11) $S_{KTU}\equiv \left| \begin{array}{ccc}x_{K} & y_{K} & 1 \\ x_{T} & y_{T} & 1 \\ x_{U} & y_{U} & 1 \\ \end{array} \right|$, (12) $C_{KTU}\equiv \left| \begin{array}{ccc}x_{K}^{2}+y_{K}^{2} & x_{K} & y_{K} \\ x_{T}^{2}+y_{T} ^{2}& x_{T} & y_{T} \\ x_{U}^{2}+y_{U}^{2} & x_{U} & y_{U} \\ \end{array} \right|$,

(13) $B_{KTU}\equiv -\left| \begin{array}{ccc}x_{K}^{2}+y_{K}^{2} & x_{K} & 1 \\ x_{T}^{2}+y_{T} ^{2}& x_{T} & 1 \\ x_{U}^{2}+y_{U}^{2} & x_{U} & 1 \\ \end{array} \right|$, (14) $A_{KTU}\equiv \left| \begin{array}{ccc}x_{K}^{2}+y_{K}^{2} & y_{K} & 1 \\ x_{T}^{2}+y_{T} ^{2}& y_{T} & 1 \\ x_{U}^{2}+y_{U}^{2} & y_{U} & 1 \\ \end{array} \right|$.

(10) показывает, что координаты центра окружности, проходящая через точек $K(x_{K},y_{K})$, $T(x_{T},y_{T})$ и $U(x_{U},y_{U})$, таковы:

(15) ${}_{0}x_{KTU}=\frac{1}{2}A_{KTU}S_{KTU}^{-1}=\frac{1}{2}\left| \begin{array}{ccc}x_{K}^{2}+y_{K}^{2} & y_{K} & 1 \\ x_{T}^{2}+y_{T} ^{2}& y_{T} & 1 \\ x_{U}^{2}+y_{U}^{2} & y_{U} & 1 \\ \end{array} \right|\left| \begin{array}{ccc}x_{K} & y_{K} & 1 \\ x_{T} & y_{T} & 1 \\ x_{U} & y_{U} & 1 \\ \end{array} \right|^{-1}$,

(16) ${}_{0}y_{KTU}=\frac{1}{2}B_{KTU}S_{KTU}^{-1}=-\frac{1}{2}\left| \begin{array}{ccc}x_{K}^{2}+y_{K}^{2} & x_{K} & 1 \\ x_{T}^{2}+y_{T} ^{2}& x_{T} & 1 \\ x_{U}^{2}+y_{U}^{2} & x_{U} & 1 \\ \end{array} \right|\left| \begin{array}{ccc}x_{K} & y_{K} & 1 \\ x_{T} & y_{T} & 1 \\ x_{U} & y_{U} & 1 \\ \end{array} \right|^{-1}$.

Кстати, видно, что квадрат радиуса той окружности, задаётся с правой стороны (10). Но в данном случае это нас не интересует - ибо для нашей цели важно найти координаты центра окружности, а не её радиус.

Для центра другой окружности, проходящая через точек $K(x_{K},y_{K})$, $V(x_{V},y_{V})$ и $W(x_{W},y_{W})$, можем написать аналогичные соотношения:

(17) ${}_{0}x_{KVW}=\frac{1}{2}A_{KVW}S_{KVW}^{-1}=\frac{1}{2}\left| \begin{array}{ccc}x_{K}^{2}+y_{K}^{2} & y_{K} & 1 \\ x_{V}^{2}+y_{V} ^{2}& y_{V} & 1 \\ x_{W}^{2}+y_{W}^{2} & y_{W} & 1 \\ \end{array} \right|\left| \begin{array}{ccc}x_{K} & y_{K} & 1 \\ x_{V} & y_{V} & 1 \\ x_{W} & y_{W} & 1 \\ \end{array} \right|^{-1}$,

(18) ${}_{0}y_{KVW}=\frac{1}{2}B_{KVW}S_{KVW}^{-1}=-\frac{1}{2}\left| \begin{array}{ccc}x_{K}^{2}+y_{K}^{2} & x_{K} & 1 \\ x_{V}^{2}+y_{V} ^{2}& x_{V} & 1 \\ x_{W}^{2}+y_{W}^{2} & x_{W} & 1 \\ \end{array} \right|\left| \begin{array}{ccc}x_{K} & y_{K} & 1 \\ x_{V} & y_{V} & 1 \\ x_{W} & y_{W} & 1 \\ \end{array} \right|^{-1}$.

Ясно, что трёхмерные радиус-векторы центров этих двух окружностей, будут:

(19) ${}_{0}\vec r_{KTU}=({}_{0}x_{KTU},{}_{0}y_{KTU},0)$,

(20) ${}_{0}\vec r_{KVW}=({}_{0}x_{KVW},{}_{0}y_{KVW},0)$,

Так как обе окружности касаются в точке $K(x_{K},y_{K})$, то векторы $\vec r_{K}-{}_{0}\vec r_{KTU}$ и $\vec r_{K}-{}_{0}\vec r_{KVW}$ коллинеарны. Если распишем подробно эти разницы радиус-векторов, увидим, что:

(21) $\vec r_{K}-{}_{0}\vec r_{KTU}=\frac{1}{2S_{KTU}}(a_{TU}(x_{K},y_{K}),b_{TU}(x_{K},y_{K}),0)$,

(22) $\vec r_{K}-{}_{0}\vec r_{KVW}=\frac{1}{2S_{KVW}}(a_{VW}(x_{K},y_{K}),b_{VW}(x_{K},y_{K}),0)$.

Теперь можем записать векторное произведение этих двух векторов. Оно задаётся с:

(23) $(\vec r_{K}-{}_{0}\vec r_{KTU})\times (\vec r_{K}-{}_{0}\vec r_{KVW})=\frac{1}{4S_{KTU}S_{KVW}}\left| \begin{array}{ccc}\vec e_{x} & \vec e_{y} & \vec e_{z} \\ a_{TU}(x_{K},y_{K}) & b_{TU}(x_{K},y_{K}) & 0 \\ a_{VW}(x_{K},y_{K}) & b_{VW}(x_{K},y_{K}) & 0 \\ \end{array} \right|$.

Так как эти векторы коллинеарны, то их векторное произведение равняется нулю. Это выполняется когда:

(24) $\left| \begin{array}{cc} a_{TU}(x_{K},y_{K}) & b_{TU}(x_{K},y_{K}) \\ a_{VW}(x_{K},y_{K}) & b_{VW}(x_{K},y_{K}) \end{array}\right|=G_{TUVW}(x_{K},y_{K})=0$.

Этим и доказали, что наше ГМТ определяется уравнением:

$G_{TUVW}(x,y)=0$.

 
 
 
 Re: Задача о четырехугольнике
Сообщение28.01.2017, 09:14 
Один мой знакомый нашел общее решение задачи. В общем случае произвольных координат четырех исходных точек решений 6 (исключая вырождения, когда стороны некоторого искомого четырехугольника оказываются параллельными - скажем, это квадрат - тогда прочие решения вырождаются в точку). Координаты пересечения диагоналей всех 6-ти искомых четырехугольников являются решением трех квадратных уравнений с комплексными коэффициентами, зависящими от комплексных чисел - координат исходных точек на комплексной плоскости. Уравнения получаются друг из друга перестановкой координат исходных точек в коэффициентах - эти перестановки определяются тем, какую из трех оставшихся точек для данной считать точкой пересечения противоположной стороны четырехугольника.
Решение очень изящное и нетривиальное. Если кому интересно, могу выложить файл в формате WORD.
Собственно, вот оно:
https://yadi.sk/d/l2HbASDu3BNs6B
Решение принадлежит Сергею Макарову, обитающему в новосибирском Академгородке.
Там в начале довольно длинные рассуждалки и выкладки, но где-то в середине обнаруживается удивительная вещь, связанная с преобразованием инверсии, относительно единичной окружности.

 
 
 
 Re: Задача о четырехугольнике
Сообщение28.01.2017, 17:29 
Аватара пользователя
dvb в сообщении #1187930 писал(а):
Решение очень изящное и нетривиальное.
Да, действительно. Приятно было проследить за ходом мысли по этому тексту. Спасибо!
А что если все 4 данные в условии точки лежат на одной прямой? После инверсии мы получим вырожденный параллелограмм. Кажется очевидным, что в этом случае у нас не будет выпуклого решения. И не только в этом, наверное. Хотелось бы ещё понимать, когда будет, а когда нет.

 
 
 [ Сообщений: 88 ]  На страницу Пред.  1, 2, 3, 4, 5, 6


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group