from sympy import Symbol, Function from derivation_modeling.derivation import derivation r = Symbol("r") V = Symbol("V") # set epsilon and sigma to 1 for now lj_expr = 4 * (1 / r ** 12 - 1 / r ** 6) lj_pot = derivation(V(r), lj_expr) lj_pot.set_name("lennard-jones") lj_pot.set_title("Lennard-Jones Potential") if __name__ == "__main__": lj_pot.to_xhtml()
from sympy import Symbol, Function from derivation_modeling.derivation import derivation r = Symbol('r') V = Symbol('V') # set epsilon and sigma to 1 for now lj_expr = 4 * (1 / r**12 - 1 / r**6) lj_pot = derivation(V(r), lj_expr) lj_pot.set_name('lennard-jones') lj_pot.set_title('Lennard-Jones Potential') if __name__ == '__main__': lj_pot.to_xhtml()
from sum_util import peel_n i = Symbol('i', integer=True) n = Symbol('n', integer=True) I = Symbol('I') f = Function('f') h = Symbol('h') x = IndexedBase('x') a = Symbol('a') b = Symbol('b') definition_of_h = Eq(h, (b - a) / n) trap = derivation(I, Sum(h / 2 * (f(x[i]) + f(x[i + 1])), (i, 1, n))) trap.set_name('trapezoidal_int') trap.set_title('Trapezoidal Rule for Integration') def split_sum(s): v = s.function.expand() sums = [] for t in v.iter_basic_args(): new_s = Sum(t, s.limits) sums.append(new_s) return sums[0] + sums[1] def rewrite(s, rules): ''' rewrite an expression. The rules argument is a list of 2-tuples.
# this should form one page - listing some definitions and setting out the basic form for the # parition function from sympy import Symbol, Integral, exp from derivation_modeling.derivation import derivation, definition, replace_definition Z = Symbol('Z') T = Symbol('T') k = Symbol('k') V = Symbol('V') R = Symbol('R') Beta = Symbol('beta') partition_function = derivation(Z,Integral(exp(-V/(k*T)),R)) partition_function.set_name('partition') partition_function.set_title('Partition Function') beta_def = definition(Beta,1/(k*T),T) partition_function.add_step( replace_definition(beta_def), 'Insert definition of beta')
i = Symbol('i',integer=True) n = Symbol('n',integer=True) I = Symbol('I') f = Function('f') h = Symbol('h') x = IndexedBase('x') a = Symbol('a') b = Symbol('b') definition_of_h = Eq(h,(b-a)/n) trap = derivation(I,Sum(h/2*(f(x[i])+f(x[i+1])),(i,1,n))) trap.set_name('trapezoidal_int') trap.set_title('Trapezoidal Rule for Integration') def split_sum(s): v = s.function.expand() sums = [] for t in v.iter_basic_args(): new_s = Sum(t,s.limits) sums.append(new_s) return sums[0] + sums[1] def rewrite(s,rules): ''' rewrite an expression. The rules argument is a list of 2-tuples. In each tuple, the first item is a type and the second is a function to apply''' if s.is_Atom:
# this should form one page - listing some definitions and setting out the basic form for the # parition function from sympy import Symbol, Integral, exp from derivation_modeling.derivation import derivation, definition, replace_definition Z = Symbol('Z') T = Symbol('T') k = Symbol('k') V = Symbol('V') R = Symbol('R') Beta = Symbol('beta') partition_function = derivation(Z, Integral(exp(-V / (k * T)), R)) partition_function.set_name('partition') partition_function.set_title('Partition Function') beta_def = definition(Beta, 1 / (k * T), T) partition_function.add_step(replace_definition(beta_def), 'Insert definition of beta')