Серия суммирования с использованием октавы
Можно ли сделать ряд суммирования в 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
Ответы
Ответ 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);
Как я могу рассчитать это суммирование? благодарю вас