Maple 9.5/10 в математике, физике и образовании - Владимир Дьяконов
Шрифт:
Интервал:
Закладка:
> MinimalRepresentation[1](F,n,k);
Глава 4
Практика математического анализа
Математический анализ — одна из самых благодатных областей применения систем компьютерной алгебры [36–46]. В этой главе описано решение с помощью СКА Maple наиболее важных задач математического анализа. Особое внимание в этой главе уделено визуализации записи исходных выражений и результатов вычислений, а также проверке последних.
4.1. Вычисление сумм последовательностей
4.1.1. Основные функции для вычисления сумм последовательностей
Начнем рассмотрение задач математического анализа с вычисления сумм последовательностей. Вычисление суммы членов некоторой последовательности f(k) при изменении целочисленного индекса k от значения m до значения n с шагом +1, то есть выражения
является достаточно распространенной операцией математического анализа. Для вычисляемой и инертной форм сумм последовательностей служат следующие функции:
sum(f,k);
sum(f,k=m..n);
sum(f,k=alpha);
Sum(f,k);
Sum(f,k=m..n);
Sum(f,k=alpha).
Здесь f — функция, задающая члены суммируемого ряда, k — индекс суммирования, тип — целочисленные пределы изменения k, alpha — RootOf-выражение. Значение n может быть равно бесконечности. В этом случае для n используется обозначение ∞ или infinity. Допустимо (а зачастую рекомендуется с целью исключения преждевременной оценки суммы) заключение f и k в прямые кавычки — например, sum('f', 'k'=m..n). Рекомендуется все примеры проверять после команды restart, убирающей предыдущие определения f и k.
Внимание! При вычислении сумм (и произведений) последовательностей надо строго соблюдать прямой (нарастающий) порядок задания значений индексной переменной суммы. Нарушение этого порядка чревато грубыми ошибками. Так что правила о том, что при измени порядка суммируемых или умножаемых членов последовательности сумма и произведения не меняются в данном случае не поддерживаются на программном уровне.
4.1.2. Последовательности с заданным числом членов
Простейшими являются суммы последовательностей с фиксированным числом членов. Ниже даны примеры применения этих функций (файл sum):
> restart;k:=2;
k:= 2> Sum(k^2,k=1..4);
> sum(k^2,k=1..4);
Error, (in sum) summation variable previously assigned, second argument evaluates to k=1..4
> sum('k^2','k'=1..4);
30> sum(1/i,i=1..100);
> evalf(%);
5.187377518Обратите внимание, что во втором примере система отказалась от вычисления, а в третьем даже выдала сообщение об ошибке, связанную с тем, что переменной k перед вычислением сумм было присвоено численное значение 2. После заключения выражения и переменной индекса k в прямые кавычки ошибка исчезла, поскольку такая операция означает, что переменной придается неопределенное значение.
4.1.3. Суммы с известным пределом
Особый класс образуют последовательности, у которых существует их предел в аналитическом виде. Ниже представлен ряд последовательностей, у которых переменная индекса задается как 0..n или 1..n (файл sum):
> restart;
> sum(k, k=1..n);
> sum(i/(i+1),i=0..n);
n + 1 - Ψ(n +2) - γ> sum(k*binomial(n,k),k=0..n);
Некоторые из таких сумм выражаются через специальные математические функции.
4.1.4. Суммы бесконечных рядов
Многие суммы бесконечных рядов сходятся к определенным численным или символьным значениям, и система Maple способна их вычислять. Это поясняют следующие примеры (файл sum):
> restart;
> sum(-exp(-k), k);
> sum(k*a^k,k);
> sum(1/k!,k=0..infinity);
e> Sum(1/i^2, i=1..infinity) = sum(1/i^2, i=1..infinity);
> Sum(1/n!, n=1..infinity) = sum(1/n!, n=1..infinity);
> evalf(%);
1.718282828 = 1.718281828> Sum(1/i^2, i)=sum(1/i^2, i);
4.1.5. Двойные суммы
Могут встречаться множественные суммы по типу «сумма в сумме». Ограничимся приведением примера двойной суммы, имеющей аналитическое значение (файл sum):
> Sum(Sum(k^2, k = 1..m), m = 1..N); factor(simplify(value(%)));
При конкретном значении N такую сумму нетрудно вычислить подстановкой:
> subs(N = 100, %);
8670850Как видно из приведенных примеров, средства вычисления сумм последовательностей Maple 9.5/10 позволяют получать как численные, так и аналитические значения сумм, в том числе представляемые специальными математическими функциями.
4.1.6. Пакет вычисления специальных сумм sumtools
Возможности вычисления специальных сумм существенно расширяются при использовании инструментального пакета вычисления специальных сумм sumtools. При его вызове выводится список функций пакета:
> with(sumtools);
[Hypersum, Sumtohyper, extended_gosper, gosper, hyperrecursion, hypersum, hyperterm, simpcomb, sumrecursion, sumtohyper]Назначение функций данного пакета перечислено ниже:
hypersum(U, L, z, n) и Hypersum(U, L, z, n) — вычисление гиперсумм;
sumtohyper(f, k) и Sumtohyper(f, k) — преобразование сумм в гиперсуммы;
extended_gosper(f, k), extended_gosper(f, k=m..n) и extended_gosper(f, k, j) — реализация расширенного алгоритма Госпера;
gosper(f, k) и gosper(f, k=m..n) — реализация алгоритма Госпера;
hyperrecursion(U, L, z, s(n)) — реализация гиперрекурсионного алгоритма;
hyperterm(U, L, z, k) и Hyperterm(U, L, z, k) — ввод гипергеометрического терма.
4.1.7. Примеры вычисления специальных сумм
Приведем примеры на вычисление специальных сумм с помощью функций пакета sumtools (файл sumtools):
> extended_gosper(k*(k/2)!, k);
> extended_gosper(k*(k/2)!,k,2);
> extendedgosper(k*(k/2)!,k=1..n);
> gosper(k*(k/2)!,k);
FAIL> gosper(pochhammer(k,n),k);
> hyperrecursion([-n,a],[b],1,f(n));
(-n + a = b + 1)f(n - 1) + (n + b - 1)f(w)> Hypersum([a,1+a/2,b,c,d,1+2*a-b-c-d+n, -n],
[a/2,1+a-b,1+a-c,1+a-d,1+a-(1+2*a-b-c-d+n),1+a+n],1,n);
Hyperterm([1, 1+a, a-d-c+1, a+1-d-b, a-с+1-b], [1+a-d, 1+a-c, 1+a-b, a-b-c-d+1, 1, n])> simpcomb(binomial(n,k));
> sumrecursion(binomial(n,k)^3,k, f(n));
-8(n - 1)²f(n - 2) - (7n² - 7n + 2)f(n - 1) + f(n)n²> hyperterm([a,b], [c],z,k);
Из этих примеров применение функций данного пакета достаточно очевидно.
4.2. Вычисление произведений членов последовательностей
4.2.1. Основные функции для произведения членов последовательностей
Аналогичным образом для произведений членов f(i) некоторой последовательности, например вида
используются следующие функции:
product(f, k);
product(f, k=m..n);
product(f, k=alpha);
Product(f, k);
Product(f, k=m..n);
Product(f, k=alpha).
Обозначения параметров этих функций и их назначение соответствуют приведенным для функций вычисления сумм. Это относится, в частности, и к применению одиночных кавычек для f и k.
4.2.2. Примеры вычисления произведений членов последовательностей
Примеры применения функций вычисления произведений даны ниже (файл product):
> restart;
> Product(k^2,k=1..5)=product(k^2, k=1..5);
> Product(k^2, k)=product(k^2,k)
> product(а[k],k=1..5);
a1 а2 а3 а4 a5> f:= [1, 2, 3, 4, 5];
f:=[1, 2, 3, 4, 5]> product(f[k],k=1..4);
24> product(n+k,k=1..4);
(n + 1)(n + 2)(n + 3)(n +4)> Product(n+k,k=1..m)=product(n+k,k=1..m);
> product(k,k=RootOf(x^3-9));
9Как и в случае вычисления сумм, вычисление произведений возможно как в численной, так и в аналитической форме — разумеется, если таковая существует. Это показывают следующий пример:
> Product(2/i,i=1..infinity)=product(2/i,i=1..infinity);
Нетрудно понять, что при i, стремящемся к бесконечности, перемножаемые члены последовательности стремятся к нулю, а потому к нулю стремится и их произведение.
4.3. Вычисление производных
4.3.1. Определение производной и полного дифференциала
Если f(x) непрерывная функция аргумента х, то производная этой функции
(4.1)
Как известно, значение производной геометрически характеризуется наклоном касательной к графику f(х) в точке x=0. Простейший способ наблюдать построение касательной к заданной точке функции заключается в применении функции showtangent из пакета student. Например, команды