2014 dxdy logo

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

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


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4  След.
 
 Re: Насильственная аппроксимация дуги заданным эллипсом
Сообщение14.01.2019, 14:43 
Аватара пользователя


19/06/14
78
А сколько точек в дуге? Насколько я понимаю эти точки не должны строго лежать на эллипсе, так как эллипс это аппроксимация.
Таким образом не обойтись без метода наименьших квадратов. Выложите какой-то конкретный пример с координатами.
Немного поможет если можно на глаз определить приблизительно значения угла поворота.
Алексей К. в принципе правильно написал, только непонятно почему он считал что наклон оси маленький.

 Профиль  
                  
 
 Re: Насильственная аппроксимация дуги заданным эллипсом
Сообщение14.01.2019, 15:07 


18/05/10
75
Fizykochemik, на пред стр в конце поста (Оффтор) несколько примеров и код на матлабе http://dxdy.ru/post1368299.html#p1368299

 Профиль  
                  
 
 Re: Насильственная аппроксимация дуги заданным эллипсом
Сообщение14.01.2019, 15:53 
Аватара пользователя


31/10/08
1244
Tur
Tur писал(а):
Ни слова не понял

Я просто подставил ваши формулы.
Код:
s = sin(fi); c = cos(fi);
lambda1 = a11*c*c+2*a12*s*c+a22*s*s;
lambda2 = a11*s*s-2*a12*s*c+a22*c*c;
a2 = -d/(lambda1*lambda1*lambda2);
b2 = -d/(lambda1*lambda2*lambda2);


По поводу double я не совсем уверен.
При 5 коэффициентах, сходится к единичной матрице.
$(X^TX)^{-1}(X^TX)=E$
При 6 коэффициентах матрица не сходится. При extended лучше, но ошибка на уровне 30% надо на длинной арифметике проверять.
С 5 коэффициентами работает гораздо лучше чем с 6.

Tur писал(а):
a33 = R(6) - 1 , а не просто уравнять а33 = R(6) ?

Pavia в сообщении #1367820 писал(а):
$(\frac{cos(\phi)^2}{a^2}+\frac{sin(\phi)^2}{b^2}) \cdot x^2+(\frac{sin(\phi)^2}{a^2}+\frac{cos(\phi)^2}{b^2}) \cdot y^2+2\cdot(\frac{cos(\phi)sin(\phi)}{a^2}-\frac{cos(\phi)sin(\phi)}{b^2})\cdot xy +2 \cdot (-\frac{x0 cos(\phi)}{a^2}+\frac{y0 sin(\phi)}{b^2}) \cdot x+2 \cdot (-\frac{x0 sin(\phi)}{a^2}+\frac{y0 cos(\phi)}{b^2}) \cdot y+(\frac{x0^2}{a^2}+\frac{y0^2}{b^2}-1)=0$

Мы единицу из уравнения перенесли в права, а затем вынесли сюда
Y = ones(length(x),1);
Потом вернули назад
a33 = R(6) - 1;
По моему всё логично. :?:

 Профиль  
                  
 
 Re: Насильственная аппроксимация дуги заданным эллипсом
Сообщение14.01.2019, 20:25 


18/05/10
75
Pavia в сообщении #1368657 писал(а):
Я просто подставил ваши формулы.
Я не понял почему стало устойчивей работать.

Цитата:
По поводу double я не совсем уверен.
При 5 коэффициентах, сходится к единичной матрице.
$(X^TX)^{-1}(X^TX)=E$
При 6 коэффициентах матрица не сходится. При extended лучше, но ошибка на уровне 30% надо на длинной арифметике проверять.
Никогда этим не занимался.

Цитата:
Pavia в сообщении #1367820 писал(а):
$(\frac{cos(\phi)^2}{a^2}+\frac{sin(\phi)^2}{b^2}) \cdot x^2+(\frac{sin(\phi)^2}{a^2}+\frac{cos(\phi)^2}{b^2}) \cdot y^2+2\cdot(\frac{cos(\phi)sin(\phi)}{a^2}-\frac{cos(\phi)sin(\phi)}{b^2})\cdot xy +2 \cdot (-\frac{x0 cos(\phi)}{a^2}+\frac{y0 sin(\phi)}{b^2}) \cdot x+2 \cdot (-\frac{x0 sin(\phi)}{a^2}+\frac{y0 cos(\phi)}{b^2}) \cdot y+(\frac{x0^2}{a^2}+\frac{y0^2}{b^2}-1)=0$

