Как использовать symprod с массивами symboli c? - PullRequest
0 голосов
/ 06 марта 2020

Я бы хотел, чтобы это уравнение было решено символически:

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

Я написал следующий скрипт, который работает до тех пор, пока я не вызову symprod:

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

Сообщение об ошибке гласит:

ошибка: индексы индекса должны быть целые или логические

Однако это работает:

a(2)

ans = (sym) a12

Что не так с моим кодом ? (Я также пробовал с Matlab Symboli c Toolbox; тоже не работает, но сообщение об ошибке другое.)

1 Ответ

1 голос
/ 06 марта 2020

Проблема уже с выражением a(i), такая индексация невозможна:

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

В ситуации, когда a являются целочисленными индексами, вам, вероятно, лучше использовать prod:

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

Альтернативой является работа с функциями:

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