【问题标题】:Coefficients of polynomials maxima多项式最大值的系数
【发布时间】:2016-06-21 17:06:34
【问题描述】:

maxima 中是否有一个内置函数可以从多项式函数中获取一个包含其系数的列表?并得到多项式的次数?

我找到的最相似的函数是args,但它也将变量与系数一起返回。我本可以接受这一点,当使用lengthargs 时会返回学位。问题是args 不适用于零度多项式。

还有其他功能可以更好地适应这些目的吗?提前致谢。

【问题讨论】:

    标签: maxima polynomials degrees coefficients


    【解决方案1】:

    要计算一个变量中多项式的次数,可以使用hipow 函数。

    (%i) p1 : 3*x^5 + x^2 + 1$
    (%i) hipow(p1,x);
    (%o)                                5
    

    对于具有多个变量的多项式,您可以将hipow 映射到listofvars 函数返回的变量上,然后取结果列表中的最大值。

    (%i) p2 : 4*y^8 - 3*x^5 + x^2 + 1$
    (%i) degree(p) := if integerp(p) then 0 else 
                lmax(map (lambda([u], hipow(p,u)),listofvars(p)))$
    (%i) degree(p1);
    (%o)                                5
    (%i) degree(p2);
    (%o)                                8
    (%i) degree(1);
    (%o)                                0
    

    coeff 函数返回x^n 的系数,给定coeff(p,x,n),因此要生成一个变量中多项式的系数列表,我们可以遍历 x 的幂,将系数保存到列表。

    (%i) coeffs1(p,x) := block([l], l : [], 
                             for i from 0 thru hipow(p,x)     
                                 do (l : cons(coeff(p,x,i),l)), l)$
    (%i) coeffs1(p1,x);
    (%o)                       [3, 0, 0, 1, 0, 1]
    

    要生成多个变量中多项式的系数列表,请将coeffs1 映射到listofvars

    (%i) coeffs(p) := map(lambda([u], coeffs1(p, u)), listofvars(p))$
    (%i) coeffs(p2);
    (%o) [[- 3, 0, 0, 1, 0, 4 y^8  + 1], 
             [4, 0, 0, 0, 0, 0, 0, 0, - 3 x^5  + x^2  + 1]]
    

    【讨论】:

    • 您的度数只是最大-hipow,而不是最大-单项式度数。后者可以例如给出 degree(x^2*y-x) = 3.
    • 肯定没有内置命令来获取整个系数列表?必须编程吗?
    猜你喜欢
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2023-03-04
    相关资源
    最近更新 更多