Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СРС.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
929 Кб
Скачать
☆

2.2. Внутрішня структура об'єктів Maple

Кожен алгебраїчний вираз зберігається системою Maple у вигляді деревовидної структури, що дає можливість доступу до будь-якого її члена, а також дозволяє виконувати над ними різні символьні перетворення. В представленні цієї структури кожний об'єкт Maple поділяється на підоб'єкти першого рівня, котрі в свою чергу також діляться на підоб'єкти.

Команди, що дають можливість виділити частини об'єктів:

rhs (рівняння) - виділення правої частини рівняння

lhs (рівняння) - виділення лівої частини рівняння

numer (дріб) - виділення чисельника числового або алгебраїчного дробу

denum (дріб) - виділення знаменника числового або алгебраїчного дробу

nops (вираз) - визначає кількість операндів у виразі

op (вираз) - видає операнди виразу у вигляді списку

op (n, вираз) - видає n-ий операнд із виразу

select (булівська функція, вираз) - виділяє у виразі операнди, для яких булівська функція дає значення true

remove (булівська функція, вираз) - виділяє у виразі операнди, для яких булівська функція дає значення false

indets (вираз, тип) - виділяє у виразі підвираз заданого типу ('*', '+', ...)

has (вираз, підвираз) -визначає, чи міститься підвираз в заданому виразі

hastype( вираз, тип) - визначає, чи містить вираз підвираз заданого типу

indets( выражение, тип) - видає у вигляді множини всі підвирази вказаного типу

Вигляд деяких команд детальніше:

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

> eq:=x^2+sin(x)=cos(x)-1;

> lhs(eq); rhs(eq);

> lhs(3..9); rhs(3..9);

3

9

> dr:=(sin(x)+x/y)/(cos(x)/sin(x)+2);

> numer(dr);

(sin(x) y + x) sin(x)

> denom (dr);

y (cos(x) + 2 sin(x))

> expr:=X^2/sin(x)+3*sqrt(x)*sin(x);

> nops(expr);

2

> op(expr);

> a2:=op(2,expr);

> op(3,op(2,expr));op(3,a2);

sin(x)

sin(x)

> ex1:=(x+3)*cos(x);

ex1 := (x + 3) cos(x)

> has(ex1,cos);

true

> ex2:=(x+3)*exp(x*cos(x+2))+sin(x);

> hastype(ex2,`*`);

true

> select(hastype,ex2,`*`);

(x + 3) e(x cos(x + 2))

> indets(ex2,`*`);

{(x + 3) e(x cos(x + 2)), x cos(x + 2)}

2.3. Підстановка і перетворення типів

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

subs(підстановка, вираз) - синтаксична підстановка одного виразу замість іншого у виразі

algsubs(підстановка, вираз) - алгебраїчна підстановка одного виразу замість іншого у виразі

subsop(N=нове значення, вираз) - підстановка нового значення замість N-ого операнду у виразі

convert(вираз, тип) - надає виразу новий тип даних

whattype(вираз) - визначає тип виразу

Синтаксис команди subs( ):

subs(старий вираз=новий вираз, вираз)

subs(s1, s2, .. sn, вираз)

subs([s1, s2, .. sn], вираз), де кожне з s1, s2, .. sn рівняння, що визначають підстановку.

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

Друга форма команди дозволяє виконати серію підстановок у вираз, причому підстановки виконуються послідовно, починаючи з s1.

Третя форма команди містить підстановки у вигляді множини або списку. Ці підстановки виконуються одночасно, а не послідовно, як в попередньому варіанті.

> subs(x=y,y=x,[x,y]);

[x, x]

> subs({x=y,y=x},[x,y]);

[y, x]

Команда subs( ) здійснює "синтаксичну підстановку", тобто заміна у виразі відбувається лише тоді, коли ліва частина рівняння підстановки співпадає з одним із операндів в структурному представленні виразу. В наступному прикладі команда subs( ) не підставить у вираз s^3 замість s^2 вираз 1-с^2.

> ex2:=s^3;

ex2 := s3

> subs(s^2=1-c^2,ex2);

s3

> subs(s=sqrt(1-c^2),ex2);

(1 – c2 )3/2

> simplify (ex2,{s^2=1-c^2});

s - sc2

> algsubs(s^2=1-c^2,ex2);

(1 – c2 ) s

Для здійснення підстановки можна скористатись декількома способами:

- явно виразити стару змінну через нові і скористатися функцією subs( ) .

- скористатися командою simplify( ), вказуючи у якості параметра необхідну змінну (в наступній лекції)

- скористатися командою algsubs( ), котра здійснює алгебраїчну підстановку.