У меня большие трудности с реализацией функции в Matlab, которая вызывает другие функции, которые я запрограммировал в разных файлах .m. Часть, в которой я застрял, - это часть, где берется сумма по различным значениям, введенным в другую функцию, где также есть сумма внутри другой функции. Нижняя граница первой суммы является верхней границей второй суммы.
У меня есть функция Hh (n, x), работающая правильно для n, введенного как вектор, и x, введенного как скаляр. Из-за векторизованного ввода n сумму по Hi внутри функции In можно быстро вычислить, вызвав sum(Hh(0:n,x)).
Я хочу сделать то же самое для функции In, но поскольку n внутри In теперь находится в диапазоне от 0 до k-1, а во внешней функции k находится в диапазоне от 1 до n, я не знаю, как вычислить эту двойную сумму, где внутренняя sum имеет нижнюю границу внешней суммы в качестве верхней границы. Я хочу вычислить эту двойную сумму как можно эффективнее, так как позже я хочу сделать много симуляций с этими формулами. Теперь я оцениваю функцию в n раз, сохраняя каждое значение в векторе, а затем беру сумму, которая требует больших вычислительных ресурсов...
Мой код Matlab для функции In:
function in = In(n,c,alphaa,betaa, delta)
ie = 0:n;
in = -(exp(alphaa*c)/alphaa)...
.*sum((betaa/alphaa).^(n-ie).*Hh(ie,betaa*c-delta))...
-(betaa/alphaa).^(n+1)
end
Код Matlab для внешней функции, назовем ее теперь функцией f:
function f = F(n,a,mu,sigma,eta1,T)
for k = 1: n
vector(k) = In(k-1,a-mu*T,-eta1,-1/(sigma*sqrt(T)),-(sigma*eta1*sqrt(T)));
end
f = sum(vector);
end
Как я могу сделать ввод n внутри In векторизованным, чтобы мне не нужно было хранить все введенные значения n отдельно, а затем вычислять сумму, а вычислять сумму непосредственно для введенного вектора n.
Любая помощь приветствуется, так как я серьезно застрял в данный момент! Заранее спасибо!