-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfunction.py
More file actions
30 lines (25 loc) · 845 Bytes
/
function.py
File metadata and controls
30 lines (25 loc) · 845 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from sympy import Symbol, diff
from sympy.parsing.sympy_parser import parse_expr
import numpy as np
class Function:
def __init__(self, expression, var='x'):
self.__var = Symbol(var)
self.__function = parse_expr(expression)
def eval(self, x):
return np.float64(self.__function.subs(self.__var, x).evalf())
def dfn(self, x, n):
if n < 1:
raise AttributeError(f"{n} is an innapropiate number of iterations")
df = self.__function
var = self.__var
for _ in range(n):
df = diff(df, var)
return np.float64(df.subs(var, x).evalf())
def get_function(self):
return self.__function
def get_dfn(self, n=1):
df = self.__function
var = self.__var
for _ in range(n):
df = diff(df, var)
return df