2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4, 5
 
 Re: Штрих-код треугольника
Сообщение24.06.2010, 20:35 
Заблокирован
Аватара пользователя


03/08/09

235
Обратную задачу решил полуаналитически. То есть одну из сторон треугольника ( конкретно a ) пришлось находить численно. Формулы пока нет времени писать, но текст проги в Maple четко эти зависимости выводит. Позже дам подробный алгоритм обратных вычислений. Итак, для конкретного примера:
Код:
restart;b:=-p1/k;c:=a-p2/k;xc:=1/2/c*(b^2+c^2-a^2);yc:=sqrt(b^2-xc^2);t:=k*xc-yc+b/c*p3;k:=2;p1:=-5;p2:=-1;p3:=3;a:=evalf(solve(t=0,a));b:=evalf(b);c:=evalf(c);xc:=evalf(xc);yc:=evalf(yc);plot({k*x+p1,k*x+p2,k*x+p3,yc/xc*x,yc*(x-c)/(xc-c)},x=-2..10,y=-1..4,thickness=2);

Изображение
На графике хорошо видны штрих-код и треугольник. Увы, прямое построение не дает начерченного штрих-кода. Где-то не то. Возможно, перепутал номера линейных уравнений. Буду завтра проверять...
Изображение

 Профиль  
                  
 
 Re: Штрих-код треугольника
Сообщение25.06.2010, 01:20 
Заблокирован
Аватара пользователя


03/08/09

235
Хотя все верно! Я проверил вариант Лукомора (см. стр. 3 данной темы). Программа обратного хода такая (задаюсь только четырьмя параметрами трех прямых штрих-кода):
Код:
restart;b:=-p1/k;c:=a-p2/k;xc:=1/2/c*(b^2+c^2-a^2);yc:=sqrt(b^2-xc^2);t:=k*xc-yc+b/c*p3;k:=1/2;p1:=-1.5;p2:=-1/2;p3:=2.5;a:=evalf(solve(t=0,a));b:=evalf(b);c:=evalf(c);xc:=evalf(xc);yc:=evalf(yc);plot({k*x+p1,k*x+p2,k*x+p3,yc/xc*x,yc*(x-c)/(xc-c)},x=-5..5,y=-1.5..2.5,thickness=3);


Изображение

Рисунок получился абсолютно одинаковый. Треугольник ABC строится автоматически. Значит, модель верна.
Вероятно, в предыдущем посте искаженный масштаб рисунка. Хотя я старался координаты абсцисс и ординат делать с одинаковым шагом. Этот момент я завтра проверю на листе бумаги и точно произведу построения.
Проверил этот вариант на бумаге - все точно!

 Профиль  
                  
 
 Re: Штрих-код треугольника
Сообщение25.06.2010, 07:14 
Заблокирован
Аватара пользователя


03/08/09

235
Итак, если я подсталяю данные штрих-кода, полученные прямым путем, то при обратном вычислении исходный треугольник получается. Но на параметры штрих-кода наверняка накладываются ограничения (они не могут быть произвольными). Эти ограничения можно обнаружить, анализируя формулы прямой модели. Чем сейчас и занимаюсь.
Например, я беру данные из треугольника, где корректировал штрих-код:
Код:
restart;xc:=.8038324325:yc:=2.367245957:c:=9.873863542: if xc=0 then xc:=.000000001 fi:b:=sqrt(xc^2+yc^2):a:=sqrt((c-xc)^2+yc^2):k:=yc*(a-b)/((xc-b)*a+(c-xc)*b):plot({k*x-k*b,k*x-k*(c-a),k*x-c/b*(k*xc-yc),yc/xc*x,0*x,yc/(xc-c)*x-yc/(xc-c)*c},x=-1..11,y=-7..3,thickness=3);k:=evalf(k);p1:=evalf(-k*b);p2:=evalf(-k*(c-a));p3:=evalf(-c/b*(k*xc-yc));


Получил в итоге k := 2.401635764 ; P1 := -6.004089410 ; P2 := -1.200817875 ; P3 := 1.724897763 ;

Запустил эти данные в обратную модель:
Код:
restart;b:=-p1/k;c:=a-p2/k;xc:=1/2/c*(b^2+c^2-a^2);yc:=sqrt(b^2-xc^2);t:=k*xc-yc+b/c*p3;k:=2.401635764;p1:=-6.004089410;p2:=-1.200817875;p3:=1.724897763;a:=evalf(solve(t=0,a));b:=evalf(b);c:=evalf(c);xc:=evalf(xc);yc:=evalf(yc);plot({k*x+p1,k*x+p2,k*x+p3,yc/xc*x,yc*(x-c)/(xc-c)},x=-2..10,y=-1..4,thickness=2);

и получил исходный треугольник:

Описываю обратную модель:
Заданы 4 переметра параллельных прямых штрих-кода: k, P1, P2, P3. Уравнения прямых:
Y1 = kx + P1 ; Y2 = kx + P2 ; Y3 = kx + P3.
Алгоритм вычислений:
1) b = - P1/k
2) c = a - P2/k
3) Xc = (b^2+c^2-a^2)/(2c)
4) Yc = sqrt(b^2 - Xc^2)
5) сторона a ищется как положительный корень уравнения
kXc - Yc + b P3 / c = 0 . (В программе это оператор a:=evalf(solve(t=0,a));).

