Система Wolfram|Alpha - база знаний, которую также называют интеллектуальной машиной знаний, использует вычислительные интеллектуальные алгоритмы для поиска ответов на онлайн-запросы. Она была создана с помощью системы компьютерной математики Wolfram Mathematica. Система Wolfram|Alpha ищет ответы в своей базе знаний и в качестве ответа выдает как результаты вычислений, так и некоторые сведения из базы знаний, которые могут иметь отношение к запросу. База содержит сведения из большого количества областей знаний. Для запросов используется язык, близкий к естественному. Когда это возможно, ответ содержит формулировку запроса на языке Wolfram.
Ниже приведены примеры запросов к базе знаний Wolfram|Alpha по рассмотренным в предыдущих главах вопросам, а также примеры аналогичных запросов в облаке Wolfram.
Рассмотрим запросы о преобразования представлений чисел между системами счисления и о выполнении арифметических операций в системах счисления. Принадлежность числа к системе счисления указывается с помощью знака подчеркивания: запись 123_4 соответствует $$123_4$$.
Пример 1. Найти троичное представление числа $$12a,a12_{16}$$ в системе Wolfram|Alpha можно с помощью запроса
convert 12a.a12 from base 16 to base 3 или convert 12a.a12_16 to base 3
Ответ на запрос выдается после нажатия на клавишу . В разделе Input interpretation приводится интерпретация запроса, который будет вычисляться системой (рис. 7.1).
(рис 7.1) Раздел интерпретации ввода
На вкладке Plain Text см. рис. 7.1 можно увидеть вариант этого запроса на языке Wolfram:
BaseForm[16^^12a.a12, 3]
В разделе Result приводится результат вычислений:
Число знаков после запятой будет увеличено при выборе команды More digits. Дополнительно система показывает результат в десятичном виде, а также в других системах счисления.
Пример 2. Запрос на преобразование из одной системы счисления в другую может быть сокращен. Например, рассмотрим запрос
43000 to base 60
Он интерпретируется так же, как и предыдущие запросы, в виде
convert 43000 to base 60
На языке Wolfram запрос имеет вид:
BaseForm[43000, 60]
Система Wolfram|Alpha приводит следующий результат:
Она предлагает ответ и в нормализованном виде: $$11.56 40_{60} 60^2$$. Результат также приводится в других системах счисления.
Пример 3. Рассмотрим запрос:
23_8 + 14_16 * 12_4
Операция умножения обозначается как символом *, так и символом пробела. Запрос интерпретируется в виде
На языке Wolfram запрос имеет вид:
8^^23 + 16^^14 4^^12
Результат 139 выдается в десятичной системе счисления, дополнительное приводится его представление в других системах счисления.
Рассмотрим примеры запросов, которые в качестве дополнительной информации возвращают результаты двоичного кодирования чисел с различной точностью.
Пример 4. Пусть запрос имеет вид:
convert 34/3 to base 2
В режиме краткого ответа можно узнать, что
$$11,(3) = 1011,(01)_2 = 23,(1)_4 = 13,(25)_8 = b,4_{12} = b,(5)_{16}$$(по умолчанию период не выделяется).
Кроме этого, приводится преставление числа 11,(3) с двойной точностью в 16-ричном формате, при этом по умолчанию используется нумерация байт от младшего к старшему (little-endian): abaaaaaaaaaa2640.
Количество выдаваемых сведений можно регулировать с помощью команд More … и Less … В режиме развернутого ответа пользователь получает информацию о представлении запрашиваемого числа в системах счисления с основаниями от 2 до 16. Кроме этого, можно получить представление числа 11,(3) в типах данных при двоичном кодировании не только с двойной, но и с одинарной и с четверной точностью рис. 7.2. При этом можно выбрать порядок нумерации байт от старшего к младшему (big-endian).
(рис 7.2) Представление числа 11 1\3
Пример 5. Запрос для целого числа вида
1100111_2
приводит к дополнительной информации о представлении числа 103 в типах данных, предназначенных для хранения целых чисел, например
unsigned 8-bit integer: 67 unsigned 16-bit integer: 0067 …
Рассмотрим примеры запросов о кодах символов к системе Wolfram|Alpha.
Пример 6. Найти последовательность десятичных кодов символов в таблице Unicode по заданной строке можно с помощью запроса вида
to character code "Science"
Результат выглядит следующим образом:
{83, 99, 105, 101, 110, 99, 101}.
Если же использовать текст на русском языке, то результат может быть неправильным. Например, для запроса
to character code "Привет"
результат имеет вид:
{1055, 112, 1080, 1074, 1077, 1090}.
Система Wolfram|Alpha не различает русскую букву "р" и латинскую букву "p", так как они имеют одинаковое написание, поэтому для слова "Привет" вместо кода буквы русского алфавита приведен код буквы латинского алфавита.
, соответственно.
(рис 7.3) Символы (a) латиницы; (b) кириллицы и их десятичные коды
Пример 8. Если число десятичных кодов символов в запросе невелико, то система выдает подробную информацию. Например, для запроса
character code {72, 105}
ответ содержит представление кодов символов H и i в таблице ASCII, в десятичном, 16-ричном, 8-ричном и двоичном форматах, а также в таблице Unicode в 16-ричном и десятичном форматах.
Пример 9. Ниже приведены примеры аналогичных запросов в облаке Wolfram:
In[1]:= ToCharacterCode["Привет!"]
ToCharacterCode["Привет!", "UTF8"]
Out[1]= {1055, 1088, 1080, 1074, 1077, 1090, 33}
Out[2]= {208, 159, 209, 128, 208, 184, 208, 178, 208, 181, 209, 130, 33}
In[3]:= FromCharacterCode[{1052, 1080, 1088, 33}]
FromCharacterCode[{208, 156, 208, 184, 209, 128, 33},
"UTF8"]
Out[3]= Мир!
Out[4]= Мир!
In[5]:= FromCharacterCode[Range[1040, 1103]]
Out[5]= АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеж
Зийклмнопрстуфхцчшщъыьэюя
Функция Range возвращает список элементов, принадлежащих заданному диапазону.
Рассмотрим примеры запросов к системе Wolfram|Alpha о представлении цвета и цветовых моделях.
Пример 10. В ответ на запрос
rgb 30, 155, 102
система приводит информацию о представления цвета в цветовых моделях RGB, HSV, HSL, CMYK, XYZ и CIE Lab. Кроме того, приводится двоичный код цвета в 16-ричном формате и представление запроса на языке Wolfram. Дополнительно указывается местоположении цвета на цветовой диаграмме, названия ближайших HTML-цветов, и т. д.
Аналогичная информация приводится, если в запросе задаются параметры цвета в других цветовых моделях, например
hsv 158, 79, 56
В облаке .
(рис 7.4) Запрос о цвете в облаке Wolfram
Для цветовых моделей HSV и CMYK используются функции Hue и CMYKColor, соответственно. Функция ColorConvert используется для преобразований представления цвета из одной модели в другую:
ColorConvert[RGBColor[0.3, 0.5, 0.7],"HSB"]//InputForm
Для того чтобы увидеть изображение цвета, достаточно ввести его название. Например, в ответ на запрос
{Red, Blue, Pink, Brown, LightGreen}
появится список изображений указанных цветов.
Результатом запроса
ColorNegate[Blue]
является изображение желтого цвета - дополнительного для синего в модели RGB.
Таблицу основных цветов модели :
In[7]:= Graphics[Raster[{{{1,0,0},
{0,1,0}, {0,0,1}, {0,0,0}},
{{0,1,1}, {1,0,1}, {1,1,0}, {0.9,0.9,0.9}}}]]
(рис 7.5) (a) Таблица основных цветов модели RGB; (b) цветовой бокс
С помощью запроса .
Для того чтобы получить общую информацию о геометрических фигурах в системе Wolfram|Alpha, достаточно ввести их название.
Пример 11. В ответ на запрос
rounded rectangle
система приводит пример (изображение) скругленного прямоугольника
, а также информацию о его свойствах.
(рис 7.6) Скругленный прямоугольник
Информацию о функциях языка Wolfram можно получить в системе Wolfram|Alpha с помощью запросов вида:
wolfram language symbol Dodecahedron
В данном случае будет приведен пример запроса на языке Wolfram
Graphics3D[Dodecahedron[]]
и изображение додекаэдра в качестве ответа на него.
Ниже приведен пример запроса о построении графических примитивов в облаке .
In[8]:= Graphics[{Point[{0, 0}],
Line[{{0.5, 0.2}, {1, -0.5}, {1.8, 0}}],
Red, Rectangle[{2, -0.5}, {3, 0.3}],
Blue, Polygon[{{3.5, -0.5}, {4.5, 0.5}, {5, 0}}],
Black, Circle[{5.8, 0}, 0.4],
Circle[{7, 0.2}, {0.5, 0.2}], Disk[{8, 0}, 0.3],
Circle[{8.8, 0}, 0.5, {0, 2 Pi/3}],
Text["Hello", {9.8, 0}]}]
(рис 7.7) Графические примитивы
Если функцию Circle заменить функцией Disk, то эллипс она вернет окрашенный, а вместо дуги эллипса будет построен его сектор.
Скругленный прямоугольник красного цвета можно построить с помощью запроса
Graphics[{Red, Rectangle[{0, 0}, {2, 1},
RoundingRadius -> 0.3]}]
В ответ на запрос
bezier curve или b spline
система Wolfram|Alpha выдает только определение кривой Безье или B-сплайна, соответственно. Примеры данных кривых система показывает в результате запросов о функциях языка Wolfram вида
wolfram language symbol BezierCurve
(аналогично для функции BSplineCurve).
Пример 12. Рассмотрим примеры построения в облаке Wolfram кривых Безье первого, второго и третьего порядка по двум, трем и четырем точкам, соответственно:
In[9]:= two = {{0, 0}, {0.5, 0.1}};
three = {{1, -0.5}, {1.5, 1}, {2.8, -0.1}};
four = {{4.5, 1}, {6.5, -0.5}, {3.5, 0}, {5, 1}};
Graphics[{LightGray, Line[three], Line[four],
Black, BezierCurve[two], BezierCurve[three],
BezierCurve[four], Blue, Point[two],
Point[three], Point[four]}]
Результат показан на
.
(рис 7.8) Кривые Безье первого, второго и третьего порядка
Если число точек в списке превышает 4, то они разбиваются на группы по 4 точки, так что последняя точка группы является первой точкой следующей группы, и для каждой группы строятся кривые Безье третьего порядка. Если в последней группе точек оказывается меньше четырех, т. е. она содержит 2 или 3 точки, то для нее строится кривая Безье первого или второго порядка, соответственно.
Ниже показан пример построения кривой по 9 точкам. Для точек с индексами 0 - 3 и 3 - 6 строятся кривые Безье третьего порядка, а для точек с индексами 6 - 8 - кривая Безье второго порядка
:
In[13]:= p = {{0, 0}, {1, 1}, {2, -1}, {5, 2}, {7, -1},
{3, -1}, {6, 1}, {8, 2}, {9, 0}};
Graphics[{LightGray, Line[p], Black,
BezierCurve[p], Blue, Point[p]}
(рис 7.9) Кривая, составленная из трех кривых Безье
Пример 13. :
In[15]:= Graphics[{LightGray, Line[p], Black,
BSplineCurve[p], Blue, Point[p]}
(рис 7.10) B-сплайн, построенный по 9 точкам
Аналогичным образом кривые Безье и B-сплайны, а также другие графические примитивы строятся в трехмерном пространстве с помощью функции Graphics3D. Для точек в этом случае должны указываться по 3 координаты.
Примеры разного рода фракталов в системе Wolfram|Alpha предлагаются по запросу fractal или fractals.
В языке Wolfram также имеется большое количество функций для построения различных фракталов.
Пример 14. Ниже приведен пример построения кривой Гильберта (4 итерации), в которой ломаная заменена :
In[16]:= Graphics[{HilbertCurve[4]/.Line->BSplineCurve}]
Снежинку Коха
можно построить с помощью следующего запроса:
In[17]:= Graphics[GeometricTransformation[KochCurve[3],
{RotationTransform[Pi, {1/2, 0}],
RotationTransform[-Pi/3, {1, 0}],
RotationTransform[Pi/3, {0, 0}]}]]
(рис 7.11) Приближение (a) кривой Гильберта; (b) снежинки Коха
В системе Wolfram|Alpha изображениями сопровождается большое количество разнообразных запросов. Например, по запросу Eiffel Tower приводятся изображения как самой Эйфелевой башни, так и ее местоположения. Кроме этого, сообщается информация об этой башне.
В ответ на запросы о преобразованиях изображений возвращаются функции языка Wolfram.
В облаке :
(рис 7.12) Изображение в облаке Wolfram
Пример 15. Ниже приведены примеры запросов, которые выполняют геометрические преобразования - отражение и поворот, заменяют цвета изображения на дополнительные в модели :
In[2]:=ImageReflect[myimage, Left] ImageRotate[myimage, Right] ColorNegate[myimage] Blur[myimage]
(рис 7.13) Операции (a) отражения; (b) поворота; (c) инверсии; (d) размытия
Систему Wolfram|Alpha можно использовать для настройки музыкальных инструментов. Для того чтобы услышать звучание ноты или последовательности нот, достаточно ввести их название в строку поиска, например, в виде F#, C#, A#
ответ система , а также на клавиатуре.
(рис 7.14) Изображение нот фа-диез, до-диез, ля-диез на нотном стане
Звучание можно прослушать с помощью кнопки Play Sound.
Пример 16. Ниже приведены примеры трех запросов в облаке Wolfram, в результате ответа на которые появляется проигрыватель для прослушивания звучания нот. Ноты можно обозначать как буквами, так и цифрами: 0 соответствует ноте до первой октавы, 12 - ноте до второй октавы.
В результате первого запроса можно прослушать гамму до мажор и аккорд до-ми-соль. Второй запрос - ноты ре, фа-диез, ля, ре и аккорд, третий - хроматическая гамма от $$\box$$ ступени
:
In[1]:= Sound[{SoundNote["C"], SoundNote["D"],
SoundNote["E"], SoundNote["F"], SoundNote["G"],
SoundNote["A"], SoundNote["B" SoundNote[12],
SoundNote[{"C", "E", "G"}]}]
Sound[{SoundNote[2], SoundNote[6], SoundNote[9],
SoundNote[14], SoundNote[{2, 6, 9, 14}]}]
Sound[Table[SoundNote[n],{n, 0, 12}]]
(рис 7.15) (a) До мажор; (b) ре мажор; (c) хроматическая гамма
Рассмотрим запросы, связанные с преобразованиями логических выражений, электронными логическими схемами, битовыми операциями, играми и клеточными автоматами.
Для логических операций в системе Wolfram|Alpha используются следующие обозначения:
or или ||;and или ;not или !;implies или =>;equivalent или <=>;xor;nand;nor;xnor;Пример 17. Построить таблицу истинности логического выражения можно с помощью запроса вида
truth table ((a || b) !a) => (a <=> b)
Таблица истинности показана на рис. 7.16. Выражение предварительно не упрощается.
(рис 7.16) Таблица истинности для выражения...
Пример 18. Упростить логическое выражение в системе Wolfram|Alpha можно, например, следующим образом:
simplify ((a or not b) and c) xnor ((a implies not c) nor a)
Результат имеет вид: $$(\neg a \wedge b) \vee \neg c$$.
Кроме упрощенного выражения, приводится его ДНФ, КНФ и другие формы его представления через подмножество логических операций. Для исходного выражения также приводится таблица истинности, схема логической функции и клеточный автомат с правилом, которое представляет эта функция, если она имеет 3 аргумента.
Рассмотрим результаты запроса для упрощенного выражения (not a and b) or not c.
Электронная логическая схема и диаграмма Венна, или Эйлера-Венна приведены на
.
(рис 7.17) (a) Электронная логическая схема; (b) диаграмма Эйлера-Венна
На
показано клеточное поле, представляющее состояния элементарного клеточного автомата в моменты времени от 0 до 25, который определяется правилом 93, описываемым логической функцией $$f(a, b, c) = (\neg a b) \vee \neg c$$.
Начальное состояние соответствует верхнему ряду поля.
(рис 7.18) Клеточный автомат для правила...
На языке Wolfram таблицу истинности для рассматриваемого выражения можно построить следующим образом:
In[1]:= BooleanTable[{a, b, c, Or[And[Not[a], b], Not[c]]},
{a, b, c}]//TableForm
Out[1]//TableForm=
True True True False
True True False True
True False True False
True False False True
False True True True
False True False True
False False True False
False False False True
Таблица истинности может быть построена сразу для нескольких логических выражений:
In[2]:= BooleanTable[{a, b, And[a, b], Or[a, b],
Implies[a, b], Equivalent[a, b], Xor[a, b],
Nand[a, b], Nor[a, b]}, {a, b}]//TableForm
Out[2]//TableForm=
True True True True True True False False False
True False False True False False True True False
False True False True True False True True False
False False False False True True False True True
Упростить логическое выражение, вычислить его ДНФ, а также найти по таблице истинности логической функции номер правила для элементарного клеточного автомата можно следующим образом:
In[3]:= Simplify[Xnor[(a||!b)c, Nor[Implies[a, !c], a]]]
Out[3]= (!a b) || !c
In[4]:= LogicalExpand[(a||!b||c) (!a||b||c||!d)]
Out[4]= c | | (a b) || (a !d) || (!a !b) || (!b !d)
In[5]:= val = BooleanTable[(!a b)|| !c, {a, b, c}]
Out[5]= {False, True, False, True, True, True, False, True}
In[6]:= boolelist = Boole[val]
Out[6]= {0, 1, 0, 1, 1, 1, 0, 1}
In[7]:= FromDigits[boolelist, 2]
Out[7]= 93
Изображения электронных логических схем в системе Wolfram|Alpha строятся в ответ на запросы вида
logic circuit (a or not b) and (c xor d)
Пример схемы логической функции ранее был показан на
: логические схемы приводятся в ответах на запросы, содержащие логические выражения.
Пример 19. Изображение отдельного логического элемента в системе Wolfram|Alpha можно получить с помощью запроса
Xor gate
Результат показан на
.
(рис 7.19) Логический элемент Xor (ANSI)
В системе Wolfram|Alpha запросы для битовых операций могут задаваться с помощью функций языка Wolfram, при этом аргументы могут заключаться как в квадратные скобки, так и в круглые. Первый символ в имени функции может быть как прописным, так и строчным.
Например, результатом вычисления запроса
bitOr(4, 9, 10)
является 15.
Пример 20. В языке Wolfram побитовые операции конъюнкции, дизъюнкции и строгой дизъюнкции выполняются с помощью функций BitAnd, BitOr и BitXor, соответственно.
Запрос BitNot[n] возвращает число - 1 - n.
Функция BitLength находит наименьшее число двоичных разрядов, которые необходимы для представления числа.
Ниже приведены примеры запросов:
In[1]:= {BitAnd[4,9,10], BitOr[4,9,10], BitXor[4,9,10]}
BitNot[12]
BitLength[2345]
Out[1]= {0, 15, 7}
Out[2]= -13
Out[3]= 12
Функция BitGet от аргументов n и k возвращает значение двоичного разряда числа n - коэффициента при $$2^k$$. Функции BitSet и BitClear устанавливают в разряде k числа n значения 1 и 0, соответственно:
In[4]:= BitGet[2345, 10] Out[4]= 0 In[5]:= BitSet[2345, 10] Out[5]= 3 369 In[6]:= BitClear[3369, 10] Out[6]= 2 345
Функция IntegerDigits возвращает список цифр числа в заданной системе счисления, функция FromDigits по списку цифр числа и основанию системы счисления возвращает десятичное представление этого числа:
In[7]:= IntegerDigits[2345, 2]
IntegerDigits[6789, 16]
Out[7]= {1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1}
Out[8]= {1, 10, 8, 5}
In[9]:= FromDigits[{1, 0, 0, 1, 0, 0, 1}, 2]
FromDigits[{11, 56, 40}, 60]
Out[9]= 73
Out[10]= 43000
База знаний Wolfram|Alpha содержит информацию о большом количестве игр. Описание игры "Ним" приводится в ответ на запрос
Nim game
Пример 21. Ниже приведены примеры запросов, которые возвращают общие сведения об игре "Ним" в облаке Wolfram:
In[1]:= Entity["FamousMathGame", "Nim"]
In[2]:= Entity["FamousMathGame", "Nim"][ "Statement"]
Entity["FamousMathGame", "Nim"][ "FormulationDate"]
Entity["FamousMathGame", "Nim"][ "AdditionalPeople"
Out[2]= Given one or more piles ("nim-heaps"), players alternate by taking all or some of the counters in a single heap. The player taking the last counter or stack of counters is the winner.
Для получения информации из базы знаний, используется функция Entity (сущность). Создать сущность можно с помощью сочетания клавиш
В появившееся поле для ввода следует ввести название понятия, в данном случае nim, и нажать клавишу Enter. Система предложит вариант ассоциации этой сущности. Согласие с ней выражается нажатием на галочку:
После этого можно задать, например, запрос обо всех доступных свойствах сущности:
Информацию обо всех значениях свойств сразу можно получить с помощью запроса
Сведения об отдельных свойствах возвращаются с помощью запроса вида
Вместо изображения с именем сущности можно, как и выше, использовать функцию Entity. Кроме этого, можно запрашивать информацию не только о конкретных свойствах, но и о наборах свойств:
Entity["FamousMathGame", "Nim"][{ "Diagram", "Classes"}]
Для того чтобы получить информацию обо всех типах сущностей, которые имеются в базе знаний, следует ввести в строку поиска облака Wolfram запрос
Entity Types
В результате появится информация о большом количестве типов сущностей, классифицированных по областям знаний. В частности, сведения о функциях, с помощью которых можно формулировать запросы о сущностях, принадлежащих типу "FamousMathGame", находятся в разделе Mathematical Computational Entities.
Общие сведения о клеточных автоматах, а также их примеры система Wolfram|Alpha приводит в ответ на запрос:
cellular automaton
Пример 22. Информацию об элементарном клеточном автомате, который соответствует конкретному правилу, например 86, система Wolfram|Alpha возвращает в ответ на запрос
cellular automaton rule 86
В частности, приводится логическая и алгебраическая форма правила $$86 (86 = 01010110_2)$$. Эти формы, соответственно, имеют вид:
$$(p, q, r) \to r Xor (p Or q)$$и
$$(p, q, r) \to (p + q + p q + r) \mod 2$$Рассмотрим примеры запросов в облаке Wolfram.
Представить правило 86 в виде преобразований клеток можно следующим образом:
In[1]:= RulePlot[CellularAutomaton[86]]
Клетка черного цвета соответствует 1, белого - 0.
Состояния клеточного автомата в моменты времени 0 - 10 программа возвращает в результате запроса вида
:
In[2]:= RulePlot[CellularAutomaton[86], {{1}, 0}, 10,
Mesh -> All, ImageSize -> Full]
В начальном состоянии центральная клетка имеет черный цвет. Слева и справа от нее расположены клетки белого цвета, число которых равно числу шагов. На
начальное состояние соответствует верхнему ряду поля.
(рис 7.20) Состояния 0 - 10 клеточного автомата для правила 86
Первые 50 состояний поля с аналогичным начальным состоянием можно также увидеть с помощью запроса
ArrayPlot[CellularAutomaton[86, {{1}, 0}, 50]]
В результате следующего запроса возвращаются первые 2 состояния автомата для начального состояния, описываемого явным образом:
In[3]:= CellularAutomaton[86, {1,0,0,0,1,0,0}, 2]
Out[3]= {{1, 0, 0, 0, 1, 0, 0}, {1, 1, 0, 1, 1, 1, 1}, {0, 1, 0, 0, 0, 0, 0}}
In[4]:= CellularAutomaton[86, {1,0,0,0,1,0,0}, 2]//Grid
Правила могут описываться с помощью логических или алгебраических функций (см. выше), например в виде
In[5]:= CellularAutomaton[{{p_, q_, r_} -> Xor[r, Or[p, q]]},
{{True}, False}, 2]
Out[5]= {{False, False, True, False, False}, {False, True, True, True, False},
{True, False, False, True, True}}
In[6]:= ArrayPlot[Boole[%]]
Информацию об игре Джона Конвея "Жизнь" и примеры некоторых начальных состояний для этой игры можно получить в системе Wolfram|Alpha с помощью запроса
Conway's Game of Life
Пример 21. Рассмотрим пример построения клеточного поля со случайным набором живых клеток в начальном состоянии в облаке Wolfram.
Случайная расстановка живых клеток строится с помощью функции RandomInteger. Например, поле 5 * 5 может иметь вид:
In[1]:= RandomInteger[1, {5, 5}]//Grid
Следующий пример реализации игры "Жизнь" приводится в документации языка Wolfram (поле сокращено до размера 20 * 20):
In[2]:= gameOfLife = {224, {2, {{2, 2, 2}, {2, 1, 2},
{2,, 2}}}, {1, 1}};
board = RandomInteger[1, {20, 20}];
Dynamic[ArrayPlot[board =
Last[CellularAutomaton[gameOfLife, board,
{{0, 1}}]]]]
В первой строке кода описываются правила игры "Жизнь"; они присваиваются переменной gameOfLife. Во второй строке переменной board присваивается значение начальной конфигурации живых клеток поля; эта конфигурация задается случайным образом. Третья строка описывает динамическое отображение состояний поля, при этом в переменной board запоминается последнее состояние, которое затем преобразуется по правилам игры.
Состояния поля автоматически обновляются. На
приведены примеры двух состояний поля.
(рис 7.21) Состояния клеточного поля в игре "Жизнь"
Состояние поля на конкретном шаге можно получить следующим образом:
In[5]:= board1 = {{0,0,1,0,0}, {1,0,1,0,0},
{0,1,1,0,0}, {0,0,0,0,0}, {0,0,0,0,0}};
Grid[board1]
In[7]:= ArrayPlot[CellularAutomaton[gameOfLife, board1,
{{{4}}}]]
Переменная board1 хранит начальное состояние поля (см. Out[6]). Программа вычисляет состояние поля на шаге 4.
Найдите 1) в системе Wolfram|Alpha; 2) в облаке Wolfr
a) 2;
b) 3;
c) 12;
d) 16;
e) 60.
Найдите 1) в системе Wolfram|Alpha; 2) в облаке Wolfram результат вычисления выражения
a) $$(33,33_5 + 11,77_{25}) * (44,44_5 - 22,22_{25}); b) 73f_{16} * 9e_{16} + abcd_{16}.$$
Найдите с помощью системы Wolfram|Alpha двоичный код в представленных в ней типах данных числа
a) 3,14159265;
b) 1335.
Найдите 1) в системе Wolfram|Alpha; 2) в облаке Wolfram последовательность кодов символов строки
a) "Peace";
b) "Всему своё время".
Wolfram|Alpha; 2) в облаке Wolfram фрагменты таблицы кодов символов Unicode, содержащие все буквы греческого алфавита.Найдите 1) в системе Wolfram|Alpha; 2) в облаке Wolfram компоненты в моделях RGB, CMYK и HSV цвета
a) rgb(28, 240, 157);
b) hsv(60, 85, 95);
c) cmyk(0,8, 0,5, 0,3, 0,6);
d) rgb(0,2, 0,8, 0,7).
Задайте запрос 1) в системе Wolfram|Alpha; 2) в облаке Wolfram, в результате которого система построит
a) прямоугольник красного цвета;
b) эллипс оранжевого цвета;
c) окружность синего цвета;
d) круг пурпурного цвета;
e) скругленный прямоугольник фиолетового цвета.
Постройте в облаке Wolfram
a) дугу эллипса сиреневого цвета;
b) сектор круга небесно-голубого цвета.
Задайте запрос 1) в системе Wolfram|Alpha; 2) в облаке Wolfram, в результате которого система построит
a) куб;
b) параллелепипед;
c) шар;
d) додекаэдр.
Постройте в облаке Wolfram изображение с помощью кривых Безье:
a) полумесяц;
b) сердечко;
с) цветок;
d) игрушечный автомобиль.
Постройте в облаке Wolfram с помощью B-сплайнов изображение буквы:
a) П;
b) И;
c) М;
d) О;
e) В;
f) А.
Задайте запрос 1) в системе Wolfram|Alpha; 2) в облаке Wolfram, в результате которого система построит
a) кривую Пеано;
b) кривую Серпинского.
Найдите с помощью системы Wolfram|Alpha изображение
a) множества Мандельброта;
b) множества Жюлиа;
c) дерева Пифагора;
d) тетраэдра Серпинского.
Вставьте в облако Wolfram изображение и постройте для него
a) перевернутое изображение (верх и низ меняются местами);
b) черно-белое изображение (оттенки серого).
Задайте запрос 1) в системе Wolfram|Alpha; 2) в облаке Wolfram, в результате которого система построит таблицу истинности для логического выражения
a) $$(x \to y) (x \to z) \to (y \leftrigharrow z);$$
b) $$x \oplus y \oplus z.$$
Упростите 1) в системе Wolfram|Alpha; 2) в облаке Wolfram логическое выражение
a) $$(x \neg y z) \vee (\neg x \neg y \neg z) \vee (x y z);$$
b) $$x nor y.$$
Приведите к ДНФ 1) в системе Wolfram|Alpha; 2) в облаке Wolfram логическое выражение
a) $$(x \vee \neg y \vee z) (\neg x \vee \neg y \vee \neg z) (x \vee y \vee z);$$
b) x nand y.
Wolfram|Alpha электронную логическую схему функции $$f(x, y, z) = (x \to y) (y \to z) (x \to z).$$Найдите 1) в системе Wolfram|Alpha; 2) в облаке Wolfram результат битовой операции
a) $$25 \oplus 39 \oplus 83$$;
b) bitAnd(45, 33, 62);
c) bitShiftLeft(1234, 3);
d) bitShiftRight(1234, 4).
Найдите 1) в системе Wolfram|Alpha; 2) в облаке Wolfram
a) количество двоичных разрядов числа 2022;
b) список цифр в двоичной системе счисления числа 1844;
c) число по списку троичных цифр {2, 0, 0, 1, 2, 1, 0, 0, 2}.
Wolfram|Alpha; 2) в облаке Wolfram информацию об игре "Крестики-нолики".Wolfram|Alpha информацию об элементарном клеточном автомате, в котором переходы описываются правилом 90.В облаке Wolfram для элементарного клеточного автомата, в котором переходы описываются правилом 54, выведите
a) правило перехода, которое описывается с помощью клеток;
b) правило перехода, которое описывается с помощью логической функции;
c) 10 первых состояний, которые описываются с помощью 0 и 1;
d) 50 первых состояний на клеточном поле, если в начальном расположении центральная клетка черная, остальные - белые;
e) 50 первых состояний на клеточном поле, если в начальном расположении черные и белые клетки располагаются случайным образом.
Wolfram создайте для игры "Жизнь" динамическое отображение состояний поля размером 30 * 30, в начальном состоянии которого живыми являются расположенные подряд 8 клеток верхнего ряда.Система Wolfram|Alpha - база знаний, которую также называют интеллектуальной машиной знаний, использует вычислительные интеллектуальные алгоритмы для поиска ответов на онлайн-запросы. Она была создана с помощью системы компьютерной математики Wolfram Mathematica. Система Wolfram|Alpha ищет ответы в своей базе знаний и в качестве ответа выдает как результаты вычислений, так и некоторые сведения из базы знаний, которые могут иметь отношение к запросу. База содержит сведения из большого количества областей знаний. Для запросов используется язык, близкий к естественному. Когда это возможно, ответ содержит формулировку запроса на языке Wolfram.
Ниже приведены примеры запросов к базе знаний Wolfram|Alpha по рассмотренным в предыдущих главах вопросам, а также примеры аналогичных запросов в облаке Wolfram.
Рассмотрим запросы о преобразования представлений чисел между системами счисления и о выполнении арифметических операций в системах счисления. Принадлежность числа к системе счисления указывается с помощью знака подчеркивания: запись 123_4 соответствует $$123_4$$.
Пример 1. Найти троичное представление числа $$12a,a12_{16}$$ в системе Wolfram|Alpha можно с помощью запроса
convert 12a.a12 from base 16 to base 3 или convert 12a.a12_16 to base 3
Ответ на запрос выдается после нажатия на клавишу . В разделе Input interpretation приводится интерпретация запроса, который будет вычисляться системой (рис. 7.1).
(рис 7.1) Раздел интерпретации ввода
На вкладке Plain Text см. рис. 7.1 можно увидеть вариант этого запроса на языке Wolfram:
BaseForm[16^^12a.a12, 3]
В разделе Result приводится результат вычислений:
Число знаков после запятой будет увеличено при выборе команды More digits. Дополнительно система показывает результат в десятичном виде, а также в других системах счисления.
Пример 2. Запрос на преобразование из одной системы счисления в другую может быть сокращен. Например, рассмотрим запрос
43000 to base 60
Он интерпретируется так же, как и предыдущие запросы, в виде
convert 43000 to base 60
На языке Wolfram запрос имеет вид:
BaseForm[43000, 60]
Система Wolfram|Alpha приводит следующий результат:
Она предлагает ответ и в нормализованном виде: $$11.56 40_{60} 60^2$$. Результат также приводится в других системах счисления.
Пример 3. Рассмотрим запрос:
23_8 + 14_16 * 12_4
Операция умножения обозначается как символом *, так и символом пробела. Запрос интерпретируется в виде
На языке Wolfram запрос имеет вид:
8^^23 + 16^^14 4^^12
Результат 139 выдается в десятичной системе счисления, дополнительное приводится его представление в других системах счисления.
Рассмотрим примеры запросов, которые в качестве дополнительной информации возвращают результаты двоичного кодирования чисел с различной точностью.
Пример 4. Пусть запрос имеет вид:
convert 34/3 to base 2
В режиме краткого ответа можно узнать, что
$$11,(3) = 1011,(01)_2 = 23,(1)_4 = 13,(25)_8 = b,4_{12} = b,(5)_{16}$$(по умолчанию период не выделяется).
Кроме этого, приводится преставление числа 11,(3) с двойной точностью в 16-ричном формате, при этом по умолчанию используется нумерация байт от младшего к старшему (little-endian): abaaaaaaaaaa2640.
Количество выдаваемых сведений можно регулировать с помощью команд More … и Less … В режиме развернутого ответа пользователь получает информацию о представлении запрашиваемого числа в системах счисления с основаниями от 2 до 16. Кроме этого, можно получить представление числа 11,(3) в типах данных при двоичном кодировании не только с двойной, но и с одинарной и с четверной точностью рис. 7.2. При этом можно выбрать порядок нумерации байт от старшего к младшему (big-endian).
(рис 7.2) Представление числа 11 1\3
Пример 5. Запрос для целого числа вида
1100111_2
приводит к дополнительной информации о представлении числа 103 в типах данных, предназначенных для хранения целых чисел, например
unsigned 8-bit integer: 67 unsigned 16-bit integer: 0067 …
Рассмотрим примеры запросов о кодах символов к системе Wolfram|Alpha.
Пример 6. Найти последовательность десятичных кодов символов в таблице Unicode по заданной строке можно с помощью запроса вида
to character code "Science"
Результат выглядит следующим образом:
{83, 99, 105, 101, 110, 99, 101}.
Если же использовать текст на русском языке, то результат может быть неправильным. Например, для запроса
to character code "Привет"
результат имеет вид:
{1055, 112, 1080, 1074, 1077, 1090}.
Система Wolfram|Alpha не различает русскую букву "р" и латинскую букву "p", так как они имеют одинаковое написание, поэтому для слова "Привет" вместо кода буквы русского алфавита приведен код буквы латинского алфавита.
, соответственно.
(рис 7.3) Символы (a) латиницы; (b) кириллицы и их десятичные коды
Пример 8. Если число десятичных кодов символов в запросе невелико, то система выдает подробную информацию. Например, для запроса
character code {72, 105}
ответ содержит представление кодов символов H и i в таблице ASCII, в десятичном, 16-ричном, 8-ричном и двоичном форматах, а также в таблице Unicode в 16-ричном и десятичном форматах.
Пример 9. Ниже приведены примеры аналогичных запросов в облаке Wolfram:
In[1]:= ToCharacterCode["Привет!"]
ToCharacterCode["Привет!", "UTF8"]
Out[1]= {1055, 1088, 1080, 1074, 1077, 1090, 33}
Out[2]= {208, 159, 209, 128, 208, 184, 208, 178, 208, 181, 209, 130, 33}
In[3]:= FromCharacterCode[{1052, 1080, 1088, 33}]
FromCharacterCode[{208, 156, 208, 184, 209, 128, 33},
"UTF8"]
Out[3]= Мир!
Out[4]= Мир!
In[5]:= FromCharacterCode[Range[1040, 1103]]
Out[5]= АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеж
Зийклмнопрстуфхцчшщъыьэюя
Функция Range возвращает список элементов, принадлежащих заданному диапазону.
Рассмотрим примеры запросов к системе Wolfram|Alpha о представлении цвета и цветовых моделях.
Пример 10. В ответ на запрос
rgb 30, 155, 102
система приводит информацию о представления цвета в цветовых моделях RGB, HSV, HSL, CMYK, XYZ и CIE Lab. Кроме того, приводится двоичный код цвета в 16-ричном формате и представление запроса на языке Wolfram. Дополнительно указывается местоположении цвета на цветовой диаграмме, названия ближайших HTML-цветов, и т. д.
Аналогичная информация приводится, если в запросе задаются параметры цвета в других цветовых моделях, например
hsv 158, 79, 56
В облаке .
(рис 7.4) Запрос о цвете в облаке Wolfram
Для цветовых моделей HSV и CMYK используются функции Hue и CMYKColor, соответственно. Функция ColorConvert используется для преобразований представления цвета из одной модели в другую:
ColorConvert[RGBColor[0.3, 0.5, 0.7],"HSB"]//InputForm
Для того чтобы увидеть изображение цвета, достаточно ввести его название. Например, в ответ на запрос
{Red, Blue, Pink, Brown, LightGreen}
появится список изображений указанных цветов.
Результатом запроса
ColorNegate[Blue]
является изображение желтого цвета - дополнительного для синего в модели RGB.
Таблицу основных цветов модели :
In[7]:= Graphics[Raster[{{{1,0,0},
{0,1,0}, {0,0,1}, {0,0,0}},
{{0,1,1}, {1,0,1}, {1,1,0}, {0.9,0.9,0.9}}}]]
(рис 7.5) (a) Таблица основных цветов модели RGB; (b) цветовой бокс
С помощью запроса .
Для того чтобы получить общую информацию о геометрических фигурах в системе Wolfram|Alpha, достаточно ввести их название.
Пример 11. В ответ на запрос
rounded rectangle
система приводит пример (изображение) скругленного прямоугольника
, а также информацию о его свойствах.
(рис 7.6) Скругленный прямоугольник
Информацию о функциях языка Wolfram можно получить в системе Wolfram|Alpha с помощью запросов вида:
wolfram language symbol Dodecahedron
В данном случае будет приведен пример запроса на языке Wolfram
Graphics3D[Dodecahedron[]]
и изображение додекаэдра в качестве ответа на него.
Ниже приведен пример запроса о построении графических примитивов в облаке .
In[8]:= Graphics[{Point[{0, 0}],
Line[{{0.5, 0.2}, {1, -0.5}, {1.8, 0}}],
Red, Rectangle[{2, -0.5}, {3, 0.3}],
Blue, Polygon[{{3.5, -0.5}, {4.5, 0.5}, {5, 0}}],
Black, Circle[{5.8, 0}, 0.4],
Circle[{7, 0.2}, {0.5, 0.2}], Disk[{8, 0}, 0.3],
Circle[{8.8, 0}, 0.5, {0, 2 Pi/3}],
Text["Hello", {9.8, 0}]}]
(рис 7.7) Графические примитивы
Если функцию Circle заменить функцией Disk, то эллипс она вернет окрашенный, а вместо дуги эллипса будет построен его сектор.
Скругленный прямоугольник красного цвета можно построить с помощью запроса
Graphics[{Red, Rectangle[{0, 0}, {2, 1},
RoundingRadius -> 0.3]}]
В ответ на запрос
bezier curve или b spline
система Wolfram|Alpha выдает только определение кривой Безье или B-сплайна, соответственно. Примеры данных кривых система показывает в результате запросов о функциях языка Wolfram вида
wolfram language symbol BezierCurve
(аналогично для функции BSplineCurve).
Пример 12. Рассмотрим примеры построения в облаке Wolfram кривых Безье первого, второго и третьего порядка по двум, трем и четырем точкам, соответственно:
In[9]:= two = {{0, 0}, {0.5, 0.1}};
three = {{1, -0.5}, {1.5, 1}, {2.8, -0.1}};
four = {{4.5, 1}, {6.5, -0.5}, {3.5, 0}, {5, 1}};
Graphics[{LightGray, Line[three], Line[four],
Black, BezierCurve[two], BezierCurve[three],
BezierCurve[four], Blue, Point[two],
Point[three], Point[four]}]
Результат показан на
.
(рис 7.8) Кривые Безье первого, второго и третьего порядка
Если число точек в списке превышает 4, то они разбиваются на группы по 4 точки, так что последняя точка группы является первой точкой следующей группы, и для каждой группы строятся кривые Безье третьего порядка. Если в последней группе точек оказывается меньше четырех, т. е. она содержит 2 или 3 точки, то для нее строится кривая Безье первого или второго порядка, соответственно.
Ниже показан пример построения кривой по 9 точкам. Для точек с индексами 0 - 3 и 3 - 6 строятся кривые Безье третьего порядка, а для точек с индексами 6 - 8 - кривая Безье второго порядка
:
In[13]:= p = {{0, 0}, {1, 1}, {2, -1}, {5, 2}, {7, -1},
{3, -1}, {6, 1}, {8, 2}, {9, 0}};
Graphics[{LightGray, Line[p], Black,
BezierCurve[p], Blue, Point[p]}
(рис 7.9) Кривая, составленная из трех кривых Безье
Пример 13. :
In[15]:= Graphics[{LightGray, Line[p], Black,
BSplineCurve[p], Blue, Point[p]}
(рис 7.10) B-сплайн, построенный по 9 точкам
Аналогичным образом кривые Безье и B-сплайны, а также другие графические примитивы строятся в трехмерном пространстве с помощью функции Graphics3D. Для точек в этом случае должны указываться по 3 координаты.
Примеры разного рода фракталов в системе Wolfram|Alpha предлагаются по запросу fractal или fractals.
В языке Wolfram также имеется большое количество функций для построения различных фракталов.
Пример 14. Ниже приведен пример построения кривой Гильберта (4 итерации), в которой ломаная заменена :
In[16]:= Graphics[{HilbertCurve[4]/.Line->BSplineCurve}]
Снежинку Коха
можно построить с помощью следующего запроса:
In[17]:= Graphics[GeometricTransformation[KochCurve[3],
{RotationTransform[Pi, {1/2, 0}],
RotationTransform[-Pi/3, {1, 0}],
RotationTransform[Pi/3, {0, 0}]}]]
(рис 7.11) Приближение (a) кривой Гильберта; (b) снежинки Коха
В системе Wolfram|Alpha изображениями сопровождается большое количество разнообразных запросов. Например, по запросу Eiffel Tower приводятся изображения как самой Эйфелевой башни, так и ее местоположения. Кроме этого, сообщается информация об этой башне.
В ответ на запросы о преобразованиях изображений возвращаются функции языка Wolfram.
В облаке :
(рис 7.12) Изображение в облаке Wolfram
Пример 15. Ниже приведены примеры запросов, которые выполняют геометрические преобразования - отражение и поворот, заменяют цвета изображения на дополнительные в модели :
In[2]:=ImageReflect[myimage, Left] ImageRotate[myimage, Right] ColorNegate[myimage] Blur[myimage]
(рис 7.13) Операции (a) отражения; (b) поворота; (c) инверсии; (d) размытия
Систему Wolfram|Alpha можно использовать для настройки музыкальных инструментов. Для того чтобы услышать звучание ноты или последовательности нот, достаточно ввести их название в строку поиска, например, в виде F#, C#, A#
ответ система , а также на клавиатуре.
(рис 7.14) Изображение нот фа-диез, до-диез, ля-диез на нотном стане
Звучание можно прослушать с помощью кнопки Play Sound.
Пример 16. Ниже приведены примеры трех запросов в облаке Wolfram, в результате ответа на которые появляется проигрыватель для прослушивания звучания нот. Ноты можно обозначать как буквами, так и цифрами: 0 соответствует ноте до первой октавы, 12 - ноте до второй октавы.
В результате первого запроса можно прослушать гамму до мажор и аккорд до-ми-соль. Второй запрос - ноты ре, фа-диез, ля, ре и аккорд, третий - хроматическая гамма от $$\box$$ ступени
:
In[1]:= Sound[{SoundNote["C"], SoundNote["D"],
SoundNote["E"], SoundNote["F"], SoundNote["G"],
SoundNote["A"], SoundNote["B" SoundNote[12],
SoundNote[{"C", "E", "G"}]}]
Sound[{SoundNote[2], SoundNote[6], SoundNote[9],
SoundNote[14], SoundNote[{2, 6, 9, 14}]}]
Sound[Table[SoundNote[n],{n, 0, 12}]]
(рис 7.15) (a) До мажор; (b) ре мажор; (c) хроматическая гамма
Рассмотрим запросы, связанные с преобразованиями логических выражений, электронными логическими схемами, битовыми операциями, играми и клеточными автоматами.
Для логических операций в системе Wolfram|Alpha используются следующие обозначения:
or или ||;and или ;not или !;implies или =>;equivalent или <=>;xor;nand;nor;xnor;Пример 17. Построить таблицу истинности логического выражения можно с помощью запроса вида
truth table ((a || b) !a) => (a <=> b)
Таблица истинности показана на рис. 7.16. Выражение предварительно не упрощается.
(рис 7.16) Таблица истинности для выражения...
Пример 18. Упростить логическое выражение в системе Wolfram|Alpha можно, например, следующим образом:
simplify ((a or not b) and c) xnor ((a implies not c) nor a)
Результат имеет вид: $$(\neg a \wedge b) \vee \neg c$$.
Кроме упрощенного выражения, приводится его ДНФ, КНФ и другие формы его представления через подмножество логических операций. Для исходного выражения также приводится таблица истинности, схема логической функции и клеточный автомат с правилом, которое представляет эта функция, если она имеет 3 аргумента.
Рассмотрим результаты запроса для упрощенного выражения (not a and b) or not c.
Электронная логическая схема и диаграмма Венна, или Эйлера-Венна приведены на
.
(рис 7.17) (a) Электронная логическая схема; (b) диаграмма Эйлера-Венна
На
показано клеточное поле, представляющее состояния элементарного клеточного автомата в моменты времени от 0 до 25, который определяется правилом 93, описываемым логической функцией $$f(a, b, c) = (\neg a b) \vee \neg c$$.
Начальное состояние соответствует верхнему ряду поля.
(рис 7.18) Клеточный автомат для правила...
На языке Wolfram таблицу истинности для рассматриваемого выражения можно построить следующим образом:
In[1]:= BooleanTable[{a, b, c, Or[And[Not[a], b], Not[c]]},
{a, b, c}]//TableForm
Out[1]//TableForm=
True True True False
True True False True
True False True False
True False False True
False True True True
False True False True
False False True False
False False False True
Таблица истинности может быть построена сразу для нескольких логических выражений:
In[2]:= BooleanTable[{a, b, And[a, b], Or[a, b],
Implies[a, b], Equivalent[a, b], Xor[a, b],
Nand[a, b], Nor[a, b]}, {a, b}]//TableForm
Out[2]//TableForm=
True True True True True True False False False
True False False True False False True True False
False True False True True False True True False
False False False False True True False True True
Упростить логическое выражение, вычислить его ДНФ, а также найти по таблице истинности логической функции номер правила для элементарного клеточного автомата можно следующим образом:
In[3]:= Simplify[Xnor[(a||!b)c, Nor[Implies[a, !c], a]]]
Out[3]= (!a b) || !c
In[4]:= LogicalExpand[(a||!b||c) (!a||b||c||!d)]
Out[4]= c | | (a b) || (a !d) || (!a !b) || (!b !d)
In[5]:= val = BooleanTable[(!a b)|| !c, {a, b, c}]
Out[5]= {False, True, False, True, True, True, False, True}
In[6]:= boolelist = Boole[val]
Out[6]= {0, 1, 0, 1, 1, 1, 0, 1}
In[7]:= FromDigits[boolelist, 2]
Out[7]= 93
Изображения электронных логических схем в системе Wolfram|Alpha строятся в ответ на запросы вида
logic circuit (a or not b) and (c xor d)
Пример схемы логической функции ранее был показан на
: логические схемы приводятся в ответах на запросы, содержащие логические выражения.
Пример 19. Изображение отдельного логического элемента в системе Wolfram|Alpha можно получить с помощью запроса
Xor gate
Результат показан на
.
(рис 7.19) Логический элемент Xor (ANSI)
В системе Wolfram|Alpha запросы для битовых операций могут задаваться с помощью функций языка Wolfram, при этом аргументы могут заключаться как в квадратные скобки, так и в круглые. Первый символ в имени функции может быть как прописным, так и строчным.
Например, результатом вычисления запроса
bitOr(4, 9, 10)
является 15.
Пример 20. В языке Wolfram побитовые операции конъюнкции, дизъюнкции и строгой дизъюнкции выполняются с помощью функций BitAnd, BitOr и BitXor, соответственно.
Запрос BitNot[n] возвращает число - 1 - n.
Функция BitLength находит наименьшее число двоичных разрядов, которые необходимы для представления числа.
Ниже приведены примеры запросов:
In[1]:= {BitAnd[4,9,10], BitOr[4,9,10], BitXor[4,9,10]}
BitNot[12]
BitLength[2345]
Out[1]= {0, 15, 7}
Out[2]= -13
Out[3]= 12
Функция BitGet от аргументов n и k возвращает значение двоичного разряда числа n - коэффициента при $$2^k$$. Функции BitSet и BitClear устанавливают в разряде k числа n значения 1 и 0, соответственно:
In[4]:= BitGet[2345, 10] Out[4]= 0 In[5]:= BitSet[2345, 10] Out[5]= 3 369 In[6]:= BitClear[3369, 10] Out[6]= 2 345
Функция IntegerDigits возвращает список цифр числа в заданной системе счисления, функция FromDigits по списку цифр числа и основанию системы счисления возвращает десятичное представление этого числа:
In[7]:= IntegerDigits[2345, 2]
IntegerDigits[6789, 16]
Out[7]= {1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1}
Out[8]= {1, 10, 8, 5}
In[9]:= FromDigits[{1, 0, 0, 1, 0, 0, 1}, 2]
FromDigits[{11, 56, 40}, 60]
Out[9]= 73
Out[10]= 43000
База знаний Wolfram|Alpha содержит информацию о большом количестве игр. Описание игры "Ним" приводится в ответ на запрос
Nim game
Пример 21. Ниже приведены примеры запросов, которые возвращают общие сведения об игре "Ним" в облаке Wolfram:
In[1]:= Entity["FamousMathGame", "Nim"]
In[2]:= Entity["FamousMathGame", "Nim"][ "Statement"]
Entity["FamousMathGame", "Nim"][ "FormulationDate"]
Entity["FamousMathGame", "Nim"][ "AdditionalPeople"
Out[2]= Given one or more piles ("nim-heaps"), players alternate by taking all or some of the counters in a single heap. The player taking the last counter or stack of counters is the winner.
Для получения информации из базы знаний, используется функция Entity (сущность). Создать сущность можно с помощью сочетания клавиш
В появившееся поле для ввода следует ввести название понятия, в данном случае nim, и нажать клавишу Enter. Система предложит вариант ассоциации этой сущности. Согласие с ней выражается нажатием на галочку:
После этого можно задать, например, запрос обо всех доступных свойствах сущности:
Информацию обо всех значениях свойств сразу можно получить с помощью запроса
Сведения об отдельных свойствах возвращаются с помощью запроса вида
Вместо изображения с именем сущности можно, как и выше, использовать функцию Entity. Кроме этого, можно запрашивать информацию не только о конкретных свойствах, но и о наборах свойств:
Entity["FamousMathGame", "Nim"][{ "Diagram", "Classes"}]
Для того чтобы получить информацию обо всех типах сущностей, которые имеются в базе знаний, следует ввести в строку поиска облака Wolfram запрос
Entity Types
В результате появится информация о большом количестве типов сущностей, классифицированных по областям знаний. В частности, сведения о функциях, с помощью которых можно формулировать запросы о сущностях, принадлежащих типу "FamousMathGame", находятся в разделе Mathematical Computational Entities.
Общие сведения о клеточных автоматах, а также их примеры система Wolfram|Alpha приводит в ответ на запрос:
cellular automaton
Пример 22. Информацию об элементарном клеточном автомате, который соответствует конкретному правилу, например 86, система Wolfram|Alpha возвращает в ответ на запрос
cellular automaton rule 86
В частности, приводится логическая и алгебраическая форма правила $$86 (86 = 01010110_2)$$. Эти формы, соответственно, имеют вид:
$$(p, q, r) \to r Xor (p Or q)$$и
$$(p, q, r) \to (p + q + p q + r) \mod 2$$Рассмотрим примеры запросов в облаке Wolfram.
Представить правило 86 в виде преобразований клеток можно следующим образом:
In[1]:= RulePlot[CellularAutomaton[86]]
Клетка черного цвета соответствует 1, белого - 0.
Состояния клеточного автомата в моменты времени 0 - 10 программа возвращает в результате запроса вида
:
In[2]:= RulePlot[CellularAutomaton[86], {{1}, 0}, 10,
Mesh -> All, ImageSize -> Full]
В начальном состоянии центральная клетка имеет черный цвет. Слева и справа от нее расположены клетки белого цвета, число которых равно числу шагов. На
начальное состояние соответствует верхнему ряду поля.
(рис 7.20) Состояния 0 - 10 клеточного автомата для правила 86
Первые 50 состояний поля с аналогичным начальным состоянием можно также увидеть с помощью запроса
ArrayPlot[CellularAutomaton[86, {{1}, 0}, 50]]
В результате следующего запроса возвращаются первые 2 состояния автомата для начального состояния, описываемого явным образом:
In[3]:= CellularAutomaton[86, {1,0,0,0,1,0,0}, 2]
Out[3]= {{1, 0, 0, 0, 1, 0, 0}, {1, 1, 0, 1, 1, 1, 1}, {0, 1, 0, 0, 0, 0, 0}}
In[4]:= CellularAutomaton[86, {1,0,0,0,1,0,0}, 2]//Grid
Правила могут описываться с помощью логических или алгебраических функций (см. выше), например в виде
In[5]:= CellularAutomaton[{{p_, q_, r_} -> Xor[r, Or[p, q]]},
{{True}, False}, 2]
Out[5]= {{False, False, True, False, False}, {False, True, True, True, False},
{True, False, False, True, True}}
In[6]:= ArrayPlot[Boole[%]]
Информацию об игре Джона Конвея "Жизнь" и примеры некоторых начальных состояний для этой игры можно получить в системе Wolfram|Alpha с помощью запроса
Conway's Game of Life
Пример 21. Рассмотрим пример построения клеточного поля со случайным набором живых клеток в начальном состоянии в облаке Wolfram.
Случайная расстановка живых клеток строится с помощью функции RandomInteger. Например, поле 5 * 5 может иметь вид:
In[1]:= RandomInteger[1, {5, 5}]//Grid
Следующий пример реализации игры "Жизнь" приводится в документации языка Wolfram (поле сокращено до размера 20 * 20):
In[2]:= gameOfLife = {224, {2, {{2, 2, 2}, {2, 1, 2},
{2,, 2}}}, {1, 1}};
board = RandomInteger[1, {20, 20}];
Dynamic[ArrayPlot[board =
Last[CellularAutomaton[gameOfLife, board,
{{0, 1}}]]]]
В первой строке кода описываются правила игры "Жизнь"; они присваиваются переменной gameOfLife. Во второй строке переменной board присваивается значение начальной конфигурации живых клеток поля; эта конфигурация задается случайным образом. Третья строка описывает динамическое отображение состояний поля, при этом в переменной board запоминается последнее состояние, которое затем преобразуется по правилам игры.
Состояния поля автоматически обновляются. На
приведены примеры двух состояний поля.
(рис 7.21) Состояния клеточного поля в игре "Жизнь"
Состояние поля на конкретном шаге можно получить следующим образом:
In[5]:= board1 = {{0,0,1,0,0}, {1,0,1,0,0},
{0,1,1,0,0}, {0,0,0,0,0}, {0,0,0,0,0}};
Grid[board1]
In[7]:= ArrayPlot[CellularAutomaton[gameOfLife, board1,
{{{4}}}]]
Переменная board1 хранит начальное состояние поля (см. Out[6]). Программа вычисляет состояние поля на шаге 4.
Найдите 1) в системе Wolfram|Alpha; 2) в облаке Wolfr
a) 2;
b) 3;
c) 12;
d) 16;
e) 60.
Найдите 1) в системе Wolfram|Alpha; 2) в облаке Wolfram результат вычисления выражения
a) $$(33,33_5 + 11,77_{25}) * (44,44_5 - 22,22_{25}); b) 73f_{16} * 9e_{16} + abcd_{16}.$$
Найдите с помощью системы Wolfram|Alpha двоичный код в представленных в ней типах данных числа
a) 3,14159265;
b) 1335.
Найдите 1) в системе Wolfram|Alpha; 2) в облаке Wolfram последовательность кодов символов строки
a) "Peace";
b) "Всему своё время".
Wolfram|Alpha; 2) в облаке Wolfram фрагменты таблицы кодов символов Unicode, содержащие все буквы греческого алфавита.Найдите 1) в системе Wolfram|Alpha; 2) в облаке Wolfram компоненты в моделях RGB, CMYK и HSV цвета
a) rgb(28, 240, 157);
b) hsv(60, 85, 95);
c) cmyk(0,8, 0,5, 0,3, 0,6);
d) rgb(0,2, 0,8, 0,7).
Задайте запрос 1) в системе Wolfram|Alpha; 2) в облаке Wolfram, в результате которого система построит
a) прямоугольник красного цвета;
b) эллипс оранжевого цвета;
c) окружность синего цвета;
d) круг пурпурного цвета;
e) скругленный прямоугольник фиолетового цвета.
Постройте в облаке Wolfram
a) дугу эллипса сиреневого цвета;
b) сектор круга небесно-голубого цвета.
Задайте запрос 1) в системе Wolfram|Alpha; 2) в облаке Wolfram, в результате которого система построит
a) куб;
b) параллелепипед;
c) шар;
d) додекаэдр.
Постройте в облаке Wolfram изображение с помощью кривых Безье:
a) полумесяц;
b) сердечко;
с) цветок;
d) игрушечный автомобиль.
Постройте в облаке Wolfram с помощью B-сплайнов изображение буквы:
a) П;
b) И;
c) М;
d) О;
e) В;
f) А.
Задайте запрос 1) в системе Wolfram|Alpha; 2) в облаке Wolfram, в результате которого система построит
a) кривую Пеано;
b) кривую Серпинского.
Найдите с помощью системы Wolfram|Alpha изображение
a) множества Мандельброта;
b) множества Жюлиа;
c) дерева Пифагора;
d) тетраэдра Серпинского.
Вставьте в облако Wolfram изображение и постройте для него
a) перевернутое изображение (верх и низ меняются местами);
b) черно-белое изображение (оттенки серого).
Задайте запрос 1) в системе Wolfram|Alpha; 2) в облаке Wolfram, в результате которого система построит таблицу истинности для логического выражения
a) $$(x \to y) (x \to z) \to (y \leftrigharrow z);$$
b) $$x \oplus y \oplus z.$$
Упростите 1) в системе Wolfram|Alpha; 2) в облаке Wolfram логическое выражение
a) $$(x \neg y z) \vee (\neg x \neg y \neg z) \vee (x y z);$$
b) $$x nor y.$$
Приведите к ДНФ 1) в системе Wolfram|Alpha; 2) в облаке Wolfram логическое выражение
a) $$(x \vee \neg y \vee z) (\neg x \vee \neg y \vee \neg z) (x \vee y \vee z);$$
b) x nand y.
Wolfram|Alpha электронную логическую схему функции $$f(x, y, z) = (x \to y) (y \to z) (x \to z).$$Найдите 1) в системе Wolfram|Alpha; 2) в облаке Wolfram результат битовой операции
a) $$25 \oplus 39 \oplus 83$$;
b) bitAnd(45, 33, 62);
c) bitShiftLeft(1234, 3);
d) bitShiftRight(1234, 4).
Найдите 1) в системе Wolfram|Alpha; 2) в облаке Wolfram
a) количество двоичных разрядов числа 2022;
b) список цифр в двоичной системе счисления числа 1844;
c) число по списку троичных цифр {2, 0, 0, 1, 2, 1, 0, 0, 2}.
Wolfram|Alpha; 2) в облаке Wolfram информацию об игре "Крестики-нолики".Wolfram|Alpha информацию об элементарном клеточном автомате, в котором переходы описываются правилом 90.В облаке Wolfram для элементарного клеточного автомата, в котором переходы описываются правилом 54, выведите
a) правило перехода, которое описывается с помощью клеток;
b) правило перехода, которое описывается с помощью логической функции;
c) 10 первых состояний, которые описываются с помощью 0 и 1;
d) 50 первых состояний на клеточном поле, если в начальном расположении центральная клетка черная, остальные - белые;
e) 50 первых состояний на клеточном поле, если в начальном расположении черные и белые клетки располагаются случайным образом.
Wolfram создайте для игры "Жизнь" динамическое отображение состояний поля размером 30 * 30, в начальном состоянии которого живыми являются расположенные подряд 8 клеток верхнего ряда.Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.