Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KSMM_Lab.doc
Скачиваний:
7
Добавлен:
09.11.2019
Размер:
1.06 Mб
Скачать

Деякі функції Maple

Функція сonvert - перетворення уявлення числа.

За допомогою функції convert Maple може перетворювати числа в уявлення з різноманітною основою (від 2 до 36, у тому числі бінарною і шістнадцятирічною) , наприклад:

> convert(7,binary);

> convert(20,hex);

> convert(101, decimal, binary);

При символьних обчисленнях Maple реалізує точну арифметику. Це значить, що результат може бути отриманий із будь-яким числом цифр. Проте треба пам'ятати, що ідеально точні чисельні обчислення виконуються тільки у випадку цілочисельних операцій.

Оператор mod - обчислення в кільці цілих чисел за модулем m.

e mod m

modp(e, m)

Параметри:

e – алгебраїчний вираз

m – невід’ємне число, модуль перетворень

Оператор mod обчислює вираз e над кільцем цілих чисел за модулем m.

Оператор mod можуть використовувати наступні функції для поліноміальної і матричної арифметики над скінченними кільцями і полями

Content, Det, DistDeg, Divide, Eval, Expand, Factor, Factors, Frobenius, Gausselim, Gaussjord, Gcd, Gcdex, Hermite, Interp, Inverse, Issimilar, Lcm, Normal, Nullspace, Power, Powmod, Prem, Primfield, Primitive, Primpart, Quo, Randpoly, Randprime, Rem, Resultant, Roots, Smith, Sprem, Sqrfree, taylor.

Приклади:

> 17 mod 5;

> x^3+10*x+1 mod 5;

> 1/3 mod 7;

> 5*3 mod 7;

> modp(55,7);

> modp(x^12+x+19,3);

> g := Gcd(a,b) mod 11;

> Divide(a,g,'q') mod 11;

Функція sqrt - обчислення квадратного кореня.

sqrt(x)

Параметри:

x - алгебраїчний вираз

Приклади:

> sqrt(1000);

> sqrt(1000.0);

> sqrt(x);

> sqrt(-9*x^2*y);

Функція Divide - перевірка подільності многочленів

Divide(a, b, 'q')

Параметри:

a, b - поліном;

q - (необов'язковий параметр) ім'я змінної

Функція Divide перевіряє, чи ділиться a на b без залишку. В змінну q поміщається результат ділення у випадку успіху.

Приклади:

> Divide(x^3+x^2+2*x+3, x+2, 'q') mod 5;

> q;

Функція Rem - виділення залишку від ділення многочленів.

Функція Quo - виділення неповної частки від ділення многочленів.

Rem(a,b,x)

Rem(a,b,x,'q')

Quo(a,b,x)

Quo(a,b,x,'r')

Параметри:

x - ім'я змінної в многочленах

a, b - многочлени від змінної x

q, r - імена змінних

Два поліноми a і b (степінь a > степеня b) пов'язані таким співвідношенням.

a = b*q + r.

Тут r - залишок, а q - неповна частка від ділення a на b.

Якщо використовувати дані функції разом з оператором mod p, ділення буде виконуватися над кільцем цілих чисел за модулем p.

Приклади:

> a := x^4+5*x^3+6:

> b := x^2+2*x+7:

> r := Rem(a,b,x,'q') mod 13;

> q;

> s := Quo(a,b,x,'p') mod 13;

> p;

> t:=Expand((x^2+2*x+7)*(x^2+3*x)+(5*x+6)) mod 13;

Процедура msolve – розв’язання рівнянь у Zm.

msolve(eqns,vars,m)

msolve(eqns,m)

Параметри:

eqns – одне або система рівнянь;

vars - (необов'язковий параметр) одне або набір імен;

m - ціле число, модуль перетворень.

Процедура msolve розв’язує рівняння в eqns у цілих числах за mod m. Повертається NULL якщо не існує розв’язків у цілих числах за mod m.

Приклади:

> msolve({3*x-4*y=1,7*x+y=2},19);

> msolve(x^2=3,5); # Немає рішень

Функція Expand - розкриває скобки і подає добуток у вигляді суми.

Expand(a)

Параметри:

а - будь-який алгебраїчний вираз.

Приклади:

> Expand( (x+2)^2*(x-2) ) mod 3;

Функція Powmod - зведення многочлена в степінь за модулем іншого многочлена.

Powmod(a, n, b, x)

Powmod(a, n, b)

Параметри:

a - многочлен від x

n - ціле число

b - многочлен від x

x - ім'я змінної

Функція Powmod обчисляє a^n mod b, де a і b - многочлени від x, n-ціле (показник степені, можливо від’ємне).

Приклади:

> Powmod(x,16,x^4+x+1,x) mod 2;

> Powmod(x,-5,x^4+x+1,x) mod 2;

Програмування в Maple

Умовні вирази if.

Для підготування програм, що розгалужуються, у Maple-мову програмування включений оператор if, що дозволяє створювати таку конструкцію:

if <Умова порівняння> then <Елементи>

 |elif < Умова порівняння> then <Елементи>|

|e1se <Елементи>|

  fi:

У вертикальних рисках | | зазначені необов'язкові елементи даної конструкції.

> a := 7; b := 3;

> if (a > b) then a else b end if;

Цикли for і while.

Найчастіше необхідно циклічне повторення виконання виразу задане число раз або доти, поки виконується визначена умова. Maple має узагальнену конструкцію циклу, що задається в такий спосіб:

| for <name>| |from <exprl>| |to <expr2>| |by <expr3>|

| while <expr4>|

do <statement sequence> od;

Тут name - ім'я керуючої змінної циклу, exprl, ехрr2 і ехрr3 - вирази, що задають початкове значення, кінцеве значення і крок змінної name, ехрr4 - вираз, що задає умову, доки цикл (набір об'єктів між словами do і od) буде виконуватися.

У ході виконання циклу керуюча змінна змінюється від значення exprl до значення ехрr2 із кроком, заданим ехрr3. Якщо блок by <ехрr3> відсутній, то керуюча змінна буде змінюватися з кроком +1. Наприклад:

> for i from 1 to 3 do print(i): od;

Прості процедури.

Процедурою називають модуль програми, що має самостійне значення і виконує одну або декілька операцій, звичайно достатньо складних і відмінних від операцій, виконуваних вбудованими операторами і функціями.

Процедури визиваються так само, як вбудовані функції, - по імені зі списком фактичних параметрів. При цьому процедури звичайно не повертають ніяких значень після свого виконання, хоча можуть привласнювати значення вхідним змінним.

Найпростіша форма завдання процедури така:

name :=рrос(Параметры)

Тіло процедури

end;

При виклику процедури вираженням виду:

name(Фактичні_параметри)

фактичні параметри підставляються на місце формальних. Невідповідність фактичних параметрів типу заданих змінних веде до повідомлення про помилку і до відмови від виконання процедури.

Приклад процедури:

> Fun :=proc(x,y)

x*y;

end:

> Fun(5,9);

Процедури-функції у відповідь на виклик до них повертають деяке значення. Вони як би є новими функціями, що задаються користувачем. Процедуру-функцію можна задати за допомогою функціонального оператора ”->”.

Наприклад:

> g := (x,y) -> x*y;

> g(1,2);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]