【问题标题】:Python sympy insert one Polynomial in another bigger one, get final PolynomialPython sympy 在另一个更大的多项式中插入一个多项式,得到最终的多项式
【发布时间】:2013-06-17 03:26:51
【问题描述】:

我有一个函数可以基于 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 个或更大的值提供支持的情况时,计算并没有结束……有什么想法可以解决这个问题吗?我认为这个计算对同情来说应该不那么难。非常感谢任何建议。顺便说一句,这是我的第一个问题 :-)

【问题讨论】:

  • 您在分配给multiFit_power 的行中有错字。

标签: python polynomial-math sympy


【解决方案1】:

我很难理解您的代码转储中发生了什么,但是如果我正确理解了您想要的内容,我认为您只需要collect(a_func, c),这将提取a_func 的所有系数c

【讨论】:

  • 感谢您的回答,但在我的情况下,这个函数没有做任何事情,它只是返回相同的表达式。 poly_from_expr 有效,但对于非常大的方程来说需要很长时间
  • 如果这不是你想要的,那么我建议你试着让你的问题更清楚。放一个你所拥有的表达式的样本以及你想要拥有的东西(而不是期望人们试图从你的代码中弄清楚发生了什么)。
猜你喜欢
  • 2016-08-17
  • 1970-01-01
  • 1970-01-01
  • 2014-09-20
  • 2012-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多