2015-10-26 2 views
3

Давайте приведем выражения некоторые имена:Какая математическая операция возникает после возведения в степень (^)?

x+3 = x+1+1+1 // lvl 1 
x*3 = x+x+x // lvl 2 
x^3 = x*x*x // lvl 3 

Что бы математическая термин/настоящее имя/тема для лвл с после 3?

Как:

x (lvl 4 operation) 3 = x^x^x 
x (lvl 5 operation) 3 = x(lvl 4 operation)x(lvl 4 operation)x 
.. 

Спасибо заранее.

P.S. Выше не являются коды программирования/языки

+4

Как это проблема Haskell? –

+4

Проверьте исходный три аргумента [функция Аккермана] (https://en.wikipedia.org/wiki/Ackermann_function)! – pigworker

+0

как примечание 'n! ~ n^n' – Lol4t0

ответ

11

Tetration является следующим hyperoperator после возведения в степень. Оператор отмечен как ↑↑ - или ^^ в ASCII - после Knuth's notation.

Следующая операция в последовательности pentation, затем hexation, гептация, октатация и т. Д. Ackermann's three-argument function рассчитывает эти операции рекурсивно.

╭────────┬────────────────┬─────────────┬───────────────────╮ 
│ Level │  Name  │ Notation │ Ackermann (3-arg) │ 
╞════════╪════════════════╪═════════════╪═══════════════════╡ 
│ 1 │ Successor │ a++ (unary) │ φ(a, 1, 0)  │ 
│ 2 │ Addition  │ a+b   │ φ(a, b, 0)  │ 
│ 3 │ Multiplication │ a×b   │ φ(a, b, 1)  │ 
│ 4 │ Exponentiation │ a↑b   │ φ(a, b, 2)  │ 
│ 5 │ Pentation │ a↑↑b  │ φ(a, b, 3)  │ 
│ 6 │ Hexation  │ a↑↑↑b  │ φ(a, b, 4)  │ 
│ 7 │ Heptation │ a↑↑↑↑b  │ φ(a, b, 5)  │ 
│ 8 │ Octation  │ a↑↑↑↑↑b  │ φ(a, b, 6)  │ 
╰────────┴────────────────┴─────────────┴───────────────────╯ 
3

На самом деле нет каких-либо общих операций за пределами возведения в степень (в основном из-за отсутствия необходимости). Одним из возможных расширений является tetration, что аббревиатура стека экспонентов с одинаковым значением. Вкратце (с использованием Knuth's up-arrow notation

a ^^ 1 = a 
a ^^ n = a^(a^^(n-1)) 
     = a^a^...^a (n items) 

Стрелок вверх обозначение может сами по себе быть уложены с a^^^a быть стопкой a сек a^^a высоких, a^^^^a стек a^^^a высокого, и т.д. (Числа создаваемых комически большие; чтения около Graham's number, чтобы узнать, насколько большой номер вы можете построить.)

3

Один из способов сделать этот вопрос Haskell заключается в том, чтобы установить задачу реализации функции Акермана (в зависимости от версии) с точки зрения «параметризма» для естественного номера, представленные здесь через Integer, и никакой другой формы рекурсии.

paraNat :: t -> ((Integer, t) -> t) -> Integer -> t 
paraNat base step n | n > 0 = step (m, paraNat base step m) where m = n - 1 
paraNat base step _   = base 

Это хорошо известный факт, что «paramorphism» соответствует «примитивной рекурсии», и это еще один хорошо известный факт, что функция Аккермана не в классе «примитивно рекурсивных функций». И все же проблема имеет решение. Подразумевается, что paraNat является полиморфным по типу возврата t, тогда как класс «примитивных функций возврата» фиксирует t как натуральные числа.

(я понимаю, что это прикосновение неортодоксального, чтобы ответить на вопрос, излагая вопрос, но я надеюсь, что это интересно в любом случае. Я удалю этот ответ, если народные считают, что это проблематично.)

+0

смешно, но сегодня я изобрел чистую копию функции Аккермана, и это заставило меня задуматься, действительно ли оно существовало до ; d Haskell полностью равно любви –

+0

Вы также можете сделать это без полиморфизма. – augustss

Смежные вопросы