Мы единицу из уравнения перенесли в права, а затем вынесли сюда
Y = ones(length(x),1);
Потом вернули назад
a33 = R(6) - 1;
По моему всё логично. :?:
Позднее на это отвечу. Обозначим ур-е в этой цитате (***)

Пока что сделал наклон как и говорил:
Tur в сообщении #1368081 писал(а):
Если а33 найти не удастся, т.е. найденные коэф-ты а11 а22... на самом деле являются отношениями а11/а33 а22/а33 ... поэтому наклон можно будет найти из отношения а44 = а11/а22 т.е. при этом а33 сократиться, а44 будет известным числом и получится такая формула
$tg^2(\phi)  = \frac {a44\cdot a^2-b^2}{a^2-a44\cdot b^2}$
т.е. эта первая пришлепка к старому алгоритму. С точностью до знака вроде работает, но проверять надо вместе с центрм, а его получить не смог.
Во-первых
Tur в сообщении #1368591 писал(а):
Затем из системы уравнений :
$a_{13}=-\frac{x_0cos\varphi}{a^2}+\frac{y_0sin\varphi}{b^2}$
$a_{23}=-\frac{x_0sin\varphi}{a^2}+\frac{y_0cos\varphi}{b^2}$
находим центр $x_0$ $y_0$
а13 и а23 есть отношения к а33. Поэтому из этой системы получаем одно ур-е делением вернего на нижнее.
Во-вторых: второе ур-е я брал ваш $a33 = \frac{x0^2}{a^2}+\frac{y0^2}{b^2}-1 = 1$
приравнивал его к единице (т.к. я же в старом алгоритме пока работаю) и т.д. и ничего не получилось, координаты заведомо неверные получались.
Так вот у меня вопрос: в уравнении (***) нет ли ошибок? Этот вывод в какой то книге приведен? Просто не нахожу где ошибка у меня или в (***)

 Профиль  
                  
 
 Re: Насильственная аппроксимация дуги заданным эллипсом
Сообщение14.01.2019, 21:26 


29/09/06
4552
Fizykochemik в сообщении #1368609 писал(а):
Алексей К. в принципе правильно написал, только непонятно почему он считал что наклон оси маленький.
Потому что там речь шла о поправках к первому приближению --- центра и наклона оси. Не наклон маленький, поправка маленькая.

Tur,
я старательно пытался найти уравнение эллипса с фиксированными полуосями, проходящего через три заданные точки, но ничего приличного у меня не получилось.

(Оффтоп)

И может что-то и выскочило бы, если бы не слабость моей ЭВМ (неспособной за разумное время сосчитать необходимые для решения нелинейной системы с 3 неизвестными результанты) и условия сильного ограничения свободы, в которых я сейчас пребываю.
Прогресс, случившийся в теме за эти дни, пока не изучил.
Но по поводу замеченных мной замечаний-жалоб на точность настоятельно рекомендую: задачи такого рода следует решать, сразу приведя набор измеренных точек в систему центра тяжести. Т.е. сделав искы-игреки максимально маленькими.

 Профиль  
                  
 
 Re: Насильственная аппроксимация дуги заданным эллипсом
Сообщение15.01.2019, 18:24 


18/05/10
75
Алексей К., спасибо вам большое за чуткость. Вот здесь http://dxdy.ru/post1368591.html#p1368591 я обобщил что получилось с моей задачкой. До сих пор я еще ее не закончил.

