Прежде чем кодировать формулу в MATLAB, вы можете выполнить много простых действий. Сначала определите функцию f(i)
следующим образом:
f(i) = Log(b(i)/b(i-1)) = Log(b(i)) - Log(b(i-1))
Затем, применяя функцию Sum
, как вы ее определили, вы можете видеть, что многие термины взаимно отменяют друг друга:
Sum(f(i),10) = f(i) + f(i-1) + ... + f(i-8) + f(i-9)
= Log(b(i)) - Log(b(i-1)) +
Log(b(i-1)) - Log(b(i-2)) +
... +
Log(b(i-8)) - Log(b(i-9)) +
Log(b(i-9)) - Log(b(i-10))
==> Sum(f(i),10) = Log(b(i)) - Log(b(i-10))
Теперь вот немного сложнее, потому что есть потенциально два способа интерпретировать ваши вложенные Sum
операции: один, где внутренняя переменная суммирования i
зависит от внешней переменной суммирования i
, и тот, где внутренняя переменная суммирования i
равна независимая от внешней переменной суммирования i
.
Когда внутренний i
зависит от внешнего i
...
затем для каждого члена внешнего суммирования внутреннее суммирование вычисляется, начиная с уменьшенного значения i
для этого члена. Например, пятый член внешнего суммирования будет выглядеть так:
... + f(i-4) - Sum(f(i-4),10) + ...
Уравнение для a(i)
будет поэтому упрощаться следующим образом:
a(i) = Sum(f(i) - Sum(f(i),10),10)
= Sum(Log(b(i)) - Log(b(i-1)) - Log(b(i)) + Log(b(i-10)),10)
= Sum(Log(b(i-10)) - Log(b(i-1)),10)
= Log(b(i-10)) - Log(b(i-1)) +
Log(b(i-11)) - Log(b(i-2)) +
... +
Log(b(i-18)) - Log(b(i-9)) +
Log(b(i-19)) - Log(b(i-10))
[b(i-11)*b(i-12)*...*b(i-18)*b(i-19)]
==> a(i) = Log[-----------------------------------]
[ b(i-1)*b(i-2)*...*b(i-8)*b(i-9) ]
И это окончательное уравнение можно кодировать в MATLAB следующим образом:
a(i) = log(prod(b(i-(11:19)))/prod(b(i-(1:9))));
Когда внутренний i
не зависит от внешнего i
...
тогда результат внутреннего суммирования по существу будет казаться постоянным по отношению к внешнему суммированию. Например, пятый член внешнего суммирования будет выглядеть так:
... + f(i-4) - Sum(f(i),10) + ...
Следовательно, уравнение для a(i)
будет упрощаться следующим образом:
a(i) = Sum(f(i) - Sum(f(i),10),10)
= Sum(f(i),10) - 10*Sum(f(i),10)
= -9*Sum(f(i),10)
= 9*Log(b(i-10)) - 9*Log(b(i))
==> a(i) = 9*Log(b(i-10)/b(i))
И это окончательное уравнение можно кодировать в MATLAB следующим образом:
a(i) = 9*log(b(i-10)/b(i));