
- •Р.М.Літнарович, ю.Г.Лотюк комп’ютерна алгебра навчально-методичний посібник
- •© Літнарович р.М., Лотюк ю.Г.,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.7 Вектори і матриці
Вектор є списком елементів, що належать загальному полю, що не містить пропусків.
gap> v:= [3, 6, 2, 5/2]; [ 3, 6, 2, 5/2 ] gap> Isrowvector(v); true
Вектори умножаються на скаляри з будь-якого поля, що містить дане. Множення двох векторів рівної довжини дає їх скалярний твір.
gap> 2 * v; [ 6, 12, 4, 5 ] gap> v * 1/3; # це еквівалентно команді v/3; [ 1, 2, 2/3, 5/6 ] gap> v * v; 221/4 # скалярний твір v на себе
Матриця - список векторів однакової довжини, що не містить пропусків:
gap> m:= [[1 -1, 1], > [2, 0 -1], > [1, 1, 1]]; [ [ 1 -1, 1 ], [ 2, 0 -1 ], [ 1, 1, 1 ] ] gap> m[2][1]; 2
Матриці можна умножати на скаляри, вектори і інші матриці (при відповідності розмірів):
gap> m:= [[1, 2, 3, 4], > [5, 6, 7, 8], > [9,10,11,12]]; [ [1,2,3,4 ], [5,6,7,8], [9,10,11,12] ] gap> Displayarray(m); [ [ 1, 2, 3, 4 ], [ 5, 6, 7, 8 ], [ 9, 10, 11, 12 ] ] gap> [1, 0, 0, 0] * m; Error, Vector *: vectors must have the same length gap> [1, 0, 0] * m; [ 1, 2, 3, 4 ] gap> m * [1, 0, 0]; Error, Vector *: vectors must have the same length gap> m * [1, 0, 0, 0]; [ 1, 5, 9 ] gap> m * [0, 1, 0, 0]; [ 2, 6, 10 ]
Відмітимо, що множення вектора на матрицю приводить до лінійної комбінації рядків матриці, тоді як множення матриці на вектор приводить до лінійної комбінації її стовпців. У останньому випадку вектор розглядається як вектор-стовпець.
Підматриці витягуються або змінюються за допомогою фігурних дужок:
gap> sm := m{ [ 1, 2 ] } [ 3, 4 ]}; [ [ 3, 4 ], [ 7, 8 ] ] gap> sm{ [ 1, 2 ] } [2]} := [[1],[-1]]; [ [ 1 ], [ -1 ] ] gap> sm; [ [ 3, 1 ], [ 7 -1 ] ]
Перша пара дужок указує вибрані рядки, друга - стовпці.
3.8 Записи
Інший спосіб створення нових структур даних - записи. Як і списки, записи - набори інших об'єктів (які називаються компонентами, або полями), звернення до яких відбувається не по номеру, а по імені.
Приклад:
gap> date:= rec(year:=1992, month:="jan", day:=13); rec( year := 1992, month := "Jan", day := 13 )
Спочатку запис визначається як розділений комами список привласнень значень її полям. Для звернення до значення відповідного поля запису необхідно вказати ім'я запису і ім'я поля, розділивши їх крапкою. Визначивши запис, надалі можна додавати до неї нові поля.
Приклад:
gap> date.year; 1992 gap>date.time:=rec(hour:=19,minute:=23,second:=12); rec( hour := 19, minute := 23, second := 12 ) gap> date; rec( year := 1992, month := "Jan", day := 13, time := rec( hour := 19, minute := 23, second := 12 ) )
Для визначення, чи є об'єкт записом, застосовується функція Isrecord. Структуру запису можна отримати за допомогою функції Recnames:
gap> Recnames(date); [ "year", "month", "day", "time" ]
Вправа. Що відбувається в результаті виконання команд:
gap> r:= rec(); rec( ) gap> r:= rec(r:= r); rec( r := rec( )) gap> r.r:= r; rec( r := ~ )