Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Свод.doc
Скачиваний:
119
Добавлен:
08.03.2016
Размер:
2.1 Mб
Скачать

4.6. Преобразование функций.

Возможно преобразование функций, т. е. их выражение через другие (стандартные) функции). Оператор convert. Второй параметр указывает, через какие функции требуется выразить данную. Конечно, не все преобразования возможны; если они невозможны, программа сообщит об этом. Примеры:

> convert(cos(x), sin); convert(cosh(x), exp); convert(sinh(x), exp);

Гиперболические косинус и синус выражаются через экспоненту действительного аргумента, и наоборот:

> convert(exp(x),sinh); simplify(%);

Формулы Эйлера (для показательной функции мнимого аргумента):

> simplify(convert(exp(x*I), sin)); simplify(convert(exp(-x*I), sin));

В некоторых случаях можно, не конкретизируя, указать класс преобразований (функций) - например, поставить второй параметр trig (см. ниже):

> convert(exp(x*I),trig);

Сравните этот результат с предыдущим.

>

4.7. Условия на переменные и параметры.

При некоторых преобразованиях, а более того при решении уравнений, и в некоторых операциях математического анализа, результат может зависеть от свойств неизвестной величины или параметра операции. В некоторых случаях результат не может быть получен вообще, если эти свойства не указаны. Для устранения возникших трудностей оказывается необходимо доопределить эту величину, указав её свойства, для чего служит оператор assume (присоединение). Пример его применения см. ниже (без дополнительного условия программа не даёт однозначно определённого результата).

> sqrt(a^2);

> ln(exp(a));

> Re(a+1); Im(a+1);

> assume(a>0); sqrt(a^2); sqrt(-a^2);

> ln(exp(a));

> Re(a+1); Im(a+1);

На константы условия не накладываются. По умолчанию величина, на которую наложено условие, выводится в результат со знаком "~" (тильда). И далее, если вводится команда, содержащая именно эту величину, следует присоединять к ней этот символ, без этого программа считает ту же букву другим параметром. Используемая в электронном пособии версия настроена так, что знак "тильда" не выводится на экран, чтобы не загромождать запись (это надо помнить!). Но из-за этого может возникнуть взаимное непонимание между программой и пользователем. Другие случаи применения условий будут рассмотрены далее. Разные типы условий содержатся в Help на assume.

>

5. Вычисления множества значений функции.

Вычисление одного данного выражения с помощью оператора eval или evalf рассмотрено в п. 3.5. Вычисление нескольких выражений для данного значения аргумента возможно с помощью оператора списка присвоением или подстановкой.

> x:=2; eval([1, x, x^2, x^3, x^4]);

> eval(subs(x=2,[1, x, x^2, x^3, x^4]));

Для получения большого массива численных значений, пригодного для составления таблиц и сверки с данными опыта, используются специальные подпрограммы расчёта по циклам, в которых множество значений данного выражения получается многократным исполнением командной строки для данного множества значений аргумента. При этом в вычисляемом выражении должен быть только один буквенно обозначенный аргумент!

5.1. Вычисление множества значений данной функции для множества значений аргумента с заданным шагом.

Структура команды. (for - для, from ... to - начало и конец интервала значений аргумента х; by ... - шаг, do, od - специальные символы в команде). Следите за пробелами в команде!

> for x from 0 by 0.1 to 1 do y:=1.5+0.61*x od;

Для более компактного вида результата можно округлить его вывод меньшим числом десятичных знаков

> for x from 0 by 0.1 to 1 do y:=1.5+0.61*x od;

В 1-м примере точность вычисления определена настройкой по умолчанию, во 2-м (только для данного случая - apply to session) настройкой установлена точность двух десятичных знаков.

Возможно применение к результатам внутреннего оператора. Ниже пример - вычисление в десятичных числах с точностью по умолчанию.

> for x from -1 by 0.2 to 1 do u:=evalf(exp(-x)+1) od;

>