Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lection6 Maple_2.doc
Скачиваний:
41
Добавлен:
17.12.2018
Размер:
180.22 Кб
Скачать

Процедуры

Процедура на Maple-языке выглядит следующим образом:

> name:=proc( формальные параметры)

тело процедуры (выражения от формальных параметров)

end;

Вызов процедуры осуществляется по имени. Возвращаемым значением по умолчанию является значение последнего оператора из тела процедуры. Например, процедура с именем f, вычисляющая сумму переменных x и y:

> f:=proc(x,y)

x+y;

end;

Результатом вызова f(u,sin(v)) будет выражение u+sin(v):

> f(u,sin(v));

При написании процедур можно вводить локальные, определенные только внутри данной процедуры, переменные, используя описатель local. Для присвоения результату работы процедуры различных значений и выхода из нее в любом месте тела процедуры используется команда RETURN(val). Для сигнализации об ошибке и выхода из процедуры используется команда ERROR(`string`). Таким образом, общий вид процедуры следующий:

> name:=proc(parameters)

local val1,...,valn;

тело процедуры, в т.ч. могут встречаться RETURN(…)

end;

В пакете Maple процедура-функция задается следующим образом:

> name:=(parameters)->expr;

Пример:

> f:=(x,y)->x+y;

> simplify( f(sin(x)^2,cos(x)^2) );

Для задания функции переменной var со значениями expr используется команда

> unapply(expr,var);

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

Пример:

> p :=t^2 + sin(t) + 1;

> f := unapply(p,t);

> f(Pi/6);

Команды ввода/вывода

В данном разделе приводятся некоторые процедуры ввода-вывода. Система Maple предоставляет возможность представлять и сохранять полученные результаты в различных форматах: Maple-формате, в формате языка C, в формате языка FORTRAN и т.д.

Вывод выражения в виде FORTRAN/C-операторов осуществляется по команде:

> fortran/C([выражение]);

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

> with(CodeGeneration):

Пример:

> with(CodeGeneration):

> C([d=x+y], declare=[x::numeric, y::integer]);

d = x + (double) y;

Более сложный пример:

> with(CodeGeneration):

> f := proc(x::Vector(4), n::integer)

local i;

for i to 4 do x[i]:=10*i+87

end do;

end proc:

> C(f, deducereturn=false);

void f (int x[4], int n)

{

int i;

for (i = 1; i <= 4; i++)

x[i - 1] = 10 * i + 87;

}

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

> writeto(`name.ext`);

после этого все результаты будут записаны в файл с именем name. В зависимости от расширения файла ext тип файла может быть различным (расширение ms - файл Maple-сеанса, m - внутренний Maple-файл, в остальных случаях - текстовый файл).

Самостоятельные упражнения

  1. Если числа n и n+2 являются простыми, то они называются простыми числами-близнецами. Найдите все простые близнецы, не превосходящие 1000.

  2. Рассмотрим четверки простых чисел, различающихся только последней цифрой (очевидно, это будут числа вида 10∙n+1, 10∙n+3, 10∙n+7, 10∙n+9). Найдите все такие четверки, не превосходящие 10000.

  3. Два числа называются дружественными, если сумма всех делителей каждого из них (кроме самих этих чисел) равна другому числу, например, 220 и 284. Найдите все пары дружественных чисел, не превосходящих 10000.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]