Подтвердить что ты не робот

Серия суммирования с использованием октавы

Можно ли сделать ряд суммирования в Octave?

В matlab для него есть функция symsum, однако я не нашел ничего подобного для октавы.

Например, я хочу найти следующую сумму

Summation


Приложение:

Можно ли суммировать что-то вроде этого

f = @(x) nchoosek(5,x)*0.1.^x*0.9.^(5-x)

sum(f([0:5]))

Ошибка с ошибкой

error: called from:
error:   /usr/share/octave/3.6.4/m/help/print_usage.m at line 87, column 5
error:   /usr/share/octave/3.6.4/m/specfun/nchoosek.m at line 95, column 5
error:    at line -1, column -1
error: evaluating argument list element number 1
4b9b3361

Ответ 1

Если вам не требуется аналитическое решение, вам не нужно symsum. Например, если вы хотите вычислить

\sum_{k=1}^{5} k

вы можете просто использовать sum

sum([1:5])

Вот еще один пример:

\sum_{k=1}^{5} \exp(-k)

f = @(x) exp(-x)
sum(f([1:5]))

И еще один с factorial function:

\sum_{n=0}^{5} \frac{1}{n!} \approx e

g = @(n) 1 ./ factorial(n)
sum(g([0:5]))

то же, но без анонимной функции:

sum(1 ./ factorial([0:5]))

Update

Что касается вашего последнего примера, nchoosek допускает только скалярные аргументы. Итак, вам понадобится дополнительный вызов arrayfun:

f = @(x) nchoosek(5,x)*0.1.^x*0.9.^(5-x)
sum(arrayfun(f,[0:5]))

Ответ 2

но если у нас больше переменной, например, моя функция f (theta) = sigma (sin (k * theta)/k), k варьируется от 1 до 5, а theta определяется как theta = linspace (0, 2. * пи, 360);

Как я могу рассчитать это суммирование? благодарю вас