2015-04-05 4 views
0

У меня есть полином, как этот:coeffs возвращает коэффициенты в очень странном порядке

p := -1.604609130*10^(-11)*z^9+.1111140258*z^8+3.210741142*10^(-11)*z^7-.3955586214*z^6-2.108471910*10^(-11)*z^5+.6692726719*z^4+5.024523477*10^(-12)*z^3-.8174429322*z^2-3.142106870*10^(-13)*z+.9089252367 

Вы видите, только регулярный многочлен с числовыми коэффициентами. Тогда я называю coeffs на него и получить это:

> coeffs(p, z, 't'); t 
              -11     
0.9089252367, -0.3955586214, -2.108471910 10 , 0.6692726719, 

       -12        -11 
    5.024523477 10 , -0.8174429322, -1.604609130 10 , 

           -11     -13 
    0.1111140258, 3.210741142 10 , -3.142106870 10 
        6 5 4 3 2 9 8 7 
       1, z , z , z , z , z , z , z , z , z 

Почему на Земле она возвращает коэффициенты в таком порядке ?! Я ожидал бы, что это будет либо от высших сил до более низких сил (как в MATLAB), либо от более низких мощностей до высших сил (как в Mathematica), но Maple делает что-то совершенно странное. Моя программа зависит от порядка коэффициентов, извлеченных coeffs, поэтому я просто не могу его использовать.

Есть ли способ в Maple для извлечения коэффициентов в каком-то нормальном порядке?

ответ

1

Для этого необходимо использовать CoefficientList или CoefficientVectorcommands.

Обратите внимание на комментарии относительно эффективности относительно использования coeffs для этого, на этой странице справки.

Эти команды также имеют возможность возврата коэффициентов в обратном порядке.

restart: 

p := -1.604609130*10^(-11)*z^9 + .1111140258*z^8 + 3.210741142*10^(-11)*z^7 
    -.3955586214*z^6 - 2.108471910*10^(-11)*z^5 + .6692726719*z^4 
    + 5.024523477*10^(-12)*z^3 - .8174429322*z^2 - 3.142106870*10^(-13)*z 
    + .9089252367: 


V := PolynomialTools:-CoefficientVector(p, z); 

          [  0.9089252367] 
          [     ] 
          [    -13] 
          [-3.142106870 10 ] 
          [     ] 
          [  -0.8174429322] 
          [     ] 
          [    -12] 
          [ 5.024523477 10 ] 
          [     ] 
          [  0.6692726719] 
          [     ] 
         V := [    -11] 
          [-2.108471910 10 ] 
          [     ] 
          [  -0.3955586214] 
          [     ] 
          [    -11] 
          [ 3.210741142 10 ] 
          [     ] 
          [  0.1111140258] 
          [     ] 
          [    -11] 
          [-1.604609130 10 ] 


L := PolynomialTools:-CoefficientList(p, z); 

     [        -13        -12 
L := [0.9089252367, -3.142106870 10 , -0.8174429322, 5.024523477 10 , 

           -11        -11 
    0.6692726719, -2.108471910 10 , -0.3955586214, 3.210741142 10 , 

           -11] 
    0.1111140258, -1.604609130 10 ] 
+0

Ницца, спасибо! Это именно то, что мне нужно. Интересно, однако, почему «coeffs» (как функция, доступная по всему миру по умолчанию) имеет такое странное поведение. –

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