tikka
1)
>>Что то я этого не понял. если вы совмещаете c_i и c_e в одном с, и получете Fx = J_c * lambda, то почему потом удовлетворяете >>только c_i > 0, причем для _всех_ lambda?
Я лично удовлетворяю не только и не для всех, а
c_i(r) >=0;
lambda_i >=0;
c_i(r) * lambda_i = 0;
c_e(r) = 0;
См. мой пост выше по форуму. В статье может и не так, это к Экспе вопросы.
2)
>>Сi_t * lambda_i = 0 (3)
>>с (2) все прокатит, из (1) и (2) получим решаюмую систему.
>>С (3) уже проблемы, т.к. там будет присутствовать квадратичная форма от (lambda_i, lambda_e) и (lambda_i), короче коворя >>нелинейное уравнение, не решеаемое LPC.
Почему у тебя тут вылезла c_t и какая там квадратичная форма еще? У меня тут c_i(r) * lambda_i = 0; и все линейно до безобразия.
ъ
3) идеальные... <=> ортогональные.. это здорово, но объясни мне без д'Аламбера, как встает задача минимизации работы тогда?
Идеальные-ортогональные связи - это прекрасно, но нужно еще и выбрать такое перемещение, чтобы оно было кинематически возможным, именно отсюда, на мой взгляд, происходит задача минимизации работы по неизвестному перемещению.
tikka
Вот на счет градиентов должен признать - стоит все же переписать когда-нибудь с использованием частных :(
По стабилизации Баумгарте - это скорее дополнение, нежели замена. И кстати, вменяемых док по стабилизации Бамугарте я не нашел, и не хотелось писать нечто вроде "and then miracle occurs" как в других пейперах :)
По поводу lambda >= 0 - я написал в конце, что мы пришли к LCP, а это следует из ее определения, так же как и complementary slackness. То, что я не указал их в начальной формулировке ККТ - грубый косяк с моей стороны, да.
tikka
Я еще что хотел спросить-то. Ты не видишь упорно косяка главного, из-за которого я не хотел это публиковать.
Пусть у нас идеальные связи, ортогональные реакции, и поэтому dFc/ dr = 0. Не зависит сила реакции от сдвига. Тогда dF/dr = Fc, и из условий стационарности получаем Fc = Je_t * lambda_e + Ji_t * lambda_i (1)
Получаем зависимость Fc от лямбд. Но разве лямбды независмы от сдвига? Сдвиг-то у нас - v * dt, причем не v0, а именно искомая скорость по особенностям интегратора Эйлера, а v1 и лямбды в одну MLCP входят. Можно, кончено, сказать, что по физике Fc зависит только от ускорения а (через выражение F = Ma), а v1 вылезает через приближенное решение дифура, но все ж таки даже если производная скорости зависит от лямбд, сама скорость тоже должна... Как выйти из противоречия, что Fc одновременно зависит и не зависит от перeмещения ?
>> dFc/ dr = 0
или все же dFc * dr = 0 ?? Ну ладно смысл я понял
>> Как выйти из противоречия, что Fc одновременно зависит и не зависит от перeмещения ?
Тут дело в том что что мы рассматриваем бесконечно малые промежутки времени. В момент когда происоходит удар, возникают lambda реакции и Fc, как только тело отодвигается на бесконечно малый промежуток и выходит из контакта lambda пропадают. То есть Fc как бы были но работы никакой не сделали, потому что путь пройденый телом стремится к 0.
Из за дискретизации тела все же проникают друг в друга, и Fc реально совершают работу.
Кстати, именно поэтому аппроксимация тейлором выглядит не обосенованней чем дифференцирование и стабилизация. Если рассмотреть последовательности моментов интегрирования и устремить dt к 0, то получим что удовлетворение ограничеям на скорости достаточно для того что бы не сойти с решения (при условии что мы стояли на нем вначале). Вот если рассмотреть произвольную функцию и потребовать ее минимизацию однократно, то тогда да, удовлетворять условиям на позиции нужно. А с тейлором мы все равно точно на решение попадать не будем. К тому же стабилизация дает обоснованное право настраивать bias.
>>Почему у тебя тут вылезла c_t и какая там квадратичная форма еще? У меня тут c_i(r) * lambda_i = 0; и все линейно до безобразия.
сi >= 0, lambda_i >= 0, и значит удовлетворение Complementary slackness равнозначно:
ci_t * lambda_i = 0
или
lambda_i_t * ci = 0
(ci, lambda_i - вектор столбецы)
Из последнего уравнения стати (там есть не точность но что бы покаать принцип не важно):
M * lambda >= k =>
ci = M * lambda - k
теперь возмем dot product ci и lambda:
lambda_t * (M * lambda - k) =>
lambda_t * M * lambda - lambda_t * k
квадратичная форма вылазит из члена: lambda_t * M * lambda
даже если удовлетворять Complementary slackness покоординатно всерано будет нелинейная система.
>>Идеальные-ортогональные связи - это прекрасно, но нужно еще и выбрать такое перемещение, чтобы оно было кинематически возможным, именно отсюда, на мой взгляд, происходит задача минимизации работы по неизвестному перемещению.
Сложилось ощущение, что вам просто неудобно оттого что надо что то выбирать, постулировать вначале, и вы прикрыли эту "дыру", принципом даламбера, котрый как бы black-box и делает это за вас. Ну ладно, дело ваше.
>>и не хотелось писать нечто вроде "and then miracle occurs" как в других пейперах :)
хочу заметить, что тем не менее в твоем пейпере "чудеса" встречаются значительно чаще:)
и понять что либо с нуля вряд ли можно)
мое имхо (ничего личного): нужно подучить матчасть, прежде чем писать что то с такими выкладками.
tikka
Опять двадцать пять :) Вы тут уже три страницы наворотили, откуда ты взял чудеса-то? Чудеса это в пейперах, когда за аксиому берется Fc = J^T * lambda и внезапно появляется стабилизация. В статье есть нестыковки, они в данный момент на повестке (реальная мутность действительно есть, это вышеописанный SoRRoW косяк с дифференцированием). Если ты все про slackness - так решая LCP, ты решаешь сразу с учетом этого - и где ты тут увидел чудеса - мне не понятно.
Лично для меня самое большое чуда это градиент и матрица якоби через df / dx :)
Что ни говори а это просто жээээээээээсць:)
не ну серьезно. Если бы это читал более менее адекватный математик (или хотя бы физик), он бы уже после этого ляпа приравнял ценность сией бумаги к туалетной.
извини конечно:) ничего личного:)
>>реальная мутность действительно есть, это вышеописанный SoRRoW косяк с дифференцированием
который именно ты имеешь ввиду? я постарался все объяснить вроде.
tikka
> Если бы это читал более менее адекватный математик
Если бы действительно адекватный - он бы точно не стал так реагировать. Я не говорил что обозначение некорректно, я всего лишь сказал что стоит поправить на более принятое. Вот ссылка навскидку, если тебя не устроила вики.
> который именно ты имеешь ввиду? я постарался все объяснить вроде.
Я пока не читал что ты написал, я просто указал на реально мутное место.
>>Вот ссылка навскидку, если тебя не устроила вики.
ну там все нормально же:)
tikka
>>Тут дело в том что что мы рассматриваем бесконечно малые промежутки времени. В момент когда происоходит удар, возникают >>lambda реакции и Fc, как только тело отодвигается на бесконечно малый промежуток и выходит из контакта lambda пропадают. >>То есть Fc как бы были но работы никакой не сделали, потому что путь пройденый телом стремится к 0.
>>Из за дискретизации тела все же проникают друг в друга, и Fc реально совершают работу.
Мне кажется, что это ничего не объясняет. Проблема, которая меня тревожит, сохраняется и в случае 0 времени работы сил реакций. Тупо из формулы, Fc зависит от лямбд, лямбды зависят от скорости, сдвиг выражается через скорость. При этом по предпосылке об идеальности dFc/dr = 0, нет зависимости между силой реакции и сдвигом. Хотя мне кажется, что противоречие убирается так, что работа зависит от сдвига и сил реакций, а сами силы реакции и сдвиг независимы друг от друга. Т.е. в точке, где работа минимально, через условие минимальности работы возникает связь между сдвигом и и силами реакций, а без этого ограничения они себе вполне независимы в любой точке. Так ведь?
>>Кстати, именно поэтому аппроксимация тейлором выглядит не обосенованней чем дифференцирование и стабилизация. Если >>рассмотреть последовательности моментов интегрирования и устремить dt к 0, то получим что удовлетворение ограничеям на >>скорости достаточно для того что бы не сойти с решения (при условии что мы стояли на нем вначале). Вот если рассмотреть >>произвольную функцию и потребовать ее минимизацию однократно, то тогда да, удовлетворять условиям на позиции нужно. А >>с тейлором мы все равно точно на решение попадать не будем. К тому же стабилизация дает обоснованное право настраивать >>bias.
Слушай, ну почитай внимательнее, что я тебе писал выше. Я ввожу тейлора не потому, что беру оттуда стабилизацию. Да, у Экспы есть константный член c(0) там, но я говорю - пусть связи будут выполнены на начало кадра и пусть этот член обратится в 0. Никакой стабилизации не будет, и ты потом ее можешь ввести, как хочешь. Более того, мне кажется, что результат будет совершенно одинаковый если ты возьмешь тейлора до 1 производной в котором будет нулевой константный член или просто продифференцируешь один раз. Почему я именно настаиваю на том, что это тейлор а не просто переход к производной? Да потому, что мне, например, не известен легальный способ перехода от условий в функциях к условиям в их производных внутри условий ККТ. С чего ты взял, что если произвольную функцию продифференцируешь, то, например, условие Complementary slackness, переписанное с производными вместо исходных функций, не потеряет математического смысла? Чтобы избежать этого, я произношу мантру, что я заменяю функцию ан ее приближение рядом тейлора, что вполне правомерно и ничего не сломает. По факту же я, как и ты, просто дифференцирую. Но я это обосновываю, а ты просто дифференцируешь.
>>сi >= 0, lambda_i >= 0, и значит удовлетворение Complementary slackness равнозначно:
>>ci_t * lambda_i = 0
>>или
>>lambda_i_t * ci = 0
>>(ci, lambda_i - вектор столбецы)
>>Из последнего уравнения стати (там есть не точность но что бы покаать принцип не важно):
>>M * lambda >= k =>
>>ci = M * lambda - k
>>теперь возмем dot product ci и lambda:
>>lambda_t * (M * lambda - k) =>
>>lambda_t * M * lambda - lambda_t * k
>>квадратичная форма вылазит из члена: lambda_t * M * lambda
>>даже если удовлетворять Complementary slackness покоординатно всерано будет нелинейная система.
Ну это не какая-то отдельная квадратичная форма, это и есть условие LCP. В твоих выражениях, w = M * lambda - * k будет как раз slack variable, и lambda * w = 0 - условие дополнительности самой LCP уже. Да, тебе правильно почудилась тут квадрфтичная форма - решение LCP тождественно поиску минимума квадратичной формы с ограничениями, есть такая теорема и такой подход. Но это не какая-то отдельная задача, а часть формулировки LCP. LCP же это w = Ax- b; x >=0; w >= 0, x* w = 0. Тут x * w = xAx - xb - квадратичная форма. Так что тут нет проблемы.
>>Сложилось ощущение, что вам просто неудобно оттого что надо что то выбирать, постулировать вначале, и вы прикрыли эту >>"дыру", принципом даламбера, котрый как бы black-box и делает это за вас. Ну ладно, дело ваше.
Зачем что-то еще постулировать, когда есть этот злосчастный принцип, по которому работа ноль, и мы ее и устремляем радостно в минимум, наслушавшись этого принципа. Чего тут лишнего? Как бы ты сформулировал обоснование задаче минимизации как таковой?
>>мое имхо (ничего личного): нужно подучить матчасть, прежде чем писать что то с такими выкладками.
Ну ведь обижаешь. В этой узкой теме мало кто рубит глубже нас, и ты нас отправляешь учить матчасть! Ну вообще уже!
ну вы, блин, упорные ребята
>>Ну это не какая-то отдельная квадратичная форма, это и есть условие LCP.
Признаю, мой фэйл:) чета затупил:)
>>Зачем что-то еще постулировать, когда есть этот злосчастный принцип, по которому работа ноль, и мы ее и устремляем радостно в минимум, наслушавшись этого принципа. Чего тут лишнего? Как бы ты сформулировал обоснование задаче минимизации как таковой?
Я бы сформулировал примерно так. В нашей модели рассматриваем только идеальные ограничения, т.е. те которые не совершают работы. Рассмотрим произвольное положение системы x0 в котором действуют силы реакций. Работа совершаемая силами реакции при любом перемещении системы из этого положения выражается:
A(x) = Fc * (x - x0)
Здесь x - абсолютно произвольное положение, а не какое то разрешенное.
Требуем от реакций не совершать работы. Найдем минимум A(x) с помощью Метода множителей Лагранжа:
grad(L(x, lambda)) = grad(A(x)) - Ji_t * lambda_i - Je_t * lambda_e = 0
ну и так далее.
Исходя из произвольности выбора x0 условие идеальности выполняется всегда, и наша модель непротиворечива.
>>Я ввожу тейлора не потому, что беру оттуда стабилизацию.
Это я понял. Просто отметил что она вводится сама собой если оставить первый член.
>>у Экспы есть константный член c(0) там, но я говорю - пусть связи будут выполнены на начало кадра и пусть этот член обратится в 0. Никакой стабилизации не будет, и ты потом ее можешь ввести, как хочешь.
Нет после первого кадра автоматически появится стабилизация, потому что из за погрешности приближения мы не попадем на решение. И нулевой член c(0) станет ненулевым - стабилизирующим.
>>С чего ты взял, что если произвольную функцию продифференцируешь, то, например, условие Complementary slackness, переписанное с производными вместо исходных функций, не потеряет математического смысла?
Я предполагаю что условие Complementary slackness достаточно гладкое и если я буду шагать по производной то не буду сильно отклонятся.
А тебя не беспокоит, что разложение в ряд Тейлора до 1 члена совсем не гарантирует тебе удовлетворения условий? Ты же тоже ничего не знаешь про функцию, вдуг она через миллисекунду ускачет неизвестно куда?
На остальное отвечу завтра ибо хочу спать, а там надо вдумываться:)
Мысль появилась пока шел в кровать.
Вот что такое ряд Тейлора? С каждым новым членом мы все более и более приближаем функцию в некоторой окрестности. Для простоты рассмотрю f(x) = y в точке x0:
0 член апроксимирует функцию прямой y = f(x0), паралельной OX
1 член аппроксимирует касательной касающейся функции в x0
2 член уже дает некоторое искривление
и так далее, аппроксимация по характеру искривления все более приближается к функции.
То что делаешь ты раскладывая в ряд до первого члена - точно также, как и чуваки в пейперах, шагаешь по касательной. Это так очевидно, что народ даже не задумывается наверно.
Так что ряд Тейлора это не какой то black - box, типа подставил в формулы и будет тебе точное решение.
>> Тупо из формулы, Fc зависит от лямбд, лямбды зависят от скорости, сдвиг выражается через скорость.
Во первых зависимость от лямбд скорости появляется в следствии дискретизации, и говорить этом в контексте мгновенных условий некорректно. Лучше рассматривать взаимосвязь лямд и ускорения.
>> Т.е. в точке, где работа минимально, через условие минимальности работы возникает связь между сдвигом и и силами реакций, а без этого ограничения они себе вполне независимы в любой точке. Так ведь?
хм. Что то не так мне представляется. Попробую уточнить. Возможно вас путает то, что вы отождествляете отсутствие функциональной зависимости с взаимосвязью F * dR = 0 ??
>>Fc зависит от лямбд
lambda(t) = f3(Fc(t)) - зависимость функциональная, Fc(t) выражается через lambda(t) и наоборот
>>лямбды зависят от скорости
заменим на acceleration(t) = f2(lambda(t))
>>сдвиг выражается через скорость
dr(t) = Integral(Integral(acceleration(s))) = f1(t, acceleration(s)) - зависимость функциональная
Получается dr(t) = f1(t, f2(f3(Fc(s))))
то есть в dr(t) = f(t, Fc(s)) так что функциональная зависимость между Fс и dr вполне себе есть и законна. Причем в любой момент времени.
А вот ограничение Fс * dr = 0 вовсе не означает что что между Fc и dr нет зависимости. Это просто ограничение на уже существующую функциональную зависимость Fc и dr. Говоря проще существует бесконечное множество способов связать Fc и dr, минимизация сужает это множество до такого, где выполняется Fс * dr = 0.
UPD: Возможно вас все еще будет смущать наличие такой зависимости, потому что казалось бы перемещения никак не выражаются через силы. Фокус в том что функции разные бывают, не только непрерывные (для примера, функция Дирихле). И наша зависимость сложная: на всем множестве точек контакта Fc := f(от чего то там), во всех остальных точках Fc := 0. Причем множество точек контакта устроено таким образом, что, если перемещаться не выходя за его границы, то перемещения ортогональны реакциям.
Далее, вы возможно возразите и скажете: "вот в какой то момент кубик находится в контакте со стеной A, далее он отскакивает к стене Б, казалось после перемещения мы остались на множестве контакта, но переместились не ортогонально Fc???"
Заранее отвечаю: пока кубик перемещался он вышел из множества точек контакта. Нужно что бы вся линия перемещения состояла полностью из точек контакта. Если там есть точки не из множества контакта Fc на них равно 0.
Далее, еще по Тейлору. Ряд Тэйлора это не какой то универсальный инструмент, который всегда работает. Это проосто формализация законов природы. А законы таковы что любую функцию в точке можно приближать рядом из производных. Тэйлор просто изложил эту закономерность в своей формуле. Вы же пользуясь формулой совершенной забываете, о том как она работает. Для вас формула Тэйлора, это тот же black-box (как и даламбер). Она за вас подставляет производные, и вам как бы не нужно беспокоиться и задумываться над законами природы.
Фухх, ну вроде все красиво расписал:)
Тема в архиве.