Иллюстрированный самоучитель по Mathematica
Вычисление сумм
Вычисление сумм в аналитическом виде
В числе операций
математического анализа прежде всего надо отметить суммы
Сумма
от i=min до imax по fi
В этих операциях
индекс i принимает целочисленные значения от минимального (начального) imin
до максимального (конечного) imax с шагом, равным +1.
Суммы и произведения
легко вычисляются численными математическими системами, такие вычисления просто
описываются на всех языках программирования. Однако важным достоинством систем
символьной математики, включая Ма-thematica, является вычисление сумм и произведений
в аналитическом виде (если это возможно) и при большом числе членов — вплоть
до стремящегося к бесконечности.
Для вычисления
сумм в системе Mathematica предусмотрена функция
Sum, используемая в ряде форм:
-
Sum [ f, {i, imax}
] — вычисляет сумму значений f при изменении индекса i от 1 до imax с шагом
+1;
-
Sum[f, {i, imin,
imax}]—вычисляет
сумму значений f при изменении индекса i от минимального значения
i=imin до
максимального i=imax с шагом +1;
-
Sum[f, {i, imin,
imax, di}]— вычисляет сумму значений f при изменении управляющей переменной вещественного
типа от минимального значения i=imin до максимального
i=imax с шагом di;
-
Sum[f, {i, imin, imax},
{j, jmin, jmax},...] — вычисляет многократную сумму значений f при изменении
индексов i от imin до imax с шагом +1, j от jmin до jmax с шагом +1 и т. д.
(число индексов не ограничено).
Таким образом,
эта функция обеспечивает расширенные возможности вычисления сумм — как при целочисленных,
так и при вещественных значениях управляющих переменных, задающих циклы вычислений.
Примеры использования функций суммирования:
Sum[i^2,{i,10}]
385
Sum[i*2,{i,l,10}]
385
Sum[i^2,
{1,1,2,0.25}]
11.875
Sum[i*j,
{i,1,10},{j, 2, 5}]
770
В последнем
примере использована стандартная форма вывода — при ней функция суммирования
представляется в виде оператора суммирования.
Обычно в
математических системах недопустима перестановка imin и
imax, хотя в математике
известно школьное правило — от перестановки слагаемых сумма не изменяется. Рискнем
проверить это:
Sum[i,{i,
1,100}]
5050
Sum[i,
{1,100,1}]
0
Sum[i,
{1,100, 1,-1}]
5050
Второй пример
тут дал явно ошибочный результат, хотя третий с честью оправдал указанное правило.
Не
применяйте установки параметров, противоречащие синтаксису записи той или иной
функции — в частности, Sum. Это чревато возникновением серьезных ошибок.
Приведем
еще ряд примеров выполнения операции суммирования:
Sum[
xn/n! , {n, 0, 8}]
1+X+X2/2
X3/6 X4/24 X5/120 X6/720 X7/5040
X8/40320
Sum[xn/n!
, {n, 1, 9, 2}]
X+X3/3
X5/120 X7/5040 X9/362880
Sum[xi yi , {i, 1, 4},{j, 1, i}]
xy+ x2
у + x3 у + x4 у + x2:/2 + x3
у2 + x4y2 + x3 у3 + x4
у3 + x4y4
Sum[1/n*n
, {n, 1, бесконечность}]
л2/6
Sum[i4 {i, 1, n}]
1/30n(1-n)(1+2n)
(-l + 3n+3n2)
1/3(3 - 3 EulerGamma
+ 2 n + n3) - PolyGamma[0, 2 + n]
Из этих примеров
видно, что Mathematica 3/4 обеспечивает возможность символьного вычисления сумм,
в том числе с бесконечным пределом суммирования. Вычисляются даже суммы, выраженные
через специальные математические функции (см. последний пример). При этом для
вычисления сумм в символьном виде, в отличие от предшествующих версий
Mathematica,
уже не требуется загрузка специального пакета для расширенных (символьных) операций
с суммами.
Вычисление сумм в численном виде
Для вычисления
сумм в численном виде используются следующие функции:
-
NSum[f, {i, imin, imax
}]— возвращает численное значение суммы f [ i ]
при i, изменяющемся от imin до imax с шагом +1;
-
NSumff, {i, imin,
imax,
di }]— возвращает сумму численных значений
функции
f [i] при i, изменяющемся от imin до imax с шагом
di;
-
NSum[f, {i, imin,
imax}, {j, jmin, j max },...]— выполняет многомерное суммирование. Функция
NSum[...
] эквивалентна выражению N[Sum[...]
].
Особенностью
этой функции является возможность использования ряда опций, управляющих вычислительным
процессом. Одной из них является NSumTerms, задающая число членов, которые явно
должны быть включены в сумму перед экстраполяцией. Вы можете просмотреть список
опций, используя команду Options [NSum] .
Пример применения функции NSum представлен
ниже:
NSum[1/i3,
{i, 1, бесконечность}]
1.20206
Пример точного
вычисления суммы (для сравнения) с помощью функции
Sum:
truesum
= Sum [1+k/ 2k k/ 3k{k, 1, 50}
1818632874295681087853745424762603034467
/ 808281277464764060643139600456536293376
N[%]
2.25
Пример вычисления
той же суммы с помощью функции NSum с опциями:
NSum
[ 1+k/ 2 k -3k, {k, 1, 50}, Method
-> SequenceLimit,
NSumTerms
-> 2 , NSumExtraTerms -> 4 ] - truesum
0.0530365
При следующем
наборе опций результат еще лучше:
NSum
[ 1+k/ 2 k -3k, {k, 1, 50}, Method
-> SequenceLimit,
WorkingPrecision -> 30 , NSumTerms -> 2 ,
NSumExtraTerms
-> 10, WynnDegree -> 4] - truesum
0.x10-26
Функция вычисления
суммы NSum выполняется заметно быстрее, чем функция
Sum, хотя на практике заметить
это трудно — все приведенные выше примеры выполняются за доли секунды. Возвращаемый
функцией NSum результат вещественный.
|