Сегодня нашел ошибки в исходном уравнении (***). Было так
$(\frac{cos(\phi)^2}{a^2}+\frac{sin(\phi)^2}{b^2}) \cdot x^2+(\frac{sin(\phi)^2}{a^2}+\frac{cos(\phi)^2}{b^2}) \cdot y^2+2\cdot(\frac{cos(\phi)sin(\phi)}{a^2}-\frac{cos(\phi)sin(\phi)}{b^2})\cdot xy +2 \cdot (-\frac{x0 cos(\phi)}{a^2}+\frac{y0 sin(\phi)}{b^2}) \cdot x+2 \cdot (-\frac{x0 sin(\phi)}{a^2}+\frac{y0 cos(\phi)}{b^2}) \cdot y+(\frac{x0^2}{a^2}+\frac{y0^2}{b^2}-1)=0$
А правильно так:
$(\frac{cos(\phi)^2}{a^2}+\frac{sin(\phi)^2}{b^2}) \cdot x^2+(\frac{sin(\phi)^2}{a^2}+\frac{cos(\phi)^2}{b^2}) \cdot y^2-2\cdot(\frac{cos(\phi)sin(\phi)}{a^2}-\frac{cos(\phi)sin(\phi)}{b^2})\cdot xy +2 \cdot (-\frac{x0 cos(\phi)}{a^2}+\frac{y0 sin(\phi)}{b^2}) \cdot x+2 \cdot (\frac{x0 sin(\phi)}{a^2}+\frac{y0 cos(\phi)}{b^2}) \cdot y+(\frac{x0^2}{a^2}+\frac{y0^2}{b^2}-1)=0$
Если еще что не доглядел, то вот код

(Оффтоп)

Код:
function aa = complete_equation(a, b, Mo, fi)
s = sin(fi); c = cos(fi);
s2 = s*s; c2 = c*c;
a2 = a*a; b2 = b*b;

a11 = c2/a2 + s2/b2;
a22 = s2/a2 + c2/b2;
a12 = -c*s*(1/a2 - 1/b2);
a13 = Mo.X*c/a2 + Mo.Y*s/b2;
a23 = -Mo.X*s/a2 + Mo.Y*c/b2;
a33 = Mo.X*Mo.X/a2 + Mo.Y*Mo.Y/b2 - 1;

aa = [a11 a22 a12 a13 a23 a33];
end

Всего то несколько опечаточек со знаками, но нашел я их без того чтобы на бумаге подставлять и преобразовывать выражения. Если кому то это интересно, то могу объяснить. Эта тема еще не закончена, окончательный код еще не написан.

 Профиль  
                  
 
 Re: Насильственная аппроксимация дуги заданным эллипсом
Сообщение15.01.2019, 19:49 
Аватара пользователя


31/10/08
1244
Tur
Цитата:
Я не понял почему стало устойчивей работать.

Из-за симметрии МНК не знает какой был изначально эллипс
$a=50;$ $b=100;$
или наоборот
$a=100;$ $b=50;$
А так как они отличаются на угол $\frac{\pi}{2}$ то вот и разница с углом.

Угол принимается за верный, а порядок осей вычисляется. Всё как в вашей формуле ищем через собственные значения они и будут связаны с осями.
Только ищем не при помощи отражений, а про помощи вращений что-бы сохранить порядок осей. А когда добавил вычисление осей с использованием вращений метод Якоби. То порядок осей стал правильно вычисляться.

Tur в сообщении #1368725 писал(а):
брал ваш $a33 = \frac{x0^2}{a^2}+\frac{y0^2}{b^2}-1 = 1$

Дык откуда 1? Если центр 0,0 то должно $a_{33}=-1$

Алексей К.
Цитата:
для решения нелинейной системы с 3 неизвестными
а каким методом пользовались?

-- Вт янв 15, 2019 21:22:22 --

Pavia в сообщении #1367820 писал(а):
$\frac{( x \cdot cos(\phi)+ y \cdot sin(\phi)-x0)^2}{a}+\frac{(- x \cdot sin(\phi)+ y \cdot cos(\phi)-y0)^2}{b^2}=1$

Вот тут ошибся должно быть

$\frac{( (x-x0) \cdot cos(\phi)- (y-y0) \cdot sin(\phi))^2}{a^2}+\frac{( (x-x0) \cdot sin(\phi)+ (y-y0) \cdot cos(\phi))^2}{b^2}=1$
Так что там не только знак.

 Профиль  
                  
 
 Re: Насильственная аппроксимация дуги заданным эллипсом
Сообщение26.01.2019, 23:23 


18/05/10
75
Pavia в сообщении #1368929 писал(а):
Так что там не только знак.
Да, не только и я ошибся когда писал
Tur в сообщении #1368914 писал(а):
А правильно так: ...

Вот вывод: ( для краткости я заменил $\,\,\,\,s = \sin(\varphi) $\,\,\,\,$\,c = cos(\varphi) $ )

