Python同情在另一个更大的一个中插入一个多项式,得到最终的多项式

时间:2013-06-16 01:26:10

标签: python polynomial-math sympy

我有一个函数可以根据PolyFit返回值a,具体取决于值a0,c,c0:

import sympy

a = Symbol("a")
a0 = Symbol("a0")
c = Symbol("c")
c0 = Symbol("c0")
t = Symbol("t")

a_func = Poly(0, a0, c, c0) 
coeff = np.array([-0.71424954,  1.7335939 , -1.76528173,  1.2361201 ,  0.00255529])  
num_a_coeff = len(coeff)
for ii in xrange(num_a_coeff):

    a_func += coeff[ii] * ((c-c0)/a0)**(num_a_coeff-1-ii)

a_func = a0 + (a_func * c)

它还没有形成像典型的多项式表达式,在我的情况下是num_a_coeff 5.我想在另一个表达式中实现这个a_func:

multiFit_coeff = np.array([944210317e-03,-280710762e-03,378400594e-04])
# gives power of 1, a, c, t
multiFit_power = np.array([[5,0,0,0],[4,3,2,0],[,4,1,0]])
main_func = []
num_coeff = len(multiFit_coeff)
for i in xrange(num_coeff):

    temp = multiFit_coeff[i] * 
        (1**multiFit_power_less[i][0] * 
        a_func**inc.multiFit_power[i][1] * 
        c**multiFit_power[i][2] *
        t**multiFit_power[i][3])

    main_func.append(temp)

所以我的表达式取决于a0,c0,c和t。最后一个表达式中每个变量(a_func,c和t)的最大功率为5.所以我有一个像这样的表达式:

a_func**4 * c

因为最后我想要一个c的多项式(a0,c0,t是常数),我试着用

main_func.append(sympy.polys.poly_from_expr(temp, c))

在最后一个for循环中将精确格式化的多项式保存到列表中。但是当我遇到a_func由3个或更大的值驱动的情况时,计算并没有结束......任何想法如何解决这个问题?我认为这个计算不应该是那么难以接受的。非常感谢任何建议。这是我的第一个问题btw: - )

1 个答案:

答案 0 :(得分:0)

我很难理解你的代码转储中发生了什么,但是如果我理解你想要什么,我认为你只需要collect(a_func, c),这将取出{{1}的所有系数关于a_func