Re: Я не тормоз...
От: Шахтер Интернет  
Дата: 18.06.05 04:01
Оценка: 321 (16)
Здравствуйте, McSeem2, Вы писали:

MS>Просто торможу как удав по песку.


MS>Сейчас я вас насмешу. Есть такой простейший код:

MS>
MS>f   += df;
MS>df  += ddf;
MS>ddf += dddf;
MS>


MS>Допустим, что он выполняется 2 раза. Надо написать код, дающий результат, эквивалентный выполнению приведенного кода дважды, но тоже в три выражения, а не в шесть. На самом деле все сложнее. Вместо 2 может быть некое K, необязательно целое. Может быть как меньше единицы, так и больше. И может быть отрицательным, что эквивалентно откату назад.


1) Прежде всего, сведем аффинную задачу к линейной, добавив

dddf+=0;


2) Заметим, что все операции можно сгруппировать в одну векторную (здесь важен порядок исходных операций)

(f,df,ddf,dddf)+=(df,ddf,dddf,0);


3) Иными словами,

(f,df,ddf,dddf) = (I+N) (f,df,ddf,dddf)


Здесь I -- единичная матрица, N -- нильпотентная.

N(f,df,ddf,dddf) = (df,ddf,dddf,0)

N^4 = 0


4) Говоря математическим языком, автор хочет возвести I+N в некоторую вещественную степень, не обязательно целую положительную (композиция отображений соотвествует умножению матриц).

5) Список желаемых свойств такой степени F(x) состоит из:

a) F(0) = I
b) F(1) = I+N
c) F(x+y) = F(x) * F(y)
d) F(x) непрерывна


6) Такая функция называется однопараметрической подгруппой группы матриц ( 4 порядка в нашем случае, GL(R,4) ) (условие нормировки b) в общем случае исключается, естественно).

7) Вспоминая теорию групп Ли, выводим, что F(x) = exp(L*x), где L -- некоторая матрица.

8) Матрица L может быть найдена из условий нормировки b),

exp(L) = I+N


9) Данное уравнение имеет единственное решение, причина -- в нильпотентности матрицы N.

10) Собственно говоря, решение находится подстановкой N в ряд для логарифма,

L = N - (N^2)/2 + (N^3)/3 (остальные члены равны нулю)


L^4 = 0

exp(L*x) = I + L*x/1 + (L^2)*(x^2)/2! + (L^3)*(x^3)/3! (остальные члены равны нулю)


11) Вспомним ещё бином Ньютона.

exp(L*x) = (I+N)^x (для целых положительных x) 
         = I + C(x,1) * N + C(x,2) * N^2 + C(x,3) * N^3 (хорошая штука -- нильпотентность, остальные члены опять равны нулю)

C(x,1) = x
C(x,2) = (x*(x-1))/2
C(x,3) = (x*(x-1)*(x-2))/6


Эта формула справедлива и в общем случае. Просто потому, что два многочлена, совпадающих на бесконечном множестве точек, тождественно равны.

12) Очко! (Т.е. дюжина ).

op(x) : (f,df,ddf,dddf) -> (f+C(x,1)*df+C(x,2)*ddf+C(x,3)*dddf,df+C(x,1)*ddf+C(x,2)*dddf,ddf+C(x,1)*dddf,dddf)
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.