LINUX.ORG.RU

Таблица умножения для СС с основанием e

 ,


2

2

Сабж. Нужно выводить таблицу умножения для всех систем счисления, включая СС с основанием e. ЯП: C++

Гуглил про СС с нецелым основанием, инфы либо нет, либо она не по теме (или я не могу её адаптировать?).

План: иметь функцию для перевода в десятичную и обратно (чтобы производить умножение в десятичной), иметь список с числами, по которым производить умножение (для десятичной это, к примеру, 1,2,3,4,5,6,7,8,9). И если для десятичной, двоичной, восьми… и т. д. вопрос ясен, но СС с основанием e — я даже не знаю с чего начать.

Подсобите, принимаются: вопросы, советы, готовые решения, отправления читать что-то со ссылками на это что-то.

UPD: Решил вот так http://storage4.static.itmages.ru/i/15/0407/h_1428441687_1801990_984cd44287.png http://storage4.static.itmages.ru/i/15/0407/h_1428441687_5083396_5c9088a043.png

UPD2: Репа https://github.com/RussianBruteForce/Multiplication-Table

★★★

Последнее исправление: BruteForce (всего исправлений: 3)

Какой замечательный бред, наверняка в институте придумали.

А можно тогда начать с определений? Что такое таблица умножения для системы с основанием β?

Олсо https://en.wikipedia.org/wiki/Non-integer_representation

И да, С++ тут только при том, что сабж нужен для обучения ему?

asaw ★★★★★
()
Последнее исправление: asaw (всего исправлений: 1)
Ответ на: комментарий от asaw

наверняка в институте придумали.

Так точно, преподу не понравилось, что я слишком легко пишу его лабы из методички.

Что такое таблица умножения для системы с основанием β?

Неизвестно, это же преподаватель в ВУЗе, а не заказчик с ТЗ.

Ну, для целых могу представить, это матрица 1 строка и столбец которых список от 1 до ближайшего целого < основания CC. А вот для нецелых? Точность нужна до 4 знака, и, т.к. СС с дробным основанием, то можно подумать, что это то же самое, но список от 0.0001 до 2.7183.

И да, С++ тут только при том, что сабж нужен для обучения ему?

Он нужен для сдачи на нём преподу.

BruteForce ★★★
() автор топика
Последнее исправление: BruteForce (всего исправлений: 2)

но СС с основанием e — я даже не знаю с чего начать

Там всё то же самое. Ну т.е. в из десятичной в двоичную - делишь на 2. А тут делишь на e. Понятное дело, что в системе по основанию е целыми будут числа которые в десятичной системе - иррацинальные. Поэтому ты не сможешь точно переводить из 10 в е и обратно, но наверное препод этого и не имел в виду.

А вообще я не понимаю, зачем тебе что-то куда-то переводить, если можно фигачить сразу в нужно системе счисления?

no-such-file ★★★★★
()
Ответ на: комментарий от BruteForce

т.к. СС с дробным основанием, то можно подумать, что это то же самое, но список от 0.0001 до 2.7183.

Нет, по информации по моей ссылке это 0, 1 и 2.

asaw ★★★★★
()
Ответ на: комментарий от no-such-file

А вообще я не понимаю, зачем тебе что-то куда-то переводить, если можно фигачить сразу в нужно системе счисления?

надо будет писать ф-ю умножения....

BruteForce ★★★
() автор топика
Ответ на: комментарий от melkor217

По идее, коэффициенты тоже иррациональны

Как ты запишешь иррациональные коэффициенты, если систему счисления ты ещё не родил?

asaw ★★★★★
()
Ответ на: комментарий от BruteForce

надо будет писать ф-ю умножения...

И в чём сложность написать функцию умножения полиномов которыми представлены числа в данной системе счисления?

no-such-file ★★★★★
()
Ответ на: комментарий от melkor217

коэффициенты тоже иррациональны

Нет, коэффициенты целые. Это цифры в данной СС. Для системы по основанию e цифры 0,1,2.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Не парится короче и всегда выводить таблицу от 1 до 16 для всех СС)

Спрсоит: 2х2 в двоичной? 4! 5х5 в етичной? 25!)))

BruteForce ★★★
() автор топика
Ответ на: комментарий от BruteForce

5х5 в етичной? 25!)))

Не, ну 5 точно не может быть. А вот использовать иероглифы в качестве алфавита для этой системы попробовать можно)

asaw ★★★★★
()
Ответ на: комментарий от no-such-file

почему нет? если записывать не 0 и 1, а 1 и 2, остальное тоже самое

это же просто условность

Deleted
()
Ответ на: комментарий от Deleted

это же просто условность

Нет не просто, это к-ты полинома. 1 и 2 не проканают.

no-such-file ★★★★★
()
Ответ на: комментарий от asaw

Как ты запишешь иррациональные коэффициенты, если систему счисления ты ещё не родил?

Один хрен нужно хранить в бинарной системе числа из -e..e

melkor217 ★★★★★
()
Ответ на: комментарий от no-such-file

Нет, коэффициенты целые

Ну, это сильно упрощает жизнь.

melkor217 ★★★★★
()

Я бы плюнул преподу в морду. Ну или пусть литературой снабжает по тому, что он хочет. Это его обязанность

anonymous
()
Ответ на: комментарий от melkor217

Нет, ты говоришь, что твои k₁, k₂ и т.д. - иррациональные числа, зачем тогда у тебя там степени e? Какой смысл делать k₁, k₂ и т.д. иррациональными, если у тебя конечный алфавит? А бесконечный алфавит для системы счисления - это вообще что-то непостижимое.

asaw ★★★★★
()

требую ввести тэг студенческий_сипипи
можно назвать cin_cout

печально всё это конечно... так скоро индусы с китайцами научатся. а передовое образование всё там же будет - вперде.

mos ★★☆☆☆
()

В общем, я бы определил таблицу умножения как множество уникальных комбинаций всех символов алфавита для данной системы с операцией произведения. А результат записывал бы как в алфавите этой системы счисления, так и в десятичной. При этом под системой счисления с основанием e считал бы то, что написано у меня по ссылке. На этом ребус с постановкой задачи можно считать разгаданным. А реализация - дело техники.

ЗЫ и вот специально взял бы в качестве алфавита для этой 2.71банутой системы счисления иероглифы.

asaw ★★★★★
()
Ответ на: комментарий от mos

печально всё это конечно... так скоро индусы с китайцами научатся. а передовое образование всё там же будет - вперде.

Да. Я второкурсникам тут объясняю что такое классы и наследование, а ведь они уже сдали: 1 семестр Си, 2 семестра Си++, 1 семестр Асм и сейчас проходят до-диез и дотнет...

BruteForce ★★★
() автор топика
Последнее исправление: BruteForce (всего исправлений: 1)
Ответ на: комментарий от anonymous

И как мне представить число 1.5 e?

К.О. подсказывает, что это будет иррациональная дробь, т.е. выводить «таблицу» можно будет только приблизительно, с заранее заданным количеством знаков после запятой. Тут выше таблицы тов. Брадиса уже упоминали, я тоже считаю, что будет похоже.

hobbit ★★★★★
()
Ответ на: комментарий от asaw

Кстати, довольно таки элементарно.

Пусть у нас будет упорядоченное множетсво, назавём его алфавитом.

Определим первый эемент, как нейтральный, пусть это будтет 0

Определим операцию +1, которая возвращает следующий элемент последовательности.

Далее определим рекурсивно сложение:

  • +: 0, x → x
  • +: n+1, x → +(n, x) +1

Умножение выводится аналогично.

PS: надеюсь ничего не попутал, матан давно был. ;)

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 1)

Второе, что подсказывает К.О. - ТСу нужно начать с написания функции перевода double в строку исходя из СС с нецелым основанием. И обратно.

Когда сей матан будет запилен, таблица сведётся к тривиальному вложенному циклу.

иметь функцию для перевода в десятичную и обратно (чтобы производить умножение в десятичной)

