2016-08-02 3 views
1

У меня есть огромное символическое SymPy выражения в формеFetch некоторых частей SymPy решения

expression = factor * (f1*a + f2*b + f3*c + f4*d + f5*e) 

, где все факторы сквозные е все состоит из нескольких слагаемых. То есть:

a = exp(2x) + exp(3x) + sin(Ix). 

Я хочу создать ан массива в виде

array = factor * [a,b,c,d,e] 

Но не вижу Кливер способ сделать это. Я пытался использовать фактор-функцию, но это только дает мне выражение в форме «выражения» выше.

До сих пор я не использовал

print(expression) 

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

ответ

2

Вот простой пример, который вы можете экстраполировать на более терминов

import sympy as sp 

x = sp.var('x') 
f1, f2 = sp.symbols('f1:3') 
factor = sp.symbols('factor') 

a = x**2 + sp.sin(x) + sp.exp(sp.I * x) 
b = sp.log(x)/(x+1)**2 

# example expression: 
expression = (factor * (f1 * a + f2 * b)).expand() 
print(expression) 

# collect coefficients of f1 and f2 
coeffs = sp.collect(expression.expand(),[f1,f2], evaluate=False) 
print(coeffs) 

# show the coefficients w/o the factor factor 
[(coeffs[f]/factor).simplify() for f in (f1,f2)] 
f1*factor*x**2 + f1*factor*exp(I*x) + f1*factor*sin(x) + f2*factor*log(x)/(x**2 + 2*x + 1) 
{f2: factor*log(x)/(x**2 + 2*x + 1), f1: factor*x**2 + factor*exp(I*x) + factor*sin(x)} 

[x**2 + exp(I*x) + sin(x), log(x)/(x**2 + 2*x + 1)] 
+0

Нет, я не знаю, факторы а-> е. Это просто символические результаты предыдущего расчета. f1-> f5 определены как символы, хотя –

+0

@AmundJenssen Было бы справедливым сказать, что у вас есть выражение, которое представляет собой сложную функцию 'x', и вы хотите найти' a, b, .., e 'такое, что' выражение = коэффициент * (f1 * a + ... + f5 * e) '? – Stelios

+0

Ну - несколько да, несколько нет. «выражение» является функцией f1: 6, где коэффициенты a-> e являются функциями другой переменной (aka symbol) –

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