- •Вывод данных
- •Условная инструкция «if»
- •Цикл «for»
- •Цикл «while»
- •Процедуры
- •Команды ввода/вывода
- •Самостоятельные упражнения
- •Тема 5. Решение дифференциальных уравнений в системе Maple
- •Тема 6. Линейная алгебра в системе Maple
- •Матричные и векторные операции
- •Математические операции с матрицами и векторами
- •Команды работы со структурой матриц и векторов
- •Примеры применения некоторых команд линейной алгебры
- •Основные операции векторного анализа
Процедуры
Процедура на 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-файл, в остальных случаях - текстовый файл).
Самостоятельные упражнения
-
Если числа n и n+2 являются простыми, то они называются простыми числами-близнецами. Найдите все простые близнецы, не превосходящие 1000.
-
Рассмотрим четверки простых чисел, различающихся только последней цифрой (очевидно, это будут числа вида 10∙n+1, 10∙n+3, 10∙n+7, 10∙n+9). Найдите все такие четверки, не превосходящие 10000.
-
Два числа называются дружественными, если сумма всех делителей каждого из них (кроме самих этих чисел) равна другому числу, например, 220 и 284. Найдите все пары дружественных чисел, не превосходящих 10000.