
- •Р.М.Літнарович, ю.Г.Лотюк комп’ютерна алгебра навчально-методичний посібник
- •© Літнарович р.М., Лотюк ю.Г.,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.3 Функції
GAP містить більше 4000 стандартних функцій. Приклад звернення до декількох з них приведений нижче:
Приклад 1:
gap> Factorial(17); 355687428096000 gap> Gcd(1234, 5678); 2 gap> Print(1234, "\n"); 1234
Крім того, користувач може вводити власні функції. Найпростіше це робиться так:
Приклад 2:
gap> cubed:= x -> x^3; function ( x ) ... end gap> cubed(5); 125
Інший спосіб визначення функцій і процедур викладений в пп. 2.14 і 3.12. Рекомендації по розробці програм на мові GAP містяться в додатку А.
3.4 Списки
Список є укладеним в квадратні дужки набором об'єктів, розділених комами. Наприклад, список з перших десяти простих чисел можна задати таким чином:
gap> primes:=[2, 3, 5, 7, 11, 13, 17, 19, 23, 29]; [ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29 ]
Потім до нього можна додати наступні два прості числа:
gap> Append(primes [31, 37]); gap> primes; [ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37 ]
Якщо додається тільки один елемент, це можна зробити і по-іншому:
gap> Add(primes, 41); gap> primes; [ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41 ]
Вказати окремий елемент списку можна по його номеру в списку:
gap> primes[7]; 17
Цей же механізм дозволяє привласнити значення існуючому або новому елементу списку (функція Length визначає довжину списку):
gap> Length(primes); 13 gap> primes[14]:= 43; 43 gap> primes; [ 2, 3, 5, 7,11,13,17,19,23,29,31,37,41,43 ]
При цьому значення не обов'язково повинне привласнюватися наступному елементу списку. Наприклад, якщо двадцятим простим числом є 71, ми можемо відразу привласнити значення 71 двадцятому елементу списку primes, пропускаючи бракуючі елементи. Отриманий список матиме довжину 20:
gap> primes[20]:= 71; 71 gap> primes; [ 2,3,5,7,11,13,17,19,23,29,31,37,41,43,,,,,, 71 ] gap> Length(primes); 20
Список має бути створений перед завданням його елементу (наприклад, бути порожнім списком [ ]):
gap> lll[1]:= 2; Error, Variable: 'lll' must have а value gap> lll:= [];; gap> lll[1]:= 2; 2
Функція Position повертає номер першого елементу списку, що має задане значення. Якщо в списку немає елементу із заданим значенням, функція повертає false:
gap> Position(primes, 17); 7 gap> Position(primes, 20); false
Відмітимо, що при всіх приведених вище змінах списку primes довжина списку змінювалася автоматично.
Функція Isbound для списків показує, чи містить список елемент із заданим номером (для запісейн чи містить запис вказане поле):
gap> k:= [, 2, 3,, 5,, 7,,,, 11 ];; gap> Isbound(до[7]); Isbound(до[4]); Isbound(до[20]); true false false
Список може складатися з об'єктів різних типів, наприклад:
gap> lll:= [true, "This is а String",,, 3]; [ true, "This is а String",,, 3 ]
Далі, список може бути частиною іншого списку або самого себе:
gap> lll[3]:= [4,5,6];; lll; [ true, "This is а String", [ 4, 5, 6 ],, 3 ] gap> lll[4]:= lll; [ true, "This is а String" [ 4, 5, 6 ] ~, 3 ]
Тут знак " ~ " у четвертій позиції позначає об'єкт, виведення якого на екран (друк) проводиться в даний момент.
Рядки є окремим випадком списків, і друкуються без роздільників. Приклади завдання рядків і операцій над ними:
gap>s1:=['H','a','l','l','o','','w','o','r','l','d''.']; "Hallo world." gap> s2 := "Hello world."; "Hello world." gap> s1 = s2; true gap> s2[7]; 'w'
Витягання і зміну підмножин списку проводить оператор { }:
gap> sl := lll{ [ 1, 2, 3 ] }; [ true, "This is а String" [ 4, 5, 6 ] ] gap> sl{ [ 2, 3 ] }:= [ "New String", false ]; [ "New String", false ] gap> sl; [ true, "New String", false ]