本文整理汇总了Python中sympy.utilities.lambdify函数的典型用法代码示例。如果您正苦于以下问题:Python lambdify函数的具体用法?Python lambdify怎么用?Python lambdify使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了lambdify函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: get_transformation_function
def get_transformation_function(segments, fixed_endpoint=None, fixed_basepoint=None, use_dict=True):
if fixed_endpoint:
coordinate_labels = []
else:
coordinate_labels = ['x','y','z']
if fixed_basepoint:
inverse_coordinate_labels = []
else:
inverse_coordinate_labels = ['base_x','base_y','base_z']
trans_mat, inv_trans_mat, var_names = get_sympy_reduction(segments, fixed_endpoint, fixed_basepoint, coordinate_labels, inverse_coordinate_labels)
# Bake into a lambda func
base_func = lambdify(flatten((coordinate_labels, var_names)), trans_mat)
base_inv_func = lambdify(flatten((inverse_coordinate_labels, var_names)), inv_trans_mat)
if use_dict:
if fixed_endpoint:
func = lambda var_dict: base_func(*flatten([var_dict[var_name] for var_name in var_names])).A
else:
func = lambda coords, var_dict: base_func(*flatten((coords, [var_dict[var_name] for var_name in var_names]))).A
if fixed_basepoint:
inv_func = lambda var_dict: base_inv_func(*flatten([var_dict[var_name] for var_name in var_names])).A
else:
inv_func = lambda coords, var_dict: base_inv_func(*flatten((coords, [var_dict[var_name] for var_name in var_names]))).A
else:
if fixed_endpoint:
func = lambda var_vals: base_func(*flatten(var_vals)).A
else:
func = lambda coords, var_vals: base_func(*flatten((coords, var_vals))).A
if fixed_basepoint:
inv_func = lambda var_vals: base_inv_func(*flatten(var_vals)).A
else:
inv_func = lambda coords, var_vals: base_inv_func(*flatten((coords, var_vals))).A
return func, inv_func
开发者ID:jefesaurus,项目名称:hexapod-engine,代码行数:35,代码来源:fk_math.py
示例2: eval_expr
def eval_expr(expr,variables,container,name):
vals={}
for k in container:
vals[k.name]=k.x
vals["S"+k.name]=k.Sx
#x = expr.evalf(subs=vals)
f=lambdify(tuple(vals.keys()),expr,"numpy")
x = f(**vals)
#little workaround
leer=sy.Symbol("leer")
f=0*leer
for k in variables:
f=f+ (sy.diff(expr,k))**2*sy.Symbol("S"+k.__str__())**2
f=sy.sqrt(f)
#print "Formel:"
#print ur"\begin*{equation}"
#print sy.latex(expr)
#print ur"\end{equation}"
#print "Fehler"
#print ur"\begin*{equation}"
#sy.pprint(f)
#print ur"\end{equation}"
gf = lambdify(tuple(vals.keys()),f,"numpy")
Sx = gf(**vals)
return (Groesse(name,x.dimensionality.string,x.magnitude,Sx.magnitude),expr,f)
开发者ID:vsilv,项目名称:p-master,代码行数:26,代码来源:ocd.py
示例3: _eval_evalf
def _eval_evalf(self, prec):
"""Evaluate this complex root to the given precision. """
with workprec(prec):
g = self.poly.gen
if not g.is_Symbol:
d = Dummy('x')
func = lambdify(d, self.expr.subs(g, d))
else:
func = lambdify(g, self.expr)
interval = self._get_interval()
if not self.is_real:
# For complex intervals, we need to keep refining until the
# imaginary interval is disjunct with other roots, that is,
# until both ends get refined.
ay = interval.ay
by = interval.by
while interval.ay == ay or interval.by == by:
interval = interval.refine()
while True:
if self.is_real:
x0 = mpf(str(interval.center))
else:
x0 = mpc(*map(str, interval.center))
try:
root = findroot(func, x0, verify=False)
# If the (real or complex) root is not in the 'interval',
# then keep refining the interval. This happens if findroot
# accidentally finds a different root outside of this
# interval because our initial estimate 'x0' was not close
# enough.
if self.is_real:
a = mpf(str(interval.a))
b = mpf(str(interval.b))
if a == b:
root = a
break
if not (a < root < b):
raise ValueError("Root not in the interval.")
else:
ax = mpf(str(interval.ax))
bx = mpf(str(interval.bx))
ay = mpf(str(interval.ay))
by = mpf(str(interval.by))
if ax == bx and ay == by:
root = ax + S.ImaginaryUnit*by
break
if not (ax < root.real < bx and ay < root.imag < by):
raise ValueError("Root not in the interval.")
except ValueError:
interval = interval.refine()
continue
else:
break
return Float._new(root.real._mpf_, prec) + I*Float._new(root.imag._mpf_, prec)
开发者ID:AdrianPotter,项目名称:sympy,代码行数:57,代码来源:rootoftools.py
示例4: accepted
def accepted(self):
expr = parse_expr(self.fEdit.text())
f = lambdify(x, expr)
df = lambdify(x, expr.diff(x))
N = 1
delta = float(self.deltaEdit.text())
x0 = float(self.xEdit.text())
x1 = x0-f(x0)/df(x0)
while not closeEnaught(x0, x1, delta):
x0 = x1
x1 = x0-f(x0)/df(x0)
N += 1
self.listWidget.addItem("x = " + str(x1) + ", N = " + str(N))
开发者ID:titenko1996,项目名称:CMM,代码行数:13,代码来源:main.py
示例5: graphicalButtonClicked
def graphicalButtonClicked(self):
color1 = None
if self.f1colorBox.currentIndex() == 0:
color1 = 'r'
elif self.f1colorBox.currentIndex() == 1:
color1 = 'b'
elif self.f1colorBox.currentIndex() == 2:
color1 = 'g'
elif self.f1colorBox.currentIndex() == 3:
color1 = 'y'
elif self.f1colorBox.currentIndex() == 4:
color1 = 'm'
elif self.f1colorBox.currentIndex() == 5:
color1 = 'c'
color2 = None
if self.f2colorBox.currentIndex() == 0:
color2 = 'r'
elif self.f2colorBox.currentIndex() == 1:
color2 = 'b'
elif self.f2colorBox.currentIndex() == 2:
color2 = 'g'
elif self.f2colorBox.currentIndex() == 3:
color2 = 'y'
elif self.f2colorBox.currentIndex() == 4:
color2 = 'm'
elif self.f2colorBox.currentIndex() == 5:
color2 = 'c'
expr1 = parse_expr(self.f1Edit.text())
expr2 = parse_expr(self.f2Edit.text())
f1 = lambdify(x, expr1, 'numpy')
f2 = lambdify(x, expr2, 'numpy')
try:
minX = float(self.minxEdit.text())
maxX = float(self.maxxEdit.text())
except:
QMessageBox.warning(self, "Warning", "Min and max values error type.")
return
if minX <= maxX:
x1 = np.linspace(minX, maxX, (maxX-minX)*1000)
self.plotW.figure.clf()
self.plotW.plot(x1, f1(x1), color1)
self.plotW.plot(x1, f2(x1), color2)
else:
QMessageBox.warning(self, "Warning", "Min value must be smaller than max value")
开发者ID:titenko1996,项目名称:CMM,代码行数:49,代码来源:main.py
示例6: SIMethod
def SIMethod(self):
self.x0 = float(self.x0EditSI.text())
self.eps = float(self.epsEditSI.text())
self.fexpr = parse_expr(self.fEditSI.text())
self.phiexpr = parse_expr(self.phiEditSI.text())
self.f = lambdify(x, self.fexpr)
self.phi = lambdify(x, self.phiexpr)
self.x1 = 0
self.N = 0
while True:
self.x1 = self.phi(self.x0)
self.N += 1
if closeEnaught(self.x1, self.x0, self.eps) or self.f(self.x1) == 0:
self.listWidget.addItem("x = "+str(self.x1)+", N = "+str(self.N))
break
self.x0 = self.x1
开发者ID:titenko1996,项目名称:CMM,代码行数:16,代码来源:__init__.py
示例7: isolate
def isolate(alg, eps=None, fast=False):
"""Give a rational isolating interval for an algebraic number. """
alg = sympify(alg)
if alg.is_Rational:
return (alg, alg)
elif not ask(Q.real(alg)):
raise NotImplementedError(
"complex algebraic numbers are not supported")
func = lambdify((), alg, modules="mpmath", printer=IntervalPrinter())
poly = minpoly(alg, polys=True)
intervals = poly.intervals(sqf=True)
dps, done = mp.dps, False
try:
while not done:
alg = func()
for a, b in intervals:
if a <= alg.a and alg.b <= b:
done = True
break
else:
mp.dps *= 2
finally:
mp.dps = dps
if eps is not None:
a, b = poly.refine_root(a, b, eps=eps, fast=fast)
return (a, b)
开发者ID:thilinarmtb,项目名称:sympy,代码行数:34,代码来源:numberfields.py
示例8: _eval_evalf
def _eval_evalf(self, prec):
"""Evaluate this complex root to the given precision. """
_prec, mp.prec = mp.prec, prec
try:
func = lambdify(self.poly.gen, self.expr)
interval = self._get_interval()
refined = False
while True:
if self.is_real:
x0 = mpf(str(interval.center))
else:
x0 = mpc(*map(str, interval.center))
try:
root = findroot(func, x0)
except ValueError:
interval = interval.refine()
refined = True
continue
else:
if refined:
self._set_interval(interval)
break
finally:
mp.prec = _prec
return Float._new(root.real._mpf_, prec) + I*Float._new(root.imag._mpf_, prec)
开发者ID:ALGHeArT,项目名称:sympy,代码行数:31,代码来源:rootoftools.py
示例9: d2V_func
def d2V_func(lat, V, field_var):
"Calculate the masses of the fields in terms of the field values:"
field_list = lat.field_list
from sympy import diff, Symbol, var, simplify, sympify, S, evalf
from sympy.utilities import lambdify
from sympy.core.sympify import SympifyError
C_coeff = V.C_coeff
D_coeff = V.D_coeff
V_string = V.V
try:
d2V = diff(sympify(V_string),field_var,2)
except SympifyError:
print "Could not parse expression."
"Replacement list C_i->C_coeff[i], D_i->D_coeff[i]:"
rep_list = {}
for i in xrange(len(C_coeff)):
rep_list.update({'C'+str(i+1):C_coeff[i]})
for i in xrange(len(D_coeff)):
rep_list.update({'D'+str(i+1):D_coeff[i]})
d2V_func = lambdify(field_list,d2V.subs(rep_list))
return d2V_func
开发者ID:jtksai,项目名称:PyCOOL,代码行数:29,代码来源:misc_functions.py
示例10: eval_rational
def eval_rational(self, tol):
"""
Return a Rational approximation to ``self`` with the tolerance ``tol``.
This method uses bisection, which is very robust and it will always
converge. The returned Rational instance will be at most 'tol' from the
exact root.
The following example first obtains Rational approximation to 1e-7
accuracy for all roots of the 4-th order Legendre polynomial, and then
evaluates it to 5 decimal digits (so all digits will be correct
including rounding):
>>> from sympy import S, legendre_poly, Symbol
>>> x = Symbol("x")
>>> p = legendre_poly(4, x, polys=True)
>>> roots = [r.eval_rational(S(1)/10**7) for r in p.real_roots()]
>>> roots = [str(r.n(5)) for r in roots]
>>> roots
['-0.86114', '-0.33998', '0.33998', '0.86114']
"""
if not self.is_real:
raise NotImplementedError(
"eval_rational() only works for real polynomials so far")
func = lambdify(self.poly.gen, self.expr)
interval = self._get_interval()
a = Rational(str(interval.a))
b = Rational(str(interval.b))
return bisect(func, a, b, tol)
开发者ID:A-turing-machine,项目名称:sympy,代码行数:31,代码来源:rootoftools.py
示例11: f_min
def f_min(y,mi,mx,stp):
"""
y - form of analytical function
mi - plot and analyze in interval starting from this value
mx - plot and alalyze in interval ending with this value
stp- stepsize on the x axis. (with a little imagination it can be
considered as resolution
"""
fd=[];d={}
t=np.arange(mi,mx,stp)
ly=lambdify(x,y)
dy=y.diff()
ldy=lambdify(x,dy)
print 'Analitical function: ',y
print 'first derivative: ',dy
for i in np.arange(mi,mx,stp):
# searhing where the first derivative is zero OR NEAR ZERO!
# /technically the same way can be done with lambdify
if -0.01 < dy.subs(x,i).evalf() < 0.01:
yy=y.subs(x,i).evalf()
print 'local extreme at (x,y): (%s, %s)' %(i,yy)
d[yy]=i
ix=max(d.keys())
ixmin=min(d.keys())
iy=d.get(ix)
iymin=d.get(ixmin)
print ' '
print 'Global minimum at (x,y): (%s, %s) ' %(iymin,ixmin)
print 'Global maximum at (x,y): (%s, %s) ' %(iy,ix)
plt.figure('minimi')
o1=[];o2=[]
for ii in np.arange(mi,mx,stp):
o1.append(ly(ii))
o2.append(ldy(ii)) # the plot option below
# plt.plot(t,ly(np.arange(mi,mx,stp)))
plt.plot(t,o1)
# plt.plot(t,ldy(np.arange(mi,mx,stp)))
plt.plot(t,o2)
plt.plot(iy,ix,'ro',iymin,ixmin,'bo')
plt.legend(['y= %s'%y,'dy= %s' %dy, 'extreme point global max','extreme point global min'])
plt.show()
开发者ID:bkocis,项目名称:pie,代码行数:44,代码来源:minimization_firstderivative.py
示例12: _eval_evalf
def _eval_evalf(self, prec):
"""Evaluate this complex root to the given precision. """
_prec, mp.prec = mp.prec, prec
try:
func = lambdify(self.poly.gen, self.expr)
interval = self._get_interval()
if not self.is_real:
# For complex intervals, we need to keep refining until the
# imaginary interval is disjunct with other roots, that is,
# until both ends get refined.
ay = interval.ay
by = interval.by
while interval.ay == ay or interval.by == by:
interval = interval.refine()
while True:
if self.is_real:
x0 = mpf(str(interval.center))
else:
x0 = mpc(*map(str, interval.center))
try:
root = findroot(func, x0)
# If the (real or complex) root is not in the 'interval',
# then keep refining the interval. This happens if findroot
# accidentally finds a different root outside of this
# interval because our initial estimate 'x0' was not close
# enough.
if self.is_real:
a = mpf(str(interval.a))
b = mpf(str(interval.b))
# This is needed due to the bug #3364:
a, b = min(a, b), max(a, b)
if not (a < root < b):
raise ValueError("Root not in the interval.")
else:
ax = mpf(str(interval.ax))
bx = mpf(str(interval.bx))
ay = mpf(str(interval.ay))
by = mpf(str(interval.by))
# This is needed due to the bug #3364:
ax, bx = min(ax, bx), max(ax, bx)
ay, by = min(ay, by), max(ay, by)
if not (ax < root.real < bx and ay < root.imag < by):
raise ValueError("Root not in the interval.")
except ValueError:
interval = interval.refine()
continue
else:
break
finally:
mp.prec = _prec
return Float._new(root.real._mpf_, prec) + I*Float._new(root.imag._mpf_, prec)
开发者ID:AALEKH,项目名称:sympy,代码行数:56,代码来源:rootoftools.py
示例13: solve
def solve(self, iterations=10, until=None, threshold=0.001,
debuglist=None):
""" Runs the solver.
The solver will try to find a solution until one of the
conditions is reached:
(1) the iterations limit is reached
In this case a SolutionNotFoundError will be raised.
(2) the until condition returns True
Arguments:
iterations: The number of iterations to run until
a solution is reached. (Default: 10)
until: This is a function that determines whether or
not a solution is reached. (Default: residual error)
This takes two parameters, the previous solution
vector and the current solution vector.
threshold: If using the default end condition, this is the
threshold that the residuals must be less than.
Raises:
SolutionNotFoundError:
"""
# pylint: disable=invalid-name
self._validate_equations()
current = self._get_context()
if len(self.solutions) == 0:
self._update_solutions({k.name: v for k, v in current.items()})
# do we need to update the function lambdas? This is needed
# if the number of variables/parameters/equations change.
if self._need_function_update:
arg_list = [x for x in current.keys()]
for i in xrange(len(arg_list)):
if isinstance(arg_list[i], Symbol):
arg_list[i]._index = i
private_funcs = {x[2].__name__: x[1] for x in _RT_FUNCS}
for var in self.variables.values():
var.equation.func = lambdify(arg_list,
var.equation.expr,
private_funcs)
self._need_function_update = False
solution = _run_solver(self.equations,
self.variables,
current,
max_iterations=iterations,
until=until,
threshold=threshold,
debuglist=debuglist)
soln = {k.name: v for k, v in solution.items()}
self._update_solutions(soln)
开发者ID:lowks,项目名称:pylinsolve,代码行数:56,代码来源:model.py
示例14: makefunc
def makefunc(expr, mathmodule = "numpy", dummify=False, **kwargs):
symbols = list(expr.atoms(sp.Symbol))
symbols.sort(key=str)
func = lambdify(symbols, expr, mathmodule, dummify=dummify, **kwargs)
func.kw = symbols
func.expr = expr
func.kwstr = map(lambda x: x.name, symbols)
func.dictcall = types.MethodType(dictcall, func)
func.__doc__ = str(expr)
return func
开发者ID:carichte,项目名称:pyasf,代码行数:10,代码来源:functions.py
示例15: _construct
def _construct(self, zet):
if not isinstance(zet, AbstractSet):
zet = as_abstract(zet)
var = zet.variables
expr = zet.expr
func = lambdify(var, expr)
if len(var) == 1:
return bitmap(func, self.voxels)
else:
return bitmap(lambda v: func(*v), self.voxels)
开发者ID:worldmaker18349276,项目名称:magicpy,代码行数:10,代码来源:marching.py
示例16: RelaxMethod
def RelaxMethod(self):
self.x0 = float(self.phiEditSI.text())
self.a = self.x0
self.b = float(self.x0EditSI.text())
self.eps = float(self.epsEditSI.text())
self.fexpr = parse_expr(self.fEditSI.text())
self.f = lambdify(x, self.fexpr)
xarg = np.linspace(self.a, self.b, np.abs(self.b-self.a)*1000)
dfexpr = self.fexpr.diff(x)
df = lambdify(x, dfexpr, 'numpy')
dfa = np.fabs(df(xarg))
M1 = np.max(dfa)
m1 = np.min(dfa)
tau = 2/(M1+m1)
ro0 = (M1-m1)/(M1+m1)
self.N = (np.floor(np.log((self.eps*(1-ro0))/(self.b-self.a))/np.log(ro0))+1).astype(np.int64)
x1 = self.x0 + tau * self.f(self.x0)
self.x0 = x1
for i in range(self.N-1):
x1 = self.x0 + tau * self.f(self.x0)
self.x0 = x1
self.listWidget.addItem("x = "+str(x1)+", N = "+str(self.N))
开发者ID:titenko1996,项目名称:CMM,代码行数:22,代码来源:__init__.py
示例17: analyticalButtonClicked
def analyticalButtonClicked(self):
self.derTableWidget.clear()
self.tableWidget.clear()
self.tableWidget.setRowCount(0)
self.derTableWidget.setColumnCount(0)
expr = parse_expr(self.fEdit.text())
f = lambdify(x, expr, 'numpy')
diff = expr.diff(x)
diffroots = solve(diff, x)
diffroots.insert(0, float("-inf"))
diffroots.append(float("inf"))
colPosition = self.derTableWidget.columnCount()
self.derTableWidget.setRowCount(2)
self.derTableWidget.insertColumn(colPosition)
self.derTableWidget.setItem(0, colPosition, QTableWidgetItem("DerInterval"))
self.derTableWidget.setItem(1, colPosition, QTableWidgetItem("Sign f(x)"))
for i in range(len(diffroots)):
colPosition = self.derTableWidget.columnCount()
self.derTableWidget.insertColumn(colPosition)
self.derTableWidget.setItem(0, colPosition, QTableWidgetItem(("%f"%(diffroots[i]))))
self.derTableWidget.setItem(1, colPosition, QTableWidgetItem(str(sign(f(diffroots[i])))))
xspace = np.linspace(int(diffroots[1]-100), int(diffroots[len(diffroots)-2]+100), int(diffroots[len(diffroots)-2]-diffroots[1]+201))
#TODO: to end work with long table and algorithm with step
dct = {}
for i in xspace:
dct[i] = sign(f(i))
self.tableWidget.setColumnCount(2)
rowCount = self.tableWidget.rowCount()
self.tableWidget.insertRow(rowCount)
self.tableWidget.setItem(rowCount, 0, QTableWidgetItem("x"))
self.tableWidget.setItem(rowCount, 1, QTableWidgetItem("Sign f(x)"))
keylist = []
keylist = dct.keys()
for key in sorted(keylist):
rowCount = self.tableWidget.rowCount()
self.tableWidget.insertRow(rowCount)
self.tableWidget.setItem(rowCount, 0, QTableWidgetItem("%f" %key))
self.tableWidget.setItem(rowCount, 1, QTableWidgetItem(dct[key]))
self.derEdit.setText(str(diff))
intervals = ''
keylist = sorted(keylist)
for i in range(len(keylist)-1):
if (dct[keylist[i]] == '-' and dct[keylist[i+1]] == '+') or (dct[keylist[i]] == '+' and dct[keylist[i+1]] == '-'):
intervals =( "%s%s" %(intervals, makeinterval(keylist[i], keylist[i+1], f)))
elif (dct[keylist[i]] == '0'):
intervals = ('%s{%f} and' % (intervals, keylist[i]))
self.rootIntervalEdit.setText(intervals)
开发者ID:titenko1996,项目名称:CMM,代码行数:51,代码来源:main.py
示例18: index_post
def index_post(name = None):
if(request.method == 'POST'):
default_asot = "343.822718 + x*1.8291"
adlib_size_of_time = str(request.form.get('adlib_eq', default_asot, type=str))
if adlib_size_of_time == "":
adlib_size_of_time = default_asot
sim_len = int(request.form.get('sim_len', 80, type=int))
restr_len = int(request.form.get('restr_len', 50, type=int))
restr = float(request.form.get('restr', 9, type=float)) / 100
market_price = float(request.form.get('market_price', 2.89, type=float))
feed_cost = float(request.form.get('feed_cost', 0.25, type=float))
fac_cost = float(request.form.get('fac_cost', 0.35, type=float))
int_rate = float(request.form.get('int_rate', 7.5, type=float)) / 100
adlib_size_of_time += "-y"
adlib_size_of_time = parse_expr(adlib_size_of_time)
TIME = Symbol("x")
SIZE = Symbol("y")
# print solve(adlib_size_of_time, SIZE)
# print solve(adlib_size_of_time, TIME)
get_adlib_size = lambdify(TIME, solve(adlib_size_of_time, SIZE)[0])
get_adlib_time = lambdify(SIZE, solve(adlib_size_of_time, TIME)[0])
sim = simulation.Simulation(sim_len, restr_len, restr)
sim.eqs.get_adlib_size = get_adlib_size
sim.eqs.get_adlib_time = get_adlib_time
sim.feed_cost = feed_cost
sim.facility_cost = fac_cost
sim.market_price = market_price
sim.discount = int_rate
sim.run_complete()
graph_url = get_graph_url(sim)
print "plot url: ", graph_url
return render_template("output.html", ploturl = graph_url)
开发者ID:erazfar,项目名称:OptimalFeeding,代码行数:38,代码来源:WebUI.py
示例19: _f
def _f(variables, expression):
if not expression or expression == "None":
return None
elif callable(expression):
return expression
else:
if len(variables) == 1 and "|" in variables[0] and Symbol is not None:
expression = sympify(expression)
present_variables = expression.free_symbols
for preferred in map(Symbol, variables[0].split("|")):
if preferred in present_variables:
present_variables.remove(preferred)
preferred = (preferred,)
break
else:
preferred = ()
variables = *preferred, *(str(v) + "=0" for v in present_variables)
return lambdify(variables, expression)
开发者ID:kelvin13,项目名称:Knockout,代码行数:18,代码来源:__init__.py
示例20: isolate
def isolate(alg, eps=None, fast=False):
"""Give a rational isolating interval for an algebraic number. """
alg = sympify(alg)
if alg.is_Rational:
return (alg, alg)
elif not ask(Q.real(alg)):
raise NotImplementedError("complex algebraic numbers are not supported")
from sympy.printing.lambdarepr import LambdaPrinter
class IntervalPrinter(LambdaPrinter):
"""Use ``lambda`` printer but print numbers as ``mpi`` intervals. """
def _print_Integer(self, expr):
return "mpi('%s')" % super(IntervalPrinter, self)._print_Integer(expr)
def _print_Rational(self, expr):
return "mpi('%s')" % super(IntervalPrinter, self)._print_Rational(expr)
func = lambdify((), alg, modules="mpmath", printer=IntervalPrinter())
poly = minpoly(alg, polys=True)
intervals = poly.intervals(sqf=True)
dps, done = mp.dps, False
try:
while not done:
alg = func()
for a, b in intervals:
if a <= alg.a and alg.b <= b:
done = True
break
else:
mp.dps *= 2
finally:
mp.dps = dps
if eps is not None:
a, b = poly.refine_root(a, b, eps=eps, fast=fast)
return (a, b)
开发者ID:Jerryy,项目名称:sympy,代码行数:44,代码来源:numberfields.py
注:本文中的sympy.utilities.lambdify函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论