• factorial(n) — функция вычисления факториала (альтернатива — оператор !);
• iquo(a,b) — целочисленное деление а на b;
• irem(a,b) — остаток от деления а на b;
• igcd(a,b) — наибольший общий делитель;
• lcm(a,b) — наименьшее общее кратное.
Факториал целого числа N задается как N= 1*2*3*...*N при особых случаях 0!=1 и 1!=1. Примеры применения функций, отмеченных выше (файл calcfun):
> [factorial(10),10!];
[3628800, 3628800]
> iquo(234,5);
46
> irem(234,5);
4
> lcm(124,3);
372
> [3!!, (3!)!];
[720, 720]
В последних двух примерах применения оператора факториала полезно обратить внимание, что запись n!! означает лишь (n!)!, а не n!! = 2*4*6*…, то есть произведение четных целых чисел. Действие других функций очевидно. Целочисленные функции, хотя и не все, не могут использоваться для символьных операций, например интегрирования или дифференцирования.
Полезность возможности Maple вычислять факториалы больших чисел демонстрирует следующий пример. Пусть в группе студентов 25 человек, а в году 365 дней. Тогда вероятность того, что ни у кого из студентов дни рождения не совпадают, составит:
> evalf(%);
р = 0.2780571566 10 -25
При обычной арифметике был бы получен 0 или сообщение о некорректности операций из за превышения разрядной сетки компьютера.
А вот еще более характерный пример такого рода. Пусть вероятность рождения мальчика 0.515. Какова вероятность того, что среди 1000 новорожденных мальчиков будет не менее половины. Расчетная формула требует вычисления факториала 1000!:
> evalf(%);
р = 0.8366435978
Если увеличить число рождаемых мальчиков до 10 или 100 тысяч, то такая задача может послужить хорошим тестом не только на работу с очень большими числами, но и на скорость вычислений. Решение таких задач без применения аппарата точной арифметики больших чисел встречает большие трудности, а подчас и просто невозможна.
3.2.5. Функции с элементами сравнения и их применение
Несколько хорошо известных функций использует при вычислениях средства сравнения чисел. Для действительного аргумента х это следующие функции:
• trunc(x) — при х>=0 возвращает наибольшее целое, меньшее или равное х, при x<0, trunc(x) = -trunc(-x).
• round(x) — округляет x до ближайшего целого.
• frac(x) — возвращает дробную часть х, так что frac(x) = х - trunc(x).
• floor(x) — возвращает наибольшее целое, меньшее или равное х.
• ceil(x) — возвращает наименьшее целое, большее или равное х.
Эти функции могут использоваться и для комплексного аргумента х. При этом справедливы следующие соотношения:
trunc(x) = trunc(Re(x)) + I*trunc(Im(x))
round(x) = round(Re(x)) + I*round(Im(x))
frac(x) = frac(Re(x)) + I*frac(Im(x))
ceil(x) = -floor(-x)
К этой категории относится и функция знака, синтаксис которой:
signum(x) signum(1,x) signum(0, х, у)
В основной (первой) форме она возвращает значение x/abs(x), где функция abs(x) — возвращает абсолютное значение действительного х, т.е. х при х> 0 и -х при х<0.
Действия, выполняемые этими функциями, вполне очевидны и читатель может легко проверить это на практике. Данные функции можно использовать для моделирования периодически повторяющихся зависимостей (сигналов). Несколько таких примеров представлено ниже (файл modsig — рис. 3.1):
> restart;
RC:=2-2*ехр(3*(floor(t/2)-t/2));
upside:=1/(3+2*sin(Pi*t));
sawtooth:=t-floor(t):
roundsquare: = (tanh(100*sin(Pi*t) )+1) /2:
squarewave:= (1+signum(sin (Pi*t)))/2;
blimps:=squarewave*sawtooth;
triang:=blimps+(squarewave-1)*(sawtooth-1);
plot([sawtooth+5, upside+3, RC,blimps-2,squarewave-4,roundsquare-6,triang-8],t=0..10,-8..6,
color=[red,orange,green,black,magenta,brown,blue], thickness=3);
Графики зависимостей, получаемые с помощью представленного выше примера показаны на рис. 3.1. Эти зависимости можно использовать в качестве моделей сигналов при моделировании электрических и электронных цепей (см. главу 11).
Рис. 3.1. Графики зависимостей, получаемых с помощью функций сравнения
3.2.6. Примеры вычисления тригонометрических функций
В ядре Maple (и других СКМ) определены следующие тригонометрические функции : sin — синус; cos — косинус; tan — тангенс; sec — секанс; csc — косеканс; cot — котангенс. Все эти функции являются периодическими (с периодом 2π, кроме тангенса и котангенса, у которых период равен π) и определены для действительного и комплексного аргументов. Примеры вычислений (файл calcfun):
Читать дальше
Конец ознакомительного отрывка
Купить книгу