Не-не. Что значит производить умножение в десятичной? Умножение можно и нужно производить средствами языка над двоичными вещественными числами. С точки зрения ЯП, «число в системе счисления» - это строка. Поэтому сначала для каждой пары N*M эти N и M переводятся из циферок-строк в число (это относительно несложно, тот самый полином, куда вместо x подставляется основание СС), потом они обычным образом перемножаются, и финальный этап - перевод произведения обратно в строку с заданными основанием СС и количества знаков. Финальный этап самый алгоритмически трудный, но думаю, здесь вполне можно обобщить алгоритм для целого основания.

Что имеет смысл уточнить у препода:

- диапазоны N и M. Но в принципе, если таблица должна быть аналогом обычной тетрадочной, то 0 < N < radix и 0 < M < radix, где radix - основание;

Минимальное и максимальное значение этого самого radix. А то непонятно, как обозначать цифры, если radix>36. А если ещё отрицательное основание придумать... ооо...

hobbit ★★★★★
()
Ответ на: комментарий от BruteForce

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

Ну что значит «не понравилось»... Он ведь это, наверное задал как лабу, курсовую или что-то? Я, помнится, тоже 27 лет назад на 2 курсе по Фортрану решал не совсем тривиальную задачу по индивидуальному заданию, но она была честно оформлена как курсач.

Вот, наверное, в текстовой части курсача можно и оговорить принятые решения. Я бы, например, как минимум постарался бы договориться об ограничении 0 < radix < 36, чтобы визуализация ограничивалась арабскими цифрами и латинскими буквами. Большие основания оставим знатокам японского. Хотя... у вавилонян, кажется, основание было равно 60.

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от beastie

Если кому интересно: запилил простенькую релазацию, демонстрирующию вышесказанное.

От туда можно уже и табицу умножения ботать. ;)

PS: когда-то была ещё более красивая реализация на scheme, но я её потерял.

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 1)

Книга «Алгоритмические трюки для программиста» вам в помощь! Там есть про системы счисления с нецелым основанием.

anonymous
()
Ответ на: комментарий от asaw

когда основание системы счисления иррационально, особой разницы-то и нет

melkor217 ★★★★★
()

1. прочитай про p-адические числа (например, здесь или здесь). bonus track: найди ошибку самостоятельно в статье про «многоэтажные поля» и исправь её.

и представь число не в виде суммы степеней простых p, как в p-адических, а в виде суммы степеней e.

2. ещё идея: про гиперкомплексные, обобщения комплексных (2) на кватернионы (4), октонионы(8) и т.п. или с другими комплексными единицами, с нарушениями ассоциативности (паракомплексные, бикомплексные, двойственные и т.п.)

гугли tau-manifesto.pdf про то, что «число pi — неправильная константа, а вот число tau = 2*pi — гораздо более правильная».

формула Эйлера в тау выглядит как e^(i*tau) = 1+0 — фундаментальное соотношение, связывающее 0,+ ; 1,*; i,*; e^(..), e; и число Пи тау.

далее, вырази (гипер)комплексные числа через формулу Эйлера. далее, вырази таблицу умножения через формулы Эйлера и формулу Муавра.

алсо, есть некоторое забавное соотношение про ненулевые делители нуля (в тех гиперкомплексных алгебрах, где такие возможны): если разложить число из базиса (1,i) или (tau,i) в базис ненулевых делителей нуля a=1*a11+i*a12=(в другом базисе)= S_{+}*a_21 + S_{-}*a_22 , то в таком базисе a^n=(S_{+}*a_21 + S_{-}*a_22 )^n=a_21^n*S_{+}+a_22*S_{-}

(отсюда, 3. ; вообще по гиперкомплексным см. ссылки)

алсо, в октонионах получается много самых разных забавных таблиц умножения

то есть, направление поисков:

1. найти подходящую форму выражения: типа p-адических или типа гиперкомплексных

2. найти подходящий базис, если есть ненулевые делители нуля

3. найти подходящую комплексную единицу (См. классификатор гиперкомплексных)

вот, в голову пришло.

anonymous
()
Ответ на: комментарий от anonymous

И как мне представить число 1.5 e?

как комплексное: A*e^(i*phi), i*phi = 0, A=1.5