Здесь Xc, Yc - координаты вершины С треугольника.

 Профиль  
                  
 
 Re: Штрих-код треугольника
Сообщение25.06.2010, 13:25 
Заблокирован
Аватара пользователя


03/08/09

235
Проанализировал возможные значения коэффициента при Х, учитывая ограничения, связанные со сторонами треугольника a,b,c. Эти ограничения - в поле графика. Программа для построения графика:
Код:
c:=10;b:=8;p:=(a+b+c)/2;k:=2*sqrt(p*(p-a)*(p-b)*(p-c))/((b^2+c^2-a^2)/2-b*c*(a-c)/(a-b));plot(k,a=abs(c-b)..c+b,y=-10..10,thickness=3,color=black);

Изображение

Кроме того интересно изменяются точки пересечения прямых Y1, Y2, y3 с осью 0y ( уравнения - на 3-й странице данной темы):
Изображение

Данный график рассчитан по проге:
Код:
c:=10;b:=8;p:=(a+b+c)/2;k:=2*sqrt(p*(p-a)*(p-b)*(p-c))/((b^2+c^2-a^2)/2-b*c*(a-c)/(a-b));plot({k,-k*b,-k*(c-a),-c/b*(k*(b^2+c^2-a^2)/2/c-1/2/c*sqrt(4*b^2*c^2-(b^2+c^2-a^2)^2))},a=c-b..c+b,y=-10..20,thickness=3);

 Профиль  
                  
 
 Re: Штрих-код треугольника
Сообщение25.06.2010, 15:47 
Заблокирован
Аватара пользователя


03/08/09

235
Последний график удивительно точно передает все нюансы изменения штрих-кода в зависимости от длины стороны a (при b=8 ; c=10). Проверил для a=6 и a=14. Чередования уравнений и точки пересечения параллельных прямых с осью ординат полностью увязаны. Ошибок здесь нет.
Зато видна сложность всех четырех функций. Точка разрыва - это, естественно, прямые штрих-кода параллельны оси 0Y.

Особыми точками графика являются:
1) точка разрыва (в ней знаменатель для выражения k равен нулю);
2) точка b=8;
3) точка c=10;
Слева от точки 8 штрих-коды идут в последовательности:
Зеленый
Синий
Коричневый
------------------
Между точками 8 и 10:
Синий
Зеленый
Коричневый
-------------------
Между точкой 10 и точкой разрыва:
Синий
Коричневый
Зеленый
-------------------
После точки разрыва:
Зеленый
Коричневый
Синий
-------------------
Ближе к правому концу коричневая меняется с синей. Это факт, который мне пока неясен.

Теперь мне понятно, почему первая моя обратная задача не удалась. Я неверно учел последовательность прямых штрих-кода.

 Профиль  
                  
 
 Re: Штрих-код треугольника
Сообщение25.06.2010, 20:29 
Заблокирован
Аватара пользователя


03/08/09

235
Еще один верный момент дает последний график. Как только a = b, мы будем иметь горизонтальные прямые штрих-кода (красная линия - это k). В данном случае треугольник равнобедренный. Я ранее говорил об этом же, анализируя структуры формул.
Нельзя не отметить красоту линий графика. Говоря словами Харди, анализируемые формулы не могут быть неверными, поскольку такое изящество невозможно выдумать. В который раз восторгаюсь чудом, имя которому треугольник!

 Профиль  
                  
 
 Re: Штрих-код треугольника
Сообщение26.06.2010, 21:42 
Заблокирован
Аватара пользователя


03/08/09

235
Очень интересным (хотя и сложным) получилось выражение для ao - точки разрыва коэффициента k:

Изображение

При b=8 ; c=10 значение ao = 10.82651816, что полностью соответсвует последнему графику.

 Профиль  
                  
 
 Re: Штрих-код треугольника
Сообщение27.06.2010, 02:52 
Модератор


16/01/07
1567
Северодвинск
Извините, Garik2, но неужели сложно освоить простейшие элементы \TeXа и писать формулы в соответствии с принятыми на форуме правилами? Школьники же осваивают, когда хотят.
$$a_0=\frac 13\left[V+\frac{4b^2+3c^2-6bc}V+b\right]$$
$$V=\sqrt[3]{18c^2b-9b^2c-8b^3+3\sqrt{48b^5c+36b^3c^3+18c^5b-87b^4c^2-12b^2c^4-3c^6}}$$
А Ваша картинка сегодня есть, а завтра её нету.

Код:
$$a_0=\frac 13\left[V+\frac{4b^2+3c^2-6bc}V+b\right]$$
$$V=\sqrt[3]{18c^2b-9b^2c-8b^3+3\sqrt{48b^5c+36b^3c^3+18c^5b-87b^4c^2-12b^2c^4-3c^6}}$$

http://dxdy.ru/topic183.html
http://dxdy.ru/topic8355.html

 Профиль  
                  
 
 Re: Штрих-код треугольника
Сообщение27.06.2010, 05:27 
Заблокирован
Аватара пользователя


03/08/09

235
Спасибо Jnrty! Латех знаю хорошо, но и я подумал, что его тут нет...
Теперь научен.

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

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



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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