Правила формального синтаксиса команд Maple

Команды Maple для работы с процедурами, функциями и более сложными структурами

Версия для печати

Управляющие структуры

В Maple две управляющие структуры:

  • выбор if;
  • повторение for,
if cond1 then expr1 else expr2 end if;
if cond1 then expr1 elif cond2 then expr2 else expr3 end if;
for i from i1 by step to i2 do stats end do;
for i from i1 by step to i2 while cond1 do stats end do;
for i in expr1 do stats end do;
for i in expr1 do stats od;
for i in expr1 while expr2 do stats end do;

где cond1 и cond2 – условия,
expr1, expr2 – выражения,
stats – операторы,
i, i1, i2 – соответственно: переменная цикла, начальное и конечное значения i.

Эти операторы могут быть вложенными. Внутри цикла применяются операторы:
break – для прерывания цикла,
next – для продолжения до следующей итерации,
while – для наложения дополнительных условий.

Операторы endif и fi, enddo и od эквивалентны.

Задача 10.3. Двойной факториал

Определите функцию двойного факториала для любого целого n:

  • N1:=20; N2:=41;
  • FD:=proc(N) local P, i1, i;
  • P:=1;
  • if modp(n,2)=0 then i1:=2 else i1:=1 end if:
  • for i from i1 by 2 to N do P:=P*i; end do:
  • end proc:
  • printf('' %7.0f!! = %20.0f", N1, FD(N1));
  • printf('' %7.0f!! = %20.0f", N2, FD(N2));
Задача 10.4

Вычислить значения хi, где хi = (xi–1 + 1/xi–1), x0 = 1, пока |xiхi–1|< ε (i = 1, 2,..., n, n = 10, ε = 10–3).

  • n:=10; x:=1;
  • epsilon:=10?(-3);
  • for i from 1 to n do
  • xp:=x: x:=evalf((x+1/x));
  • if abs(x-xp)<=epsilon then break else printf("x= %20.8f \n", x) end if:
  • enddo
Задача 10.5

Найти целое N(x), x∈ [a, b], такое, что при a = 1, b = 2 и c = 2.

  • for x from a to b by 0.01 do S:=0:
  • for i from 1 to 100 while S
  • S:=S+evalf(i^(-x));
  • end do:
  • printf("x= %7.4f N(x)= %7d \n", x, i); end do: