НОУ ІНТУЇТ | лекція | Символьні обчислення

  1. 5.2. Правила перетворень - підстановки Підстановки як з ключовим елементом одного з стилів програмування...

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 розглядає цей вислів як константу по змінним диференціювання. Тому при обчисленні похідної деякої функції Якщо вираз, до якого застосована функція диференціювання, не містить змінних, за якими диференціювання здійснюється, то 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] .

Уважаемые партнеры, если Вас заинтересовала наша продукция, мы готовы с Вами сотрудничать. Вам необходимо заполнить эту форму и отправить нам. Наши менеджеры в оперативном режиме обработают Вашу заявку, свяжутся с Вами и ответят на все интересующее Вас вопросы.

Или позвоните нам по телефонам: (048) 823-25-64

Организация (обязательно) *

Адрес доставки

Объем

Как с вами связаться:

Имя

Телефон (обязательно) *

Мобильный телефон

Ваш E-Mail

Дополнительная информация: