Search code examples
octavesymbolic-math

How to use symprod with symbolic arrays?


I would like to have this equation solved symbolically:

x_i = x_0 + \prod_{j = 0}^{i-1}(a_{3-j})

I wrote the following script, which works until I call symprod:

try
  pkg load symbolic
end
a = sym('a', [1 3]);
syms x0 i
x0*symprod(a(i), i, [1 3])

The error message says:

error: subscript indices must be integers or boolean

However, this works:

a(2)

ans = (sym) a12

What is wrong with my code? (I also tried with Matlab Symbolic Toolbox; does not work either, but error message is different.)


Solution

  • The problem is already with the expression a(i), such indexing is not possible:

    >> a(i)
    error: subscript indices must be integers or boolean
    

    In a situation where a are the integer indices, you are probably better off using prod:

    >> prod(a)
    ans = (sym) a₁₁⋅a₁₂⋅a₁₃
    

    An alternative is to work with functions:

    >> syms fa(i)
    >> e=x0*symprod(fa(i), i, [1 3])
    e = (sym) x₀⋅fa(1)⋅fa(2)⋅fa(3)