$\frac{(x\cdot c+y\cdot s)^2}{a^2}+\frac{(-x\cdot s+y\cdot c)^2}{b^2}) = 1$

после преобразований осюда получаем

$(\frac{c^2}{a^2}+\frac{s^2}{b^2})\cdot x^2+(\frac{s^2}{a^2}+\frac{c^2}{b^2})\cdot y^2+2\cdot s\cdot c\cdot (\frac{1}{a^2}-\frac{1}{b^2})\cdot x\cdot y - 1$

или

$a_{11} = \frac{c^2}{a^2}+\frac{s^2}{b^2}$

$a_{22} = \frac{s^2}{a^2}+\frac{c^2}{b^2}$

$a_{12} = 2\cdot s\cdot c\cdot (\frac{1}{a^2}-\frac{1}{b^2})$

перепишем исходное уравнение после поворота на $\varphi$ так: $ a_{11}\cdot x^2+a_{12}\cdot y^2+2\cdot a_{12}\cdot x\cdot y - 1 = 0$
теперь сдвинем на $x_0 \, y_0$

$a_{11}\cdot(x-x_0)^2+a_{22}\cdot(y-y_0)^2+2\cdot s\cdot c\cdot(x-x_0)\cdot(y-y_0) - 1 = 0$

после преобразований получим:

$a_{11}\cdot x^2+a_{22}\cdot y^2+2\cdot x\cdot y-2\cdot(a_{11}\cdot x_0+a_{12}\cdot y_0)\cdot x-2\cdot(a_{12}\cdot x_0+a_{22}\cdot y_0)\cdot y+a_{33} = 0$

где $a_{33} = a_{11}\cdot x_0^2+a_{22}\cdot y_0^2+2\cdot a_{12}\cdot x_0\cdot y_0-1$

Итак вот все коэффициенты, выраженные через угол наклона, длины полуосей и центр эллипса:

$a_{11} = \frac{c^2}{a^2}+\frac{s^2}{b^2}$

$a_{22} = \frac{s^2}{a^2}+\frac{c^2}{b^2}$

$a_{12} = 2\cdot s\cdot c\cdot (\frac{1}{a^2}-\frac{1}{b^2})$

$a_{13} = -a_{11}\cdot x_0-a_{12}\cdot y_0$

$a_{23} = -a_{12}\cdot x_0-a_{22}\cdot y_0$

$a_{33} = a_{11}\cdot x_0^2+a_{22}\cdot y_0^2+2\cdot a_{12}\cdot x_0\cdot y_0-1$

Вот код для этих коэффициентов

(Оффтоп)

Код:
function aa = complete_equation(a, b, Mo, fi)
s = sin(fi); c = cos(fi);
s2 = s*s; c2 = c*c;
xo = Mo.X; yo = Mo.Y;
xo2 = xo*xo; yo2 = yo*yo;
a2 = a*a; b2 = b*b;

a11 = c2/a2 + s2/b2;
a22 = s2/a2 + c2/b2;
a12 = s*c*(1/a2 - 1/b2);
a13 = -xo*a11 - yo*a12;
a23 = -xo*a12 - yo*a22;
a33 = a11*xo2 + a22*yo2 + 2*a12*xo*yo - 1;

aa = [a11 a12 a13 a22 a23 a33];
end


Первые три коэ-та есть функции только угла, остальные три - как угла так и центра. Если зафиксировать угол и с учетом а и b найти новые а11 а22 а12, а затем подставить их в формулы

$x_0=\frac{a_{12}\cdot a_{23}-a_{13}\cdot a_{22}}{D}$

$y_0=\frac{a_{12}\cdot a_{13}-a_{11}\cdot a_{23}}{D}$

где $D = a_{11}\cdot a_{22}-a_{12}^2$

то ничего не получится, т.к. длины полуосей а и b существенно влияют на изменения а11 а22 а12, которые (при старых а13 а23) выбрасывают новый центр на значительное расстояние от истины. Думаю что это была иллюзия что задача решена.

 Профиль  
                  
 
 Re: Насильственная аппроксимация дуги заданным эллипсом
Сообщение27.01.2019, 11:52 


18/05/10
75
Нашел опечатку в предыдущем сообщении
Tur в сообщении #1372128 писал(а):
после преобразований получим:

