Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Примеры. Если 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. Примеры
4↓ 'OVERBOARD' BOARD ¯ 5↓ 'OVERBOARD'

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

 

Unicode Edition Classic Edition
⍒ M 2 3 1 4 ⍒ M 3 1 4 2
M[⍒ M; ] porridge Porridge Goldilocks 3 bears M[⍒ M; ] Porridge Goldilocks 3 bears porridge

 

 

Векторизация 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


 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.