Но к комплексным числам это не имеет никакого отношения, даже по аналоги. Чисел (действительных) являющихся решением уравнения x^2 + 1 = 0 не существует, мы вводим «другие» числа, в которых оно имеет решение. Действительные и мнимые числа нигде не порождают противоречий, поэтому их можно использовать «совместно». Уравнение x^2 = 0 имеет решение в действительных числах x=0, при введении «дуальных» чисел оно имеет решение и в них x=d.
В коде, по-моему, (в том числе и для C++) видно, что нигде не применяется условие d^=0. «Просто» эмулируются символьные вычисления, т.е. не производится «умножение/сложение» на d, до этапа вычисление второго коэффициента в разложении Тейлора, т.е. первой производной, остальные просто игнорируются. И похоже у функциональных языков здесь явное преимущество именно в предварительной оптимизации, и как мне кажется, в данном случае, отсечение/сокращение лишних вычислений (шаблоны в C++ в таком применении выглядят как костыль).
Аналогичным методом можно ввести (n+1)-арные (раз эти дуальные) числа, т.е. не вычислять d, d^2, d^3,...,d^n, и соответственно получить n-ю производную (учитывая конечно дополнительные множители в коэффициентах).
n-арное число в данном рассмотрении по сути и есть набор коэффициентов разложения Тейлора. Т. е. коэффициентов при d^0, d^1, (1/2)*d^2, (1/6)*d^3,...,(1/(n!)*d^n.
Для константы a это будет: (a,0,0,...,0).
Для x: (x,1,0,0,...,0).
Для x^2: (x^2,2*x,2,0,0,...).
Для sin(x): (sin(x), cos(x),-sin(x),...).
И т.д.
По-моему, так и работают системы символьных вычислений.
В данном посте рассматриваются два первых коэффициента. И применяется «рекурсивное» вычисление n-ой производной. (А введение d^2=0, по-моему бред сивой кобылы).
В общем, спасибо за наводку, поразмышляю над этим на досуге.
n-арное число в данном рассмотрении по сути и есть набор коэффициентов разложения Тейлора. Т. е. коэффициентов при d^0, d^1, (1/2)*d^2, (1/6)*d^3,...,(1/(n!)*d^n.
Для константы a это будет: (a,0,0,...,0).
Для x: (x,1,0,0,...,0).
Для x^2: (x^2,2*x,2,0,0,...).
Для sin(x): (sin(x), cos(x),-sin(x),...).
И т.д.
По-моему, так и работают системы символьных вычислений.
В данном посте рассматриваются два первых коэффициента. И применяется «рекурсивное» вычисление n-ой производной. (А введение d^2=0, по-моему бред сивой кобылы).
В общем, спасибо за наводку, поразмышляю над этим на досуге.
Но к комплексным числам это не имеет никакого отношения, даже по аналоги. Чисел (действительных) являющихся решением уравнения x^2 + 1 = 0 не существует, мы вводим «другие» числа, в которых оно имеет решение. Действительные и мнимые числа нигде не порождают противоречий, поэтому их можно использовать «совместно». Уравнение x^2 = 0 имеет решение в действительных числах x=0, при введении «дуальных» чисел оно имеет решение и в них x=d.
В коде, по-моему, (в том числе и для C++) видно, что нигде не применяется условие d^=0. «Просто» эмулируются символьные вычисления, т.е. не производится «умножение/сложение» на d, до этапа вычисление второго коэффициента в разложении Тейлора, т.е. первой производной, остальные просто игнорируются. И похоже у функциональных языков здесь явное преимущество именно в предварительной оптимизации, и как мне кажется, в данном случае, отсечение/сокрашение лишних вычислений (шаблоны в C++ в таком применении выглядят как костыль).
Аналогичным методом можно ввести (n+1)-арные (раз эти дуальные) числа, т.е. не вычислять d, d^2, d^3,...,d^n, и соответственно получить n-ю производную (учитывая конечно дополнительные множители в коэффициентах).
Если «правильно» заточить карандаш и немного набить руку, можно писать в стиле «Comic Sans». По-этому, видимо, он и нравится детям — очень похож на рукописный.
Мало того, что есть стопитсот (около 7 наиболее распространённых, да еще и разные версии) браузеров (тоже кстати RIA), так еще будет и стопитсот всяких «и другие». Ух…
«Это упрощение конструкции позволило ему расширить свой ареал, т.е. с точки зрения отбора — стать более успешным», нет, не «ему» и не «позволило». Получился новый вид червей в новой среде обитания (довольно ограниченной по численности), и из-за общей деградации потерявший способность жить в среде предка (т.е. в двух разных средах). С изначальным видом ничего особого видимо не произошло и он продолжил эволюцию, и его численность наверняка в разы больше. В этом фишка расширения ареала среды обитания в данном случае.
Для облегчения этого процесса, полагаю, можно приминить фиьтрами сообщений по различным критериям, например: за период, по автору, по авторам входящим в определённую группу, по количеству ответов, сообщения в ответах на которые присутствую определённые авторы, по тегам, если ввести голосование (+1\-1\0), сообщения с наибольшим весом, банально наличию заданных слов, и т.д.
Но к комплексным числам это не имеет никакого отношения, даже по аналоги. Чисел (действительных) являющихся решением уравнения x^2 + 1 = 0 не существует, мы вводим «другие» числа, в которых оно имеет решение. Действительные и мнимые числа нигде не порождают противоречий, поэтому их можно использовать «совместно». Уравнение x^2 = 0 имеет решение в действительных числах x=0, при введении «дуальных» чисел оно имеет решение и в них x=d.
В коде, по-моему, (в том числе и для C++) видно, что нигде не применяется условие d^=0. «Просто» эмулируются символьные вычисления, т.е. не производится «умножение/сложение» на d, до этапа вычисление второго коэффициента в разложении Тейлора, т.е. первой производной, остальные просто игнорируются. И похоже у функциональных языков здесь явное преимущество именно в предварительной оптимизации, и как мне кажется, в данном случае, отсечение/сокращение лишних вычислений (шаблоны в C++ в таком применении выглядят как костыль).
Аналогичным методом можно ввести (n+1)-арные (раз эти дуальные) числа, т.е. не вычислять d, d^2, d^3,...,d^n, и соответственно получить n-ю производную (учитывая конечно дополнительные множители в коэффициентах).
n-арное число в данном рассмотрении по сути и есть набор коэффициентов разложения Тейлора. Т. е. коэффициентов при d^0, d^1, (1/2)*d^2, (1/6)*d^3,...,(1/(n!)*d^n.
Для константы a это будет: (a,0,0,...,0).
Для x: (x,1,0,0,...,0).
Для x^2: (x^2,2*x,2,0,0,...).
Для sin(x): (sin(x), cos(x),-sin(x),...).
И т.д.
По-моему, так и работают системы символьных вычислений.
В данном посте рассматриваются два первых коэффициента. И применяется «рекурсивное» вычисление n-ой производной. (А введение d^2=0, по-моему бред сивой кобылы).
В общем, спасибо за наводку, поразмышляю над этим на досуге.
n-арное число в данном рассмотрении по сути и есть набор коэффициентов разложения Тейлора. Т. е. коэффициентов при d^0, d^1, (1/2)*d^2, (1/6)*d^3,...,(1/(n!)*d^n.
Для константы a это будет: (a,0,0,...,0).
Для x: (x,1,0,0,...,0).
Для x^2: (x^2,2*x,2,0,0,...).
Для sin(x): (sin(x), cos(x),-sin(x),...).
И т.д.
По-моему, так и работают системы символьных вычислений.
В данном посте рассматриваются два первых коэффициента. И применяется «рекурсивное» вычисление n-ой производной. (А введение d^2=0, по-моему бред сивой кобылы).
В общем, спасибо за наводку, поразмышляю над этим на досуге.
Но к комплексным числам это не имеет никакого отношения, даже по аналоги. Чисел (действительных) являющихся решением уравнения x^2 + 1 = 0 не существует, мы вводим «другие» числа, в которых оно имеет решение. Действительные и мнимые числа нигде не порождают противоречий, поэтому их можно использовать «совместно». Уравнение x^2 = 0 имеет решение в действительных числах x=0, при введении «дуальных» чисел оно имеет решение и в них x=d.
В коде, по-моему, (в том числе и для C++) видно, что нигде не применяется условие d^=0. «Просто» эмулируются символьные вычисления, т.е. не производится «умножение/сложение» на d, до этапа вычисление второго коэффициента в разложении Тейлора, т.е. первой производной, остальные просто игнорируются. И похоже у функциональных языков здесь явное преимущество именно в предварительной оптимизации, и как мне кажется, в данном случае, отсечение/сокрашение лишних вычислений (шаблоны в C++ в таком применении выглядят как костыль).
Аналогичным методом можно ввести (n+1)-арные (раз эти дуальные) числа, т.е. не вычислять d, d^2, d^3,...,d^n, и соответственно получить n-ю производную (учитывая конечно дополнительные множители в коэффициентах).
P.S.: Мне кажется или дейстивительно здесь ошибка:
df(a: double): double
{
f(Dual(a,1)).Imaginary
}