Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Примеры. Если Y не имеет пары (1=×/⍴,Y) его величина условно продлевается до длины X
1 0 1 0 1/⍳ 5 1 3 5 1 ¯ 2 3 ¯ 4 5/⍳ 5 1 0 0 3 3 3 0 0 0 0 5 5 5 5 5 M 1 2 3 4 5 6 2 0 1/M 1 1 3 4 4 6 0 1⌿ M 4 5 6 0 1/[1]M 4 5 6 Если Y не имеет пары (1=× /⍴, Y) его величина условно продлевается до длины X Вдоль указанной оси. 1 0 1/4 4 4 1 0 1/, 3 3 3 1 0 1/1 1⍴ 5 5 5 3. APL время пришло Задание 1. Напишите выражение, подсчитывающее число простых скалярных нулей в массиве. +/0=x Задание 2. Используя переменную RETAIL, напишите выражение, чтобы вычислить сколько продуктов стоят меньше 10. RETAIL← 6.95 7.95 12.95 +/RETAIL< 10 Задание 3. Напишите выражение, возвращающее 1, если некоторое число N является целым. N=⌈ N Лекция от 2015.10.16 ⍋ сортировка по возрастанию ⍋ 9 3 1 5 3 2 4 1 x← 5? 100 ⍋ сортировка по убыванию ⍋ x 5 3 1 4 2 n← 'katia' 'masha' 'sasha' 'fedya' 'jon' n[⍋ x] выдает имена, соответствующие индексам jon sasha katia fedya masha n[⍒ x] masha fedya katia sasha jon ↑ функция взять 2↑ x берём два левых аргумента 68 98 3↑ x 68 98 66 13↑ x 68 98 66 72 27 0 0 0 0 0 0 0 0 (0- не существующие элементы) ¯ 3↑ x 66 72 27 13↑ 'sasha and masha' sasha and mas ↓ - функция отбросить 3↓ 'sasha and masha' берём три элемента с конца ha and masha
, -функция конкитинация 3, 62 3 62 вектор из двух элементов x, 3.62 4.12 68 98 66 72 27 3.62 4.12 m, m объединяет матрицы 4 6 3 6 4 6 3 6 7 1 8 6 7 1 8 6 4 1 3 5 4 1 3 5
m, ¯ 5↑ [2]m берёт 5 с конца по второму измерению, т.к. матрица 3 на 4, то не существующие элементы заменяет нулями и объединяет матрицы 4 6 3 6 0 4 6 3 6 7 1 8 6 0 7 1 8 6 4 1 3 5 0 4 1 3 5
m, [1]¯ 7↑ [1]m берем берём 7 с конца по первому измерению и объединяем матрицы по первому измерению 4 6 3 6 7 1 8 6 4 1 3 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 6 3 6 7 1 8 6 4 1 3 5 , - векторизация преобразует любой массив в вектор ⍴, 3.62 x 68 98 66 72 27 , x вектор так и останеться 68 98 66 72 27 m 4 6 3 6 7 1 8 6 4 1 3 5 , m векторизует матрицу 4 6 3 6 7 1 8 6 4 1 3 5 Примеры A← 'ABCD' (10 20 30) ((2 4)) (1 3 5))
¯ 1↑ A 1 3 5 1↓ A 10 20 30 2 4 1 3 5
↑ 2↓ A 2 4 0 1 3 5 ↑ ↑ 2↓ A 2 4 0 1 3 5 ↑ ↑ ↑ 2↓ A 2 4 0 1 3 5
Пример A← 'ABCD' (10 20 30) ((2 4)) (1 3 5))
¯ 1↑ A 1 3 5 1↓ A 10 20 30 2 4 1 3 5
↑ 2↓ A 2 4 0 1 3 5 ↑ ↑ 2↓ A 2 4 0 1 3 5 ↑ ↑ ↑ 2↓ A 2 4 0 1 3 5
Перевод. Отбросить R← X↓ Y Y может быть любым массивом. Х должен быть простым скаляром или вектором целых чисел. Если X является скаляром, то он рассматривается как одноэлементный вектор. Если Y является скаляром, то он обрабатывается как массив, форма которогоесть (⍴ X) ⍴ 1. После любых скалярных расширений, X должен быть меньше или равен Y. Любые недостающие элементы в X по умолчанию будут равны 0. R представляет собой массив того же ранга, Y, но с элементами удаленных из векторов вдоль каждой из осей Y. Примеры OVER ⍴ 10↓ 'OVERBOARD' M ONE FAT FLY 0 ¯ 2↓ M OFF ¯ 2 ¯ 1↓ M ON 1↓ M FAT FLY M3← 2 3 4⍴ ⎕ A 1 1↓ M3 QRST UVWX ¯ 1 ¯ 1↓ M3 ABCD EFGH Индексирование по возрастанию R← ⍋ Y Y должен быть простой или просто числовым массивом ранга, большего 0. R является целочисленным вектором, что ставит подмассивы вдоль первая оси в порядке возрастания. Если Y является числовым массивом, большего 1, элементы в каждом из массивов вдоль первой оси сравниваются с порядком первого элемента и последнего элемента. Примеры ⍋ 22.5 1 15 3 ¯ 4 5 2 4 3 1 M 2 3 5 1 4 7 2 3 5 1 2 6 2 3 4 5 2 4 ⍋ M 3 2
Индексирование по убыванию R← ⍒ Y
Y должен быть простым символом или простым числовым множеством разряда, больше, чем 0. R - вектор целого числа, являющийся перестановкой ⍳ 1 ↑ ⍴ Y, который помещает подмножества Y вперед первая ось в порядке убывания. Индексы любого набора идентичных подмножеств в Y происходят в R в порядке возрастания. Если Y - числовое множество разряда, больше, чем 1, элементы в каждом из подмножеств вдоль первой оси сравнены по порядку с самым большим весом, даваемым первому элементу и наименьшему количеству веса, даваемого последнему элементу. Примеры: М 2 5 3 2 3 4 1 1 2 5 4 5 2 5 3 2 2 5 3 4 ⍒ M 2 3 5 1 4 M[⍒ M; ] 3 4 1 1 2 5 4 5 2 5 3 4 2 5 3 2 2 5 3 2 Если Y - множество символов, подразумеваемая последовательность сопоставления - числовой заказ соответствующих кодовых точек Unicode (Выпуск Unicode) или заказ знаков в ⎕ AV (Классический Выпуск). ⎕ IO - неявный аргумент, Понижают в ранге. Обратите внимание на то, что характер выстраивает вид по-другому в Unicode и Classic Editions Пример: М Goldilocks porridge Porridge 3 bears
Векторизация R ←, Y Y может быть любым массивом. R является вектором из элементов Y, взятых по строкам.
Примеры M1 2 34 5 6, M1 2 3 4 5 6AABCDEFGHIJKL, AABCDEFGHIJKL⍴, 101
Лекция от 2015.10.23 1. Workspace
V← ⍳ 5 (создаем вектор размерностью 5) V 1 2 3 4 5 M← 2 3⍴ ⍳ 6 (создаем матрицу размером 2 на 3 из 6 элементов) ⌽ V (воспользовавшись функцией вращения для вектора, элементы становятся по порядку с последнего до первого) 5 4 3 2 1 M 1 2 3 4 5 6 ⌽ M (воспользовались функцией вращения для матрицы по строкам) 3 2 1 6 5 4 2⌽ V (воспользовались ф. вращения, которая переместила два первых элемента в конец вектора) 3 4 5 1 2 2⌽ M (аналогично воспользовались ф. вращения для матрицы, которая переместила два первых столбца в конец этой матрицы) 3 1 2 6 4 5 ¯ 2⌽ V (аналогично как для 2⌽ V но элементы перемещаются с конца) 4 5 1 2 3 ¯ 2⌽ M (так же и для матрицы, столбцы беруться с конца и перемещаются в начало) 2 3 1 5 6 4 ⊖ M (построчное вращение для матрицы) 4 5 6 1 2 3 ⊖ V (для вектора, тоже самое, как и ⌽ V) 5 4 3 2 1
⍉ M (транспонирование матрицы, т.е. перенос элементов относительно главной диагонали (строки становятся столбцами)) 1 4 2 5 3 6 1 1⍉ M (отображение элементов главной диагонали) 1 5 M1← M, [1]⌽ ⍳ 3 (в М1 присвоили обращенную йоту 3 (вектор размерностью 3) и приклеели его к матрице М) M1 1 2 3 4 5 6 3 2 1 1 1⍉ M1 (элементы главной диагонали в этой матрице) 1 5 1 D←? 2 2⍴ 5 (матрица 2 на 2 из случайных чисел от 1 до 5) 4 3 4 2 0 1⌽ D (каждое из чисел 0 и 1 показывает количество вращений для каждой строки, т.е. в нашем случае первую строку мы поворачивать не будем, а второую повернём один раз) 4 3 2 4 × /[1] 0 1⌽ D (перемножение элементов матрицы, получившейся выше, по столбцам (1 измерение)) 8 12
2. APL Language references
Transpose(Транспонирование) R← ⍉ Y Y может быть любым массивом. R представляет собой массив вида ⌽ ⍴ Y, эквивалентный к Y с целью реверсирования осей. Пример: M 1 2 3 4 5 6 ⍉ M 1 2 3 4 5 6
Лекция от 2015.10.30 Dyalog APL/S-64 Version 14.1.25525 Unicode Edition Fri Oct 30 15: 01: 05 2015 CONTINUE saved Mon Oct 12 21: 10: 11 2015 ⍝ (+/X)=¯ 1↑ +\X X← 9 2 1 3 45 2 3 4 2 (+/X)=¯ 1↑ +\X (вначале строим ряд из чисел используя +\, складывая каждое число из X с последующим т.е сначало будет 9, потом 9 складываем с 2, далее 9+2 складываем с 1 и так далее; Затем берем последнее число с конца т.е 71, и сравниваем его с суммой всех чисел из которых состоит X; и в результате 71=71) X← 2 1 4 5 9 2 1 3 45 2 3 4 2 (× /X)=¯ 1↑ × \X 2 3 4 ∘.+ 1 2 3 4 4 5 5 6 ∘ -внешнее произведение. (к 2 3 4 добавили вначале единицу (соответственно к каждой цифре) и получили первый столбец, а затем добавили 2 и получили второй столбец) n← ⍳ 9 n 1 2 3 4 5 6 7 8 9 n ∘.× n 1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27 4 8 12 16 20 24 28 32 36 5 10 15 20 25 30 35 40 45 6 12 18 24 30 36 42 48 54 7 14 21 28 35 42 49 56 63 8 16 24 32 40 48 56 64 72 9 18 27 36 45 54 63 72 81 (вначале единицу умножаем на каждое число из n получаем первую строчку, затем 2 умножаем на каждое число из n, получаем вторую строчку и т.д) n ∘., n 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9 8 1 8 2 8 3 8 4 8 5 8 6 8 7 8 8 8 9 9 1 9 2 9 3 9 4 9 5 9 6 9 7 9 8 9 9 (вначале единица объединяется с каждым числом из n, образуя первую строчку, затем 2 объединяется с каждым числом из n, образуя вторую строку и т.д) ⍴ n ∘., n 9 9 (находим размерность полученной таблицы) ]disp n ∘., n M← n ∘., n M[2; 3]=M[3; 2] 0 0 (сравниваем вторую строчку и третий столбец одной матрицы с третьей строчкой и вторым столбцом другой матрицы) (уравнение симметрии матриц aij=aji)
M← n ∘.× n M[2; 3]=M[3; 2] M=⍉ M 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 (⍉ -транспонирование матрицы; в результате этой операции мы сравнили обе матрицы и получили единички, на местах где числа равны) ∧ /, M=⍉ M (сравнили матрицы, затем функцией «,»-векторизация, записали все единички в одну строчку, и поставили между ними знак «∧»-логическое «И»(1∧ 1∧ 1……) и получили истину) ∧ /M=⍉ M 1 1 1 1 1 1 1 1 1 (сравнили матрицы, а затем поставили знак «∧» между каждым столбцом) ∧ /∧ /M=⍉ M (сравнили матрицы, а затем поставили знак «∧» между каждым столбцом, а потом еще раз поставили знак «∧» между каждой из девяти единичек, и получили истину) m← ¯ 1+? 3 3⍴ 2
m 1 0 1 1 0 1 0 0 0 (записываем получившуюся матрицу) ~m 0 1 0 0 1 0 1 1 1 (~-отрицание) (единички становятся нулями) m+~m 1 1 1 1 1 1 1 1 1 (сложение матриц) +/, ~m (, -векторизация, переводит строки матрицы в вектор, а затем +/-складывает единички) 0=+/, ~m (сравнение с нулем)
(× /⍴ m)=+/, m (девятка сравнивается с четверкой, т.к не равны будет 0) ⍝ also, good enough 2≡ 2 (≡ -сравнение(логическое, т.е если будет истина, то в ответе единичка, а если ложь, то ноль) 2≡, 2 (в данном случает скаляр сравнивается с вектором, и они не равные) M≡ ⍉ M (матрица равна транспонированной матрице) S← 2 3⍴ (2 2⍴ ⍳ 4)(⍳ 3)3.62(1 2(3 4)5 6)(2 3)(1(2(3 4)6))
≡ S (глубина залегания) ]disp S ? 3 (? -случайное число с возвратом, в данном случае берем случайное число от 1 до 3) ? 10⍴ 2 2 1 1 2 2 2 1 1 2 2 (получаем 10 случайных чисел со значением либо 1 либо 2) 2=? 10⍴ 2 1 1 1 0 0 1 0 1 0 0 (в данном случае на месте двоек станут единицы, т.к происходит логическое сравнение(=)) +/2=? 10⍴ 2 (складываем полученные единички) (+/2=? 10⍴ 2)÷ 10 0.5 (вероятность выпадения 2) Cnmpmqm-n-формула Бернулли.
+/7=+/2=? 100000 10⍴ 2 (складываем единичке, которые появляются на тех местах где будет 7 двоек в одной строчке в построенной матрице 100000 на 10) 11606÷ 1e6 0.011606 (делим 11606 на 106) (Подбрасываем кубик) 3=? 6 (=- сравниваем тройку с полученным случайным числом от 1 до 6; если выпадет тройка то в ответе будет единичка, в противном случае будет 0) +/3=? 100000⍴ 6 (ищем сколько раз выпало 3 из 100000 подбрасываний кубика, а затем складываем полученные единички) 16559÷ 100000 0.16559 (ищем вероятность выпадения тройки в нашем опыте(случае) ÷ 6 0.1666666667 (ищем вероятность выпадение тройки(по классическому определению вероятности) ? 5 2⍴ 6 4 2 6 6 1 3 4 2 5 6 (5 раз подбрасываем два кубика) =/? 5 2⍴ 6 0 1 0 0 0 (единичка будет на тех местах, когда на обоих кубиках выпадет одинаковое число)
+/=/? 100000 2⍴ 6 (складываем сколько раз выпало по одинаковому числу на обоих кубиках за 100000 подбрасываний) 16512÷ 100000 0.16512 +/∧ /6=? 100000 2⍴ 6 (складываем единички, которые будут на тех местах когда на обоих кубиках выпадет 6) 2751÷ 100000 0.02751 ? 0 0.4608028422 (число от 0 до единицы) +/? n⍴ 0 – n случайных чисел от 0 до 1 (+/? n⍴ 0)÷ n – среднее случайное число от 0 до 1
|