def _main(expr): _new = [] for a in expr.args: is_V = False if isinstance(a, V): is_V = True a = a.expr if a.is_Function: name = a.__class__.__name__ for i in a.args: if i.is_Function: func = i break if ',' in name: variables = [eval(i) for i in name.split(',')[1]] a = Derivative(func, *variables) if 'V' in name: #TODO remove this V and use class a = V(a) a.function = func #TODO add more, maybe all that have args elif a.is_Add or a.is_Mul or a.is_Pow: a = _main(a) if is_V: a = V(a) a.function = func _new.append( a ) return expr.func(*tuple(_new))
def _main(expr): _new = [] for a in expr.args: is_V = False if isinstance(a, V): is_V = True a = a.expr if a.is_Function: name = a.__class__.__name__ for i in a.args: if i.is_Function: func = i break if ',' in name: variables = [eval(i) for i in name.split(',')[1]] a = Derivative(func, *variables) if 'V' in name: #TODO remove this V and use class a = V(a) a.function = func #TODO add more, maybe all that have args elif a.is_Add or a.is_Mul or a.is_Pow: a = _main(a) if is_V: a = V(a) a.function = func _new.append(a) return expr.func(*tuple(_new))