Как динамически определить несколько полиномов внутри цикла в 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],

Другие вопросы по тегам