2014-09-23 3 views
2

Я хочу создать многочлен с заданными коэффициентами. Это кажется очень простым, но то, что я нашел до сих пор, похоже, не было тем, чего я хотел. Например, в такой среде;Учитывая список коэффициентов, создайте многочлен

n = 11 
K = GF(4,'a') 
R = PolynomialRing(GF(4,'a'),"x") 
x = R.gen() 
a = K.gen() 
v = [1,a,0,0,1,1,1,a,a,0,1] 

Учитывая список/вектор v длины п (обращу это п и V в начале), я хочу, чтобы получить полином v(x) в v[i]*x^i. (На самом деле после этого я собираюсь построить кольцо фактов GF(4,'a')[x] /< x^n-v(x) > после получения этого v(x) сверху), тогда я скажу;

S = R.quotient(x^n-v(x), 'y') 
y = S.gen() 

Но я не мог его написать.

ответ

1

Это часто задаваемый вопрос во многих местах, так что лучше оставить его здесь в качестве ответа, хотя ответ у меня есть, так просто:

Я просто написал R(v) и он дал мне многочлен:

sage 
n = 11 
K = GF(4,'a') 
R = PolynomialRing(GF(4,'a'),"x") 
x = R.gen() 
a = K.gen() 

v = [1,a,0,0,1,1,1,a,a,0,1] 
R(v) 

x^10 + a*x^8 + a*x^7 + x^6 + x^5 + x^4 + a*x + 1 
0

В принципе (т. Е. Игнорируя особенности вашего кольца полиномов) у вас есть список/вектор v длины n, и вам нужен полином, который является суммой всех v [i] * x^i. Заметим, что эта сумма равна матричному произведению V.X, где V - матрица с одной строкой (по существу равная вектору v), а X - матрица столбцов, состоящая из степеней x. В Maxima можно написать

V: [1, а, 0,0,1,1,1, а, а, 0,1] $ п: длина (v) $ V: (матрица v) $ X: genmatrix (lambda ([i, j], x^(i-1)), n, 1) $ VX;

Выход

х^10 + а х^8 + а х^7 + х^6 + х^5 + х^4 + а * х + 1

Смежные вопросы