anonymous
()
Ответ на: комментарий от asaw

Что такое таблица умножения для системы с основанием β?

давай лучше дзета, гамма-функцию возьмём ;-)

anonymous
()
Ответ на: комментарий от anonymous

формула Эйлера в тау выглядит как e^(i*tau) = 1+0 — фундаментальное соотношение, связывающее 0,+ ; 1,*; i,*; e^(..), e; и число Пи тау.

кстати, народ: я правильно понимаю, что из этого соотношения e^(i*tau)=1=e^0 следует, что i*tau=0 или что i,tau — ненулевые делители нуля в какой-то алгебре ??? то есть когда в формулах появляется вычет или интеграл делённый на 2*pi*i — мы в этой алгебре делим на ноль ??? странно, вроде бы делить на ноль или на его делители (ненулевые делители нуля: i, tau) нельзя же ???

anonymous
()
Ответ на: комментарий от anonymous

division sub-zero

кто-нибудь может пояснить вот этот манифезд подробнее вот в этом месте:

Кроме упомянутых есть и другие гиперкомплексные числа и их много. Например 2 компоненты содержат не только комплексные, но и дуальные и паракомплексные (двойные) числа. Эти числа имеют более экзотические свойства, чем мы привыкли, в частности паракомплексные числа содержат делители нуля. Это означает, что процессор должен поддерживать операцию деления на ноль. <...> Деление на ноль - это не ошибка.

в остальном выглядит вполне разумно, что «не ошибка» — это тоже понятно. не понятно, как он сами делители будет считать, разлагать произведение на делители.

anonymous
()
Ответ на: комментарий от asaw

А бесконечный алфавит для системы счисления - это вообще что-то непостижимое.

множество всех слов языка (когда синтетический язык, можно создавать новые слова), множество переводов с языка на язык — получаются бесконечные алфавиты.

anonymous
()

алсо, что интересно: в гиперкомплексных же A*e^(i*phi) * B*e^(i*theta) — умножение это поворот одного числа на другое.

то есть, тогда «разложение по степеням e» это будет фрактальчик как последовательность поворотов. опять же, полный круг — это поворот на тау, то есть что там с периодичностью этого вот разложения, интересно будет. то есть, степени e получаются расклавдываются как диофантовы по периодичности тау (или 2*pi если кому так привычнее).

anonymous
()
Ответ на: комментарий от anonymous

e^(i*tau)=1=e^0

собственно, первый член в разложении для таблицы умножения: k вещественное =k*e^(i*tau) = k_0*e^(i*tau=0) + k_1*e^(e^(i*tau)=1) + k_2*e^(k_1*e^(e^(i*tau)=1)) + k_3*...

далее и т.п. как для p-адических

anonymous
()
Ответ на: комментарий от anonymous

то есть, понял? умножения это повороты, а сложения — это параллельные переносы. выходит, любое вещественное раскладывается в композицию комплексных с поворотами и переносами (также, как p-адическое представимо как многочлен с степенями простых чисел)

anonymous
()
Ответ на: комментарий от anonymous

опечатка

=a_21^n*S_{+}+a_22*S_{-}

=a_21^n*S_{+}+a_22^n*S_{-}

anonymous
()
Ответ на: комментарий от anonymous

...k_3 k_2 k_1 k_0 — это цифры в e-основании.

anonymous
()
Ответ на: комментарий от anonymous

Слова в данном случае - просто числа, так что это уже несколько тавтология.

asaw ★★★★★
()
Ответ на: комментарий от BruteForce

Выглядит весьма странно. Хотя бы тем, что 0*0 должно давать 0 (ноль - это такая специальная штука, которая не зависит от системы счисления). И кто такие все эти цифры? 6.581 - явно не e²₁₀.

asaw ★★★★★
()
Ответ на: комментарий от asaw

Арабским))) Ну чиселки в заголовке переводятся в етичную тоже… https://github.com/RussianBruteForce/Multiplication-Table/blob/master/mtmodel.cpp#L85

UPD: Упс, наоборот, в десятичное представлние.

BruteForce ★★★
() автор топика
Последнее исправление: BruteForce (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.