$a_{11}\cdot x^2+a_{22}\cdot y^2+2\cdot x\cdot y-2\cdot(a_{11}\cdot x_0+a_{12}\cdot y_0)\cdot x-2\cdot(a_{12}\cdot x_0+a_{22}\cdot y_0)\cdot y+a_{33} = 0$
забыл вставить а12. Запишу последнее уравнение еще раз:

$a_{11} x^2+a_{22} y^2+2 a_{12} x y-2(a_{11}\ x_0+a_{12} y_0) x-2(a_{12} x_0+a_{22} y_0) y+a_{33} = 0$

 Профиль  
                  
 
 Re: Насильственная аппроксимация дуги заданным эллипсом
Сообщение28.01.2019, 18:44 


18/05/10
75
Еще одну опечатку нашел:
Tur в сообщении #1372128 писал(а):
$a_{12} = 2\cdot s\cdot c\cdot (\frac{1}{a^2}-\frac{1}{b^2})$
Дважды это написано в том посту. Следует читать: $a_{12} = s\cdot c\cdot (\frac{1}{a^2}-\frac{1}{b^2})$

Продолжаю

$a_{11} x^2+a_{22} y^2+2 a_{12} x y-2(a_{11}\ x_0+a_{12} y_0) x-2(a_{12} x_0+a_{22} y_0) y+a_{33} = 0$

В этом уравнении три неизвестных: $ \varphi \,\, x_0 \,\, y_0$ или $f(x,\,\, y,\,\, \varphi, \,\, x_0, \,\, y_0) = 0$
$ x, \,\, y$ - координаты точек дуги
Хорошо бы его один разок записать развернуто чтобы просто на него взглянуть. Но ввиду громоздкости пока оставлю это.

Упрощу исходную задачу: даны три точки на плоскости $(x_1\,\, y_1), (x_2\,\, y_2), (x_3\,\, y_3)$, два числа $a$ и $b$ и еще одна точка нулевое приближение центр эллипса $M_0$. Найти эллипс имеющий полуоси a и b и проходящий через данные три точки.
Итак, дана система уравнений:

$f_1(x_1,\,\, y_1,\,\, \varphi, \,\, x_0, \,\, y_0) = 0$
$f_2(x_2,\,\, y_2,\,\, \varphi, \,\, x_0, \,\, y_0) = 0$
$f_3(x_3,\,\, y_3,\,\, \varphi, \,\, x_0, \,\, y_0) = 0$

Составим матрицу Якоби

$\frac{\partial f_1}{\partial \varphi}\,\,\, \frac{\partial f_1}{\partial x_0}\,\,\, \frac{\partial f_1}{\partial y_0}$

$\frac{\partial f_2}{\partial \varphi}\,\,\, \frac{\partial f_2}{\partial x_0}\,\,\, \frac{\partial f_2}{\partial y_0}$

$\frac{\partial f_3}{\partial \varphi}\,\,\, \frac{\partial f_3}{\partial x_0}\,\,\, \frac{\partial f_3}{\partial y_0}$

Для каждого слагаемого уравнения $f(x,\,\, y,\,\, \varphi, \,\, x_0, \,\, y_0) = 0$ запишем производные сначала отдельно
Производные по углу:

$ \frac{\partial a_{11}}{\partial\varphi} = \frac {\partial}{\partial \varphi} (\frac{c^2}{a^2} + \frac {s^2}{b^2}) = -(\frac {1}{a^2} - \frac 1{b_2})\cdot sin(2\varphi)$
здесь было ранее обозначено $ c = cos(\varphi)  \,\,\, s = sin(\varphi)$

Введем новые обозначения $ p = \frac {1}{a^2} - \frac 1{b_2},\,\,\,\,\, s = sin(2\varphi) ,\,\,\,\, c = cos(2\varphi)$
тогда производные по углу запишутся так:

$ \frac{\partial a_{11}}{\partial\varphi} = -p\cdot s$

$ \frac{\partial a_{22}}{\partial\varphi} = p\cdot s$

$ \frac{\partial a_{12}}{\partial\varphi} = p\cdot c$

$ \frac{\partial a_{13}}{\partial\varphi} = x_0\cdot p\cdot s - y_0 \cdot p\cdot c$

$ \frac{\partial a_{33}}{\partial\varphi} = -x_0^2\cdot p\cdot s + y_0^2 \cdot p\cdot s+2\cdot x_0\cdot y_0\cdot p\cdot c$

