Купить Matlab  |  Mathematica  |  Mathcad  |  Maple  |  Statistica  |  Другие пакеты Поиск по сайту
Internet-класс  |  Примеры  |  Методики  |  Форум  |  Download
https://hub.exponenta.ru/


Программирование в среде Maple


В начало книги

 

Предметный указатель

Программирование свойств и правил вычисления функций и операторов. Программирование правил вычисления
К предыдущему разделуК следующему разделу

Если мы хотим, чтобы выражения, включающие заданную нами функцию преобразовывались, упрощались и вычислялись по некоторым правилам, необходимо эти правила задать. Программа Maple V имеет программируемые входы для многих команд, таких как simplify , diff , expand, series , evalf , и многих других функций.

Например, чтобы задать правила дифференцирования функции H, нужно определить процедуру с именем `diff/H`, задающую правило дифференцирования H.

Если процедура `diff/H` определена, то вызов функции diff(H(x, y, ...), y) будет вызывать `diff/H`(x,y,...,y), чтобы вычислить производную.

В качестве примера научим Maple вычислять производную функции H от одной переменной H(x)

> restart;`diff/H` := proc(x,y) H(x)*diff(x,y)/x end:

> diff(H(x),x);

[Maple Math]

> diff(H(g(x)),x);

[Maple Math]

> diff(H(sin(x)),x);

[Maple Math]

> evalf(subs(x=Pi/2,%));

[Maple Math]

Читатель без труда узнает по правилу вычисления производной в функции H натуральный логарифм.

Точно также, пользователь может задать собственные правила упрощения при помощи некоторой процедуры. Если процедура `simplify/f`задана, то вызов функции simplify(a,f) задействует `simplify/f`(a).

Научим, например Maple упрощениям H(x^n)=n*H(x) и H(x*y)=H(x)+H(y).

> restart;
`simplify/H` := proc(y)
local x;
if op(0,y)=H then
if type(op(y),`^`) then x:=op(1,op(y))
elif type(op(y),`*`) then RETURN(H(op(1,op(y)))+H(op(2,op(y))))
else RETURN(y)
fi;
op(2,op(y))*H(x);
else y;
fi;
end;

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

> op(0,H(sin(y)^5));simplify(H(sin(y)^5),H);

[Maple Math]

[Maple Math]

> simplify(H(sin(x)*cos(y)),H);

[Maple Math]

> expand(ln(sin(x)^n),H);

[Maple Math]

Функции expand и series также можно научить выполнять операции над введенными пользователем функциями. Если процедура ` expand /f` задана, то выполнение expand (f(x)); будет приводить к выполнению ` expand /f`(x);

Один из способов задания вычисления значений определенной функции - использование разложения в ряд функции, если он известен. Пользователь может научить Maple разлагать функцию в ряд командой series . Если процедура ` series /f` задана, то выполнение series (f(x,y),x) вызовет выполнение ` series /f`(x,y,x) для вычисления ряда. Заметим, что эта определенная пользователем функция `series/f` будет создавать структуру типа series , а не полином ( polynomial ). Чтобы получить вычисляемый полином нужно применить команду convert (выражение, polynom).

В начало страницы К предыдущему разделуК следующему разделу

Предметный указатель

| На первую страницу | Поиск | Купить Matlab

Исправляем ошибки: Нашли опечатку? Выделите ее мышкой и нажмите Ctrl+Enter


Copyright © 1993-2024. Компания Softline. Все права защищены.

Дата последнего обновления информации на сайте: 04.03.17
Сайт начал работу 01.09.00