Как динамически определить несколько полиномов внутри цикла в Maxima - PullRequest
0 голосов
/ 17 января 2019

Итак ... Я хочу создать пять различных многочленов внутри цикла, чтобы создать последовательность Штурма, но мне не удается динамически назвать набор многочленов с разными именами.

Например:

На первой итерации будет определено p1 (x): что угодно

Тогда во второй итерации будет определено p2 (x): что угодно

Наконец, в N-й итерации будет определено pn (x): что угодно

До сих пор мне удавалось просто хранить их в списке и вызывать их по очереди в соответствии с их положением. Но наверняка есть более профессиональный способ сделать это?

Извините за нетехнический язык:)

1 Ответ

0 голосов
/ 18 января 2019

Я думаю, что здесь нужна соответствующая переменная. Что-то вроде:

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]) чтобы дифференцировать w.r.t. u[i].

...