2013-06-16 7 views
0

У меня есть функция, чтобы вернуть значение а на основе PolyFit, в зависимости от значения а0, с, с0:Python SymPy вставить один многочлен в другом большем один, получить окончательное полиномиальной

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) 

Поэтому у меня есть выражение, которое зависит от а0, с0, с и т. Максимальная мощность каждого переменный (a_func, цитозин и тимин) в последнем выражении 5. Так что я, например, выражение типа:

a_func**4 * c 

Поскольку в конце концов, я хотел бы иметь многочлен с (а0 , c0, т постоянные), я пытался использовать

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

в последний цикл, чтобы сохранить хорошо отформатированный полином в список. Но расчет не заканчивается, когда я сталкиваюсь с тем, что a_func работает от 3 или более значений ... Любые идеи, как решить эту проблему? Я думал, что этот расчет не должен быть таким жестким для sympy. Большое спасибо за любые предложения. Это мой первый вопрос кстати :-)

+0

У вас есть опечатка в строке, где вы назначаете 'multiFit_power'. – asmeurer

ответ

0

Мне сложно понять, что происходит в вашем дампе кода, но если я правильно понимаю, что вы хотите, я думаю, вы просто хотите collect(a_func, c), который вытащит все коэффициенты от a_func по отношению к c.

+0

Спасибо за ваш ответ, но эта функция ничего не делает в моем случае, она просто возвращает то же выражение. poly_from_expr работает, но для очень больших уравнений занимает слишком много времени. – user2489877

+1

Если это не то, что вы хотите, я предлагаю вам попытаться сделать ваш вопрос более ясным. Поместите образец выражения, которое у вас есть, и что вы хотите (вместо того, чтобы ожидать, что люди попытаются выяснить, что происходит от вашего кода). – asmeurer

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

  • Нет связанных вопросов^_^