Как динамически определить несколько полиномов внутри цикла в Maxima
Итак... Я хочу создать пять различных полиномов внутри цикла, чтобы создать последовательность Штурма, но я не могу динамически называть набор полиномов с разными именами.
Например:
На первой итерации он определил бы p1(x):
Затем во второй итерации он определит p2(x):
Наконец, в N-й итерации он определил бы pn(x):
До сих пор мне удавалось просто хранить их в списке и вызывать их один за другим по позиции. Но наверняка есть более профессиональный способ сделать это?
Извините за нетехнический язык:)
1 ответ
Я думаю, что здесь нужна соответствующая переменная. Что-то вроде:
for k:1 thru 5 do
p[k] : make_my_polynomial(k);
затем p[1]
,..., p[5]
ваши полиномы.
Когда вы присваиваете подписной переменной, например, что-то вроде foo[bar]: baz
, где foo
Maxima не создает список или массив, поэтому он создает то, что он называет "необъявленным массивом", который является просто таблицей поиска.
РЕДАКТИРОВАТЬ: Вы можете ссылаться на подписанные переменные, не назначая им никаких значений. Например, вместо x^2 - 3*x + 1
ты мог бы написать u[i]^2 - 3*u[i] + 1
где u[i]
еще не назначено какое-либо значение. Многие (большинство?) Функций обрабатывают подписанные переменные так же, как и неподписанные, например diff(..., u[i])
дифференцировать по отношению u[i]
,