Новости
5.2. Правила перетворень - підстановки
Підстановки як з ключовим елементом одного з стилів програмування ми розглянемо в одній з наступних лекцій. Тут ми познайомимося з самим поняттям підстановок і застосуванням їх для цілей перетворення виразів.
Е. М. Воробйов [1, с. 38] визначає підстановки наступним чином: "Підстановки - це алгебраїчні перетворення, в результаті виконання яких будь-яка частина алгебраїчного виразу замінюється на новий вираз". Підстановка в Mathematica реалізується знайомим нам з лекції 2 способом - за допомогою функції Set [expr1, expr2] або в інфіксной формі expr1 = expr2. згідно Е. М. Воробйову [1, с. 38] , Підстановка здійснюється наступним чином: спочатку обчислюється вираз expr2, а потім результат обчислення присвоюється висловом expr1. При подальших обчисленнях вираз expr1, в якому б місці програми воно ні зустрічалося, буде замінюватися результатом обчислення виразу expr2. Вирази expr1 і expr2 також можуть бути списками, тому в результаті виконання дії {expr11, expr12, ...} = {expr21, expr22, ...} обчислене вираз expr21 буде присвоєно висловом expr11, вираз expr22 - висловом expr12 і т.д .
Скасувати присвоєння значення виразу expr1, тобто, знову зробити його символом, можна за допомогою також відомої нам функції Clear [smb1, smb2, ...], де smb1, smb2, ... - символи, значення яких потрібно скасувати. Для одного символу smb можна скористатися також вже відомої нам формою smb =. вираження Unset [smb].
Функція Set задає глобальну підстановку, тобто діє на аргумент в межах всього тексту програми. Якщо ж заміну одного виразу іншим слід здійснити в одному конкретному вираженні, то застосовується так звана локальна підстановка або локальне правило перетворення, що задається в вигляді Rule [expr1, expr2] або expr1-> expr2. Відповідно до цього правила здійснюється підстановка обчисленого виразу expr2 замість expr1. Вираз expr2 обчислюється в момент завдання правила Rule. Якщо expr2 потрібно обчислити в момент звернення до Rule, слід використовувати функцію відкладеного підстановки RuleDelayed [expr1, expr2], або expr1:> expr2.
Застосувати правило перетворення rule = expr1-> expr2 (таке правило ми задаємо в прикладі In [2] на Мал. 5.11 ) До деякого виразу mainexpr, який містить заменяемое вираз, допомагає функція ReplaceAll [mainexpr, rule] (Постфіксний форма /.rule) - приклад In [3]. Окремо задавати і привласнювати підстановку якого-небудь символу (як в прикладі In [2]) доцільно, тільки якщо вона буде застосовуватися кілька разів в процесі обчислень. Якщо ж підстановка застосовується один раз, то її можна задати безпосередньо у вигляді другого аргументу rule1 - приклад In [4].
Можна здійснювати кілька підстановок одночасно. Для цього слід задати функцію у вигляді ReplaceAll [mainexpr, {rule1, rule2, ...}], де rule1, rule2, ... - необхідні підстановки (приклад In [5] на Мал. 5.11 ).
Детальніше про глобальні підстановках і функції ReplaceAll см. Книгу Е. М. Воробйова [1, с. 38-39] .
Мал.5.11.
Одиночна підстановка вираження
Часом потрібно здійснити підстановку багаторазово. Наприклад, в нашому вираженні потрібно замінити на , а на , Тобто, в кінцевому підсумку потрібно замінити на . При одноразовому здійснення підстановки в нашому прикладі в результаті знову виходить вираз, в якому символ більше не присутній, проте як і раніше входить символ - приклад In [2] на Мал. 5.12 . Для досягнення необхідного результату, тобто позбавлення від символу в кінцевому вираженні є два способи. Перший - повторно скористатися функцією ReplaceAll - приклад In [3]. Другий більш витончений спосіб - скористатися функцією, автоматично здійснює підстановку два рази - ReplaceRepeated [mainexpr, {rule1, rule2, ...}] (Постфіксний форма //. Mainexpr, {rule1, rule2, ...}) - приклад In [ 4].
Детальніше про функції ReplaceRepeated см. Книгу Е. М. Воробйова [1, с. 40] .
Мал.5.12.
Подвійна підстановка виразів
Е. М. Воробйов [1, с. 40] акцентує увагу на ще одну функцію, яка може виявитися корисною: "Після підстановки можуть виникнути вираження виду (xk) п, які можна привести до виду xkn за допомогою функції PowerExpand. Ця функція перетворює в , Якого б вигляду не було . Перетворення, зроблені за допомогою функції PowerExpand коректні в загальному випадку, тільки якщо є ціле, а і позитивні ".
5.3. Функції математичного аналізу
5.3.1. Диференціювання та інтегрування
При проведенні математичних і технічних розрахунків саме операції математичного аналізу використовуються найчастіше. Одна з основних операцій математичного аналізу - диференціювання. Mathematica вміє обчислювати похідні всіх стандартних математичних функцій, а також спеціальних функцій ( А. Н. Прокопеня і А. В. Чічурін [5, с. 31] ). Похідну першого порядку функції expr по змінної var обчислюють за допомогою виразу D [expr, var] (приклад In [1] на Мал. 5.13 ) При обчисленні змішаних і кратних похідних аргумент var задається у вигляді списку. Похідну вищого порядку n обчислюють за допомогою функції D [expr, {var, n}], а похідну по декільком змінним var1, var2, ... - за допомогою D [expr, var1, var2, ...] (приклади In [ 2] і In [3]). Функція D [expr, {{var1, var2, ...}}] для скалярного вираження expr дає вектор похідних expr кожного із змінних var1, var2, ... (приклад In [4]).
Розглянемо довільну функцію f [x, y] і обчислимо її третю змішану похідну \ partial ^ 3f / \ partial х ^ 2 \ partial у - приклад In [5] на Мал. 5.13 . Позначення похідної в Out [5] задано виразом (2,1), компоненти якого показують, що обчислена друга похідна по першому аргументу і перша похідна по другому аргументу. Вираз типу (2,1) називається мультиіндекс ( Е. М. Воробйов [1, с. 51] ). Сума компонент мультиіндекс дає порядок похідної. Якщо Mathematica не може явно обчислити похідну, вона зводить обчислення до виразів з видом Derivative [n1, n2, ...] [f]. У прикладі In [6] представлена внутрішня форма обчисленого виразу Out [5].
Якщо вираз, до якого застосована функція диференціювання, не містить змінних, за якими диференціювання здійснюється, то Mathematica D розглядає цей вислів як константу по змінним диференціювання. Тому при обчисленні похідної деякої функції необхідно обов'язково в явному вигляді вказувати її аргумент - див. відповідні приклади In [7] і In [8] на Мал. 5.13 . Якщо у функції двох аргументів один аргумент залежить від іншого, наприклад, , То цю залежність також слід явно вказувати - див. Приклад In [9].
Мал.5.13.
Знаходження приватних похідних
У Mathematica є функція Dt [expr, var], яка знаходить повну похідну виразу expr: вона розглядає всі символи в вираженні expr як функції від змінних var, за якими здійснюється диференціювання - приклад In [1] на Мал. 5.14 . Функція в спрощеному вигляді, без другого аргументу, Dt [expr], є диференціал виразу expr - приклад In [2].
Якщо диференціюється вираз expr містить будь-які константи, тобто, при диференціюванні їх похідні дорівнюють нулю, то їх можна вказати у відповідній опції, тобто, поставити функцію диференціювання у вигляді Dt [expr, var, Constants -> { const1, const2, ...}], де {const1, const2, ...} - список наявних в вираженні expr констант (приклади In [3] і In [4] на Мал. 5.14 ).
Детальніше про функції диференціювання см. Книги Е. М. Воробйова [1, с. 51-52] і А. Н. Прокопені і А. В. Чічуріна [5, с. 31-32] .
Мал.5.14.
Знаходження повних похідних
Інша найважливіша операція математичного аналізу - знаходження первісної. Первісна функції expr по аргументу arg знаходиться в Mathematica за допомогою функції Integrate [expr, arg]. По суті, знаходиться невизначений інтеграл, в якому відсутня константа інтегрування. Приклад In [1] знаходження первісної см. На Мал. 5.15 .
Mathematica також дозволяє обчислювати певні інтеграли: для цього другий вираз слід задати у вигляді списку, що містить змінну інтегрування expr, верхній uppval і нижній lowwal межі інтегрування. При цьому функція обчислення певного інтеграла буде виглядати наступним чином: Integrate [expr, {arg, lowval, uppval}]. на Мал. 5.15 . см. приклад In [2] знаходження певних інтегралів.
За допомогою все тієї ж функції Integrate Mathematica вміє обчислювати кратні інтеграли, як невизначені, Integrate [expr, arg1, arg2}], так і певні, Integrate [expr, {arg1, lowval1, uppval1}, {arg2, lowval2, uppval2}] , причому першим вказується змінна (або змінна з межами інтегрування), інтегрування по якій проводиться в останню чергу ( А. Н. Прокопеня і А. В. Чічурін [5, с. 34] ) - приклад In [3] на Мал. 5.15 .
Безумовно, кратний інтеграл можна обчислити послідовним знаходженням одиночних інтегралів за відповідними диференціалом, коли результат обчислення першого інтеграла вказується в якості подинтегрального вираження другого одиночного інтеграла і т.д. - пор. результати обчислень Out [3] і Out [4] на Мал. 5.15 .
Крім стандартних математичних функцій Mathematica дозволяє інтегрувати вирази, що містять спецфункцій. на Мал. 5.15 . представлений приклад In [5] інтегрування виразу, що містить функцію помилок.
Незважаючи на свої досить широкі можливості, Mathematica часом не може в символьному вигляді обчислити інтеграл, тобто, представити результат інтегрування у вигляді формули. В цьому випадку вона видає введене вираз без змін - приклад In [6] на Мал. 5.15 . Однак якщо в подинтегрального вираженні expr і межах інтегрування lowval і uppval всі параметри визначені (тобто, мають чисельну значенні), можна виконати чисельне інтегрування за допомогою функції NIntegrate [expr, {arg, lowval, uppval}]. У прикладі In [7] ми чисельно знайшли інтеграл, який не зуміли обчислити аналітично в In [6].
Детальніше про функції інтегрування см. Книги Е. М. Воробйова [1, с. 52-53] і А. Н. Прокопені і А. В. Чічуріна [5, с. 32-34] .