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

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



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

Сейчас этот форум просматривают: epros


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

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