diff --git a/mathgenerator/funcs/__init__.py b/mathgenerator/funcs/__init__.py index 64247f2..b8fc5a5 100644 --- a/mathgenerator/funcs/__init__.py +++ b/mathgenerator/funcs/__init__.py @@ -114,3 +114,4 @@ from .signum_function import * from .conditional_probability import * from .arc_length import * from .binomial_distribution import * +from .stationary_points import * diff --git a/mathgenerator/funcs/stationary_points.py b/mathgenerator/funcs/stationary_points.py new file mode 100644 index 0000000..e248ca3 --- /dev/null +++ b/mathgenerator/funcs/stationary_points.py @@ -0,0 +1,23 @@ +from .__init__ import * +import sympy + + +def stationaryPointsFunc(maxExp=3, maxCoef=10): + while True: + x = sympy.symbols('x') + problem = 0 + for exp in range(maxExp + 1): + coefficient = random.randint(0, maxCoef) + problem += coefficient * pow(x, exp) + solution = sympy.stationary_points(problem, x) + + if len(solution) != 0: + solution = ','.join('({},{})'.format( + str(p), + sympy.sympify(problem.replace(x, p)) + ) for p in solution) + problem = 'f(x)=' + str(problem).replace('**', '^') + return problem, solution + + +stationary_points = Generator("Stationary Points", 106, "f(x)=x^3-3x", "(-1,2),(1,-2)", stationaryPointsFunc)