учитывая найденные производные запишем производную по углу функции
$\frac {\partial f(x,\,\, y,\,\, \varphi, \,\, x_0, \,\, y_0)}{\partial \varphi}=-p\cdot s\cdot x^2+p\cdot s\cdot y^2+2\cdot p\cdot c\cdot x\cdot y-2\cdot(x_0\cdot p\cdot s-y_0\cdot p\cdot c)\cdot x-2\cdot(p\cdot c\cdot x_0+p\cdot s\cdot y_0)\cdot y - x_0^2\cdot p\cdot s+y_0^2\cdot p\cdot s+2\cdot x_0\cdot y_0\cdot p\cdot c$
нечитаемо, увы. Запишем тоже самое еще раз иначе

$\frac {\partial f}{\partial \varphi}=-psx^2+psy^2+2pcxy-2(x_0ps-y_0pc)x-2(pc x_0+ps y_0)y - x_0^2ps+y_0^2 ps+2x_0y_0pc$

Производные по $x_0$ и по $y_0$
$\frac {\partial f}{\partial x_0}= -2\cdot a_{11}\cdot x -2\cdot a_{12}\cdot y+2\cdot a_{11}\cdot x_0+2\cdot a_{12}\cdot y_0$
$\frac {\partial f}{\partial y_0}= -2\cdot a_{12}\cdot x -2\cdot a_{22}\cdot y+2\cdot a_{22}\cdot y_0+2\cdot a_{12}\cdot x_0$

 Профиль  
                  
 
 Re: Насильственная аппроксимация дуги заданным эллипсом
Сообщение06.02.2019, 22:48 


29/09/06
4552
Данные, приведённые Tur в сообщении #1368299 как "x y дуги", с самого первого взгляда выглядят вполне хорошими для надёжной работы предложенного алгоритма с итерациями. И да, оно сработало. Интересно, сработает ли на уполовиненных дугах.
Разумеется, для опытов я дополнительно выспросил у него те самые фиксированные длины полуосей.

Привести результатыдопустимыми на форуме размерами) у меня пока не получается (как всегда, натыкаюсь на "Невозможно определить размеры изображения"). А ссылки на рисунки вроде работают.

Сначала -- некоторые уточнения к предыдущему.
Алексей К. в сообщении #1367406 писал(а):
Его /* эллипса с центром в $\color{brown}(u,v)$ и наклоном оси $\color{brown}\xi$ */ уравнение имеет вид...
Там у $\xi$ был знак неправильно-противоположный. Надо $$F(x,y)\equiv A[(x-u)\cos\xi-(y-v)\sin\xi]^2+B[(x-u)\sin\xi+(y-v)\cos\xi]^2-1=0\eqno(1)$$($A=\frac1{a^2}$, $B=\frac1{b^2}$).

Неуклюже была описана и линеаризация этого уравнения. Типа$$L(x,y;u,v,\xi)=\frac{x^2}{a^2}+ \frac{y^2}{b^2}-1-2\frac{y}{b^2}v-2\frac{x}{a^2}u+2\left(\frac1{b^2}-\frac1{a^2}\right)xy\,\xi.$$

Красный эллипс построен по пяти точкам (красные крестики) и взят в качестве первого приближения.
На первой же итерации получился приличный результат (эллипс цвета Fúchsia).
Мизерное улучшение дала вторая итерация (синий пунктир).

Теперь о зелёном эллипсе.
Я подoзревал, что красное первое приближение может не прокатить.
И надо бы поискать первое приближение получше, скажем, по трём точкам с заданными осями:
Алексей К. в сообщении #1367767 писал(а):
Ну и надо посмотреть --- не строится ли эллипс с заданными полуосями по трём точкам легко.
Легко не вышло; но я попросил Maple найти такой эллипс, т.е. решить численно нелинейную систему $F(x_i,y_i)=0,\; i=1,2,3$, где три точки --- первая, средняя и последняя. Maple не всегда на это соглашалась, но в данном случае решила (возможно, охотнее бы решала при условии приведения точек в систему центра тяжести).
Однако для данного набора точек улучшенное (зелёное) первое приближение не понадобилось.

