- •Р.М.Літнарович, ю.Г.Лотюк комп’ютерна алгебра навчально-методичний посібник
- •© Літнарович р.М., Лотюк ю.Г.,2010 р.
- •1. Програма нормативної дисципліни
- •2. Мета та завдання дисципліни,
- •3. Формування практичних навичків
- •4. Зміст дисципліни
- •4.1.Лекції, найменування тем за їх змістом
- •6.Перелік питань до заліку
- •7.Науково-дослідна робота студентів
- •8. Літературні джерела
- •9.Розподіл балів за один змістовий модуль, присвоюваних студентам
- •10.Шкала оцінювання:
- •11.Зміни та доповнення ,внесені в робочу програму на 201__ рік
- •12.Оцінка навчальної діяльності студента
- •2. Лекційний курс Лекція 1. (2 год.)
- •1.1 Коротка характеристика gap
- •1.2 Можливості для роботи з різними видами об'єктів алгебри
- •1.3 Приклади простих обчислень
- •2 Мова програмування gap
- •2.1 Символи і категорії слів в gap
- •2.2 Ключові слова
- •2.3 Ідентифікатори
- •2.4 Вирази
- •2.5 Звернення до функцій
- •2.6 Порівняння виразів
- •2.7 Арифметичні оператори
- •2.8 Привласнення
- •2.9 Виклик процедури
- •2.10 Команда if
- •2.11 Цикл while
- •2.12 Цикл repeat
- •2.13 Цикл for
- •2.14 Функції
- •3 Структури даних
- •3.1 Константи і оператори
- •3.2 Змінні і привласнення
- •3.3 Функції
- •3.4 Списки
- •3.5 Тотожність і рівність списків
- •3.6 Множини
- •3.7 Вектори і матриці
- •3.8 Записи
- •3.9 Арифметичні прогресії
- •3.10 Використання циклів
- •3.11 Подальші операції із списками
- •3.12 Функції
- •4 Операції над групами і їх елементами
- •4.1 Завдання групи підстановок
- •4.2 Завдання підгрупи групи підстановок
- •4.3 Прості властивості групи. Силовськие підгрупи.
- •4.4 Інші види підгруп
- •4.5 Факторгруппи
- •Список літератури, що рекомендується
- •Додаток а Рекомендації по створенню і запуску програм в системі gap
- •1. Створюємо за допомогою текстового редактора файл "prog.G" наступного змісту:
- •2. Зберігаємо цей файл в каталозі, вибраному з урахуванням рекомендацій параграфа 1.2.
- •3. Запустимо gap і визначимо файл протоколу log.Txt:
- •Лабораторна робота № 1. Основи роботи з системою gap в Windows
- •Лабораторна робота № 2 Списки. Цілі числа
- •Завдання для лабораторної роботи № 2
- •Лабораторна робота № 3. Лінійні програми. Вектори і матриці
- •Завдання для лабораторної роботи № 3
- •Лабораторна робота № 4. Програми, що гілкуються. Многочлени
- •Лабораторна робота № 5. Циклічні програми (цикл for). Бінарні відносини
- •Лабораторна робота № 6. Циклічні програми (цикл while). Підстановки
- •Лабораторна робота № 7. Циклічні програми (цикл repeat). Групи підстановок
- •Завдання для лабораторної роботи № 7
- •Лабораторна робота № 8. Вивчення властивостей елементів групи
- •Завдання для лабораторної роботи № 7
- •Лабораторна робота № 9. Вивчення властивостей підгруп групи.
- •Завдання для лабораторної роботи № 9.
- •Лабораторна робота № 10. Робота з бібліотекою кінцевих груп
- •Додаткові завдання
- •33027 Рівне , Україна
3.9 Арифметичні прогресії
Іншим спеціальним видом списків є цілочисельні кінцеві арифметичні прогресії. Вони описуються першим, другим і останнім елементами, розділеними відповідно комі або двома крапками, і увязненими в квадратні дужки. Якщо прогресія складається з послідовних чисел, другий елемент може бути опущений.
Приклад:
gap>[1..999999]; #натуральниє числа від 1 до 999999 [ 1 .. 999999 ] gap>[1,2..999999];#эквивалентно попередній команді [ 1 .. 999999 ] gap>[1,3..999999]; # тут крок дорівнює 2 [ 1, 3 .. 999999 ] gap> Length( last ); 500000 gap> [ 999999, 999997 .. 1 ]; [ 999999, 999997 .. 1 ]
3.10 Використання циклів
Приклад 1: обчислити твір підстановок, що є елементами списку.
gap> pp:=[(1,3,2,6,8)(4,5,9) (1,6)(2,7,8)(4,9) > (1,5,7)(2,3,8,6), (1,8,9)(2,3,5,6,4), > (1,9,8,6,3,4,7,2) ];; gap> prod:= (); () gap> for p in pp do > prod:= prod * p; > od; gap> prod; (1,8,4,2,3,6,5)
Приклад 2: обчислення n! для n = 15.
gap> ff:= 1; 1 gap> for i in [1..15] do > ff:= ff * i; > od; gap> ff; 1307674368000
Приклад 3: розкласти на прості множники число 1333, використовуючи список простих чисел primes.
gap> n:= 1333; 1333 gap> factors:= []; [ ] gap> for p in primes do > while n mod p = 0 do > n:= n/p; > Add(factors, p); > od; > od; gap> factors; [ 31, 43 ] gap> n; 1
Оскільки n=1, то процес завершений (легко перевірити, помноживши 31 на 43).
Приклад 4: скласти список простих чисел, що не перевищують 1000 (функція Unbind виключає елемент із списку).
gap> primes:= []; [ ] gap> numbers:= [2..1000]; [ 2 .. 1000 ] gap> for p in numbers do > Add(primes, p); > for n in numbers do > if n mod p = 0 then > Unbind(numbers[n-1]); > fi; > od; > od;
3.11 Подальші операції із списками
Існує зручніший спосіб множення елементів списку з чисел або підстановок.
gap> Product([1..15]); 1307674368000 gap> Product(pp); (1,8,4,2,3,6,5)
Аналогічним чином працює функція Sum.
Приклад 1:
Аргументами функції List є список і ім'я функції. В результаті будуть створений список значень заданої функції на елементах заданого списку. Наприклад, для знаходження куба числа раніше була визначена функція cubed. Складемо з її допомогою список кубів чисел від 2 до 10.
gap> List([2..10], cubed); [ 8, 27, 64, 125, 216, 343, 512, 729, 1000 ]
Щоб скласти всі ці величини, ми можемо застосувати функцію Sum до останнього списку. Це ж можна зробити, використовуючи функцію cubed як додатковий аргумент функції Sum:
gap> Sum(last)= Sum([2..10], cubed); true
Приклад 2: отримання списку простих чисел, менших 30, із списку primes за допомогою функції Filtered:
gap> Filtered(primes, x-> x < 30); [ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29 ]
Приклад 3: оператор { } витягує частину списку, визначувану номерами початкового і кінцевого елементів списку:
gap> primes{ [1 .. 10] }; [ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29 ]