0

値 a0、c、c0 に応じて、PolyFit に基づいて値 a を返す関数があります。

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 つ以上の値で動作している場合に計算が終了しません... この問題を解決する方法はありますか? この計算は sympy にとってそれほど難しいことではないと思いました。提案に感謝します。これは私の最初の質問です:-)

4

1 に答える 1