В следующем посте я постараюсь прогипотезировать ошибки TC, приведшие к штукам типа
Tur в сообщении #1368299 писал(а):
Изображение

 Профиль  
                  
 
 Re: Насильственная аппроксимация дуги заданным эллипсом
Сообщение07.02.2019, 09:33 


29/09/06
4552
Строя эллипс по трём точкам с фиксированными полуосями $a$ и $b$, мы используем вариант $79=a>b=37.5$. Наклон его оси определяется с точностью до $\pi$. В приведённом примере этот (зелёный) эллипс весьма близок к искомому.

Ища первое приближение по пяти точкам, мы преобразуем найденные коэффициенты кв. формы $\{a_{ij}\}$ (полагая $a_{11}=1$) в пятёрку $\{u_1,v_1,\,\xi_1,\,a_1,\,b_1\}$. Сделать это можно двояко, а именно, получив также $\{u_2=u_1,\,v_2=v_1,\,\xi_2=\xi_1+\pi/2,\,a_2=b_1,\, b_2=a_1\}$ (плюс повороты на $\pi$). Из двух вариантов, в которых либо $a>b$, либо $b>a$, важно выбрать правильный, и именно его $\xi$ использовать в итерациях.
В противном случае мы, видимо, рискуем скатиться в "метод наибольших квадратов".

(Цифирьки)

Получилось:
\begin{verbatim}
 [270.9747737,  -20.12870156,  2.551107571, 80.95467, 39.34825] красный элл.

+[  1.4533474,     1.7082160,  0.0042715718]                    1-я поправка 
=[272.4281211,  -18.42048552,  2.555379143, 79,       37.5]     фуксиевый 

+[  -.670426754,  1.116874653, 0.00041932415]                   2-я поправка 
=[271.7576943,  -17.30361087,  2.555798467, 79,       37.5]     синий

 [272.6877261,  -16.87303629,  2.580413447, 79,       37.5]     зелёный элл.
\end{verbatim}

 Профиль  
                  
 
 Re: Насильственная аппроксимация дуги заданным эллипсом
Сообщение07.02.2019, 19:22 


18/05/10
75
Алексей! Спасибо!

Вот этим особенно впечатлён
Алексей К. в сообщении #1374543 писал(а):
$$L(x,y;u,v,\xi)=\frac{x^2}{a^2}+ \frac{y^2}{b^2}-1-2\frac{y}{b^2}v-2\frac{x}{a^2}u+2\left(\frac1{b^2}-\frac1{a^2}\right)xy\,\xi.$$

В некоторых своих задачах я иногда пользовался подобной линеаризацией, но мои попытки были робки, а у вас все круто. Пока не проверил все до конца...
(грипп меня свалил, еще несколько дней возьмет пока на ноги встану)

На всякий случай есть у меня одна дуга, которая объективно есть гипербола. Интересно сработает ли ваш алгоритм в этом случае. (а и b для этого случая пока сказать не могу)

(Оффтоп)

-73,78289474 -43,25
-72,78289474 -42,25
-71,78289474 -41,25
-70,78289474 -40,25
-69,78289474 -39,25
-68,78289474 -38,25
-67,78289474 -37,25
-66,78289474 -36,25
-65,78289474 -35,25
-64,78289474 -34,25
-63,78289474 -34,25
-62,78289474 -33,25
-61,78289474 -32,25
-60,78289474 -31,25
-59,78289474 -30,25
-58,78289474 -29,25
-57,78289474 -28,25
-56,78289474 -27,25
-55,78289474 -26,25
-54,78289474 -25,25
-53,78289474 -25,25
-52,78289474 -24,25
-51,78289474 -23,25
-50,78289474 -22,25
-49,78289474 -21,25
-48,78289474 -20,25
-47,78289474 -19,25
-46,78289474 -19,25
-45,78289474 -18,25
-44,78289474 -17,25
-43,78289474 -16,25
-42,78289474 -15,25
-41,78289474 -15,25
-40,78289474 -14,25
-39,78289474 -13,25
-38,78289474 -12,25
-37,78289474 -12,25
-36,78289474 -11,25
-35,78289474 -10,25
-34,78289474 -9,25
-33,78289474 -8,25
-32,78289474 -7,25
-31,78289474 -7,25
-30,78289474 -6,25
-29,78289474 -5,25
-28,78289474 -5,25
-27,78289474 -4,25
-26,78289474 -3,25
-25,78289474 -3,25
-24,78289474 -2,25
-23,78289474 -1,25
-22,78289474 -0,25
-21,78289474 0,75
-20,78289474 0,75
-19,78289474 1,75
-18,78289474 1,75
-17,78289474 2,75
-16,78289474 3,75
-15,78289474 4,75
-14,78289474 4,75
-13,78289474 5,75
-12,78289474 6,75
-11,78289474 6,75
-10,78289474 7,75
-9,782894737 7,75
-8,782894737 8,75
-7,782894737 9,75
-6,782894737 10,75
-5,782894737 10,75
-4,782894737 11,75
-3,782894737 12,75
-2,782894737 12,75
-1,782894737 13,75
-0,782894737 13,75
0,217105263 14,75
1,217105263 15,75
2,217105263 15,75
3,217105263 16,75
4,217105263 16,75
5,217105263 17,75
6,217105263 17,75
7,217105263 18,75
8,217105263 19,75
9,217105263 19,75
10,21710526 20,75
11,21710526 20,75
12,21710526 20,75
13,21710526 21,75
14,21710526 21,75
15,21710526 21,75
16,21710526 22,75
17,21710526 22,75
18,21710526 22,75
19,21710526 22,75
20,21710526 23,75
21,21710526 22,75
22,21710526 23,75
23,21710526 23,75
24,21710526 23,75
25,21710526 23,75
26,21710526 23,75
27,21710526 22,75
28,21710526 22,75
29,21710526 22,75
30,21710526 22,75
31,21710526 22,75
32,21710526 22,75
33,21710526 21,75
34,21710526 21,75
35,21710526 20,75
36,21710526 20,75
37,21710526 20,75
38,21710526 19,75
39,21710526 19,75
40,21710526 18,75
41,21710526 18,75
42,21710526 17,75
43,21710526 16,75
44,21710526 15,75
45,21710526 15,75
46,21710526 14,75
47,21710526 13,75
48,21710526 12,75
49,21710526 11,75
49,21710526 10,75
50,21710526 9,75
51,21710526 8,75
51,21710526 7,75
51,21710526 6,75
52,21710526 5,75
53,21710526 4,75
53,21710526 3,75
53,21710526 2,75
54,21710526 1,75
54,21710526 0,75
54,21710526 -0,25
55,21710526 -1,25
55,21710526 -2,25
55,21710526 -3,25
55,21710526 -4,25
55,21710526 -5,25
56,21710526 -6,25
56,21710526 -7,25
56,21710526 -8,25
56,21710526 -9,25
56,21710526 -10,25
56,21710526 -11,25
56,21710526 -12,25
56,21710526 -13,25
56,21710526 -14,25
56,21710526 -15,25
57,21710526 -16,25

Алексей, спасибо еще раз! Надеюсь встану на ноги разберу подробно ваше решение.

 Профиль  
                  
 
 Re: Насильственная аппроксимация дуги заданным эллипсом
Сообщение07.02.2019, 20:09 


29/09/06
4552
Наверное, если я узнаю, что по 5 точкам получил не эллипс, а, допустим, "объективную гиперболу" то выброшу такое первое приближение,
и возьму вместо него эллипс в виде 3-точечной окружности. Ну уж и если она окажется прямой, то это и решать-то незачем.

 Профиль  
                  
 
 Re: Насильственная аппроксимация дуги заданным эллипсом
Сообщение08.02.2019, 11:18 


29/09/06
4552
Tur в сообщении #1374773 писал(а):
На всякий случай есть у меня одна дуга, которая объективно есть гипербола. Интересно сработает ли ваш алгоритм в этом случае. (а и b для этого случая пока сказать не могу)
Ежели из Вашего (прежнего) набора из 127 точек взять первые 60, то уже получим гиперболу в качестве первого (5-точечного) приближения.
Подмена её окружностью не спасает.
Спасает 3-точечный эллипс (с заданными для тех точек $a$ и $b$). Но для его надёжного исчисления надо что-то придумать: так, моя старая Maple не всегда решает систему.

У меня не грипп :-( , но я тоже вынужден отложить эту развлекуху на некоторое время.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 60 ]  На страницу Пред.  1, 2, 3, 4  След.

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: YandexBot [bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group