|
from sympy import * |
|
from sympy.abc import a, b, x |
|
from output_util import to_latex, sign2cmp |
|
from sgntools import lin_func_sgn |
|
from solution import * |
|
|
|
_data = { |
|
1: {"constant_term": 3 * a - 8 * b, "e_term": -a + 3 * b}, |
|
2: {"constant_term": -38 * a + 174 * b, "e_term": 14 * a - 64 * b}, |
|
3: {"constant_term": 1158 * a - 7584 * b, "e_term": -426 * a + 2790 * b}, |
|
4: {"constant_term": -65304 * a + 557400 * b, "e_term": 24024 * a - 205056 * b}, |
|
5: { |
|
"constant_term": 5900520 * a - 62118720 * b, |
|
"e_term": -2170680 * a + 22852200 * b, |
|
}, |
|
6: { |
|
"constant_term": -780827760 * a + 9778048560 * b, |
|
"e_term": 287250480 * a - 3597143040 * b, |
|
}, |
|
} |
|
|
|
|
|
class EIntegrate(GetIntegrateFromData): |
|
|
|
data = _data |
|
|
|
def get_integrate_args(self, n): |
|
return x**n * (1 - x) ** n * (a + b * x) * exp(x), (x, 0, 1) |
|
|
|
|
|
class ESolution(Solution): |
|
def __init__(self, p, q): |
|
self.p = p |
|
self.q = q |
|
|
|
if self.q == 0: |
|
raise BadInput() |
|
|
|
self.get_integrate = EIntegrate() |
|
self.symbols = (a, b) |
|
|
|
self.integrate_result_classes_eq = { |
|
"e_term": q, |
|
CONSTANT_TERM_KEY: -p, |
|
} |
|
|
|
self.check_sgn = lin_func_sgn |
|
|
|
@staticmethod |
|
def get_tries_args(): |
|
return EIntegrate.data.keys() |
|
|
|
def get_latex_ans(self): |
|
try_arg, symbol_val, sgn = self.try_times() |
|
print(f"{(try_arg, symbol_val, sgn)=}") |
|
|
|
if try_arg is None: |
|
return None |
|
|
|
p = to_latex(self.p) |
|
q = to_latex(self.q, is_coeff=True) |
|
I = self.get_integrate.get_latex(try_arg, symbol_val) |
|
return rf"{q}e-{p} = {I} {sign2cmp[sgn]} 0" |
|
|
|
|
|
register("e", ESolution) |
|
|
|
|
|
if __name__ == "__main__": |
|
print(ESolution(25, 9)) |
|
|