logo search
Інформатика відповіді

54Диференціювання за допомогою математичного пакету MathCad-14 та maple 13.

Операція диференціювання реалізована в Mathcad як в чисельній, так і в аналітичній формі і позначається за допомогою традиційного оператора, тобто відповідними математичними символами (подібно до складання або множення). Якщо розрахунки виконуються за допомогою обчислювального процесора, необхідно добре уявляти собі особливості чисельного алгоритму, дія якого залишається для користувача "за кадром". За допомогою Mathcad можна обчислювати похідні скалярних функцій будь-якої кількості аргументів, причому як функції, так і аргументи можуть бути і дійсними, і комплексними.

Для чисельного диференціювання Mathcad застосовує досить складний алгоритм, що обчислює похідну з колосальною точністю до 7— 8-го знаку після коми. Цей алгоритм (метод Ріддера) описаний у вбудованій довідковій системі Mathcad, доступній через меню Help (Довідка).

В результаті, при дуже малому кроці різницеві формули означають віднімання один з одного близьких чисел. В цьому випадку помилки обчислення функції f (х) стають домінуючими і приводять до істотного зростання сумарної погрішності обчислення різницевої похідної. Звідси якраз і слідує той вивід, що значення кроку слід вибирати "не дуже малим", інакше помилки обчислення f (х) неминуче зроблять результат диференціювання неправильним.

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

З урахуванням сказаного вище, з диференціюванням в Mathcad зазвичай не виникає складних проблем. Виняток становлять функції, які диференціюються в околиці сингулярної крапки; наприклад, для функції f (х)=1/х це будуть крапки поблизу х= 0. При спробі знайти її похідну х=0 (мал. 3.6) буде видано повідомлення про одну з помилок ділення на нуль "Can't divide by zero" (Ділення на нуль неможливе) або "Found а singularity while evaluating this expression. You may be dividing by zero" (Знайдена сингулярность при обчисленні цього виразу. Можливо, ви ділите на нуль).

MAPLE

із звичайними диференціальними рівняннями і системами цих рівнянь Maple справляється достатньо непогано. Якщо рівняння в принципі вирішується, то Maple, швидше за все, його вирішить. Корисною в цьому випадку буде процедура dsolve(), параметрами якої указуються рівняння (система рівнянь), початкові умови (якщо такі є), а також функція (або набір функцій для системи рівнянь), щодо якої це рівняння (систему) слід вирішувати.

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

Дуже часто доводиться стикатися з ситуацією, коли при чисельному рішенні тієї або іншої задачі необхідно обчислити похідну або вирішити диференціальне рівняння — в чисельному вигляді, зрозуміло. У цих випадках використовується все та ж процедура dsolve. Проте для знаходження чисельного рішення (або похідній в чисельному вигляді) при виклику процедури слід вказати опцію numeric. У всьому останньому синтаксис виклику процедури практично такий же, як і при пошуку аналітичних рішень, але деякі відмінності все ж таки є.

Процедура може використовуватися, як вже наголошувалося, для обчислення похідних, а також вирішення завдань Коші і краєвих завдань. За умовчанням при вирішенні завдань Коші застосовується метод Рунге-кутта-фелберга (Runge-kutta-fehlbeig) близько чотири-п'ять, а при вирішенні краєвих завдань — екстраполяція Річардсона (Richardson). Метод може бути змінений явною вказівкою значення опції method.