本文整理汇总了Python中sympy.utilities.any函数的典型用法代码示例。如果您正苦于以下问题:Python any函数的具体用法?Python any怎么用?Python any使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了any函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _rootof_data
def _rootof_data(poly, indices):
"""Construct ``RootOf`` data from a polynomial and indices. """
(_, factors) = poly.factor_list()
reals = _rootof_get_reals(factors)
real_count = sum([ k for _, _, k in reals ])
if indices is None:
reals = _rootof_reals_sorted(reals)
for index in xrange(0, real_count):
yield _rootof_reals_index(reals, index)
else:
if any(index < real_count for index in indices):
reals = _rootof_reals_sorted(reals)
for index in indices:
if index < real_count:
yield _rootof_reals_index(reals, index)
if any(index >= real_count for index in indices):
complexes = _rootof_get_complexes(factors)
complexes = _rootof_complexes_sorted(complexes)
for index in indices:
if index >= real_count:
yield _rootof_complexes_index(complexes, index-real_count)
示例2: update
def update(G, CP, h):
"""update G using the set of critical pairs CP and h = (expv,pi)
see [BW] page 230
"""
hexpv, hp = f[h]
# print 'DB10',hp
# filter new pairs (h,g), g in G
C = G.copy()
D = set()
while C:
# select a pair (h,g) by popping an element from C
g = C.pop()
gexpv = f[g][0]
LCMhg = lcm_expv(hexpv, gexpv)
def lcm_divides(p):
expv = lcm_expv(hexpv, f[p][0])
# LCM(LM(h), LM(p)) divides LCM(LM(h),LM(g))
return monomial_div(LCMhg, expv)
# HT(h) and HT(g) disjoint: hexpv + gexpv == LCMhg
if monomial_mul(hexpv, gexpv) == LCMhg or (
not any(lcm_divides(f) for f in C) and not any(lcm_divides(pr[1]) for pr in D)
):
D.add((h, g))
E = set()
while D:
# select h,g from D
h, g = D.pop()
gexpv = f[g][0]
LCMhg = lcm_expv(hexpv, gexpv)
if not monomial_mul(hexpv, gexpv) == LCMhg:
E.add((h, g))
# filter old pairs
B_new = set()
while CP:
# select g1,g2 from CP
g1, g2 = CP.pop()
g1expv = f[g1][0]
g2expv = f[g2][0]
LCM12 = lcm_expv(g1expv, g2expv)
# if HT(h) does not divide lcm(HT(g1),HT(g2))
if not monomial_div(LCM12, hexpv) or lcm_expv(g1expv, hexpv) == LCM12 or lcm_expv(g2expv, hexpv) == LCM12:
B_new.add((g1, g2))
B_new |= E
# filter polynomials
G_new = set()
while G:
g = G.pop()
if not monomial_div(f[g][0], hexpv):
G_new.add(g)
G_new.add(h)
return G_new, B_new
示例3: is_univariate
def is_univariate(f):
"""Returns True if 'f' is univariate in its last variable. """
for monom in f.monoms():
if any(m > 0 for m in monom[:-1]):
return False
return True
示例4: solve_undetermined_coeffs
def solve_undetermined_coeffs(equ, coeffs, sym, **flags):
"""Solve equation of a type p(x; a_1, ..., a_k) == q(x) where both
p, q are univariate polynomials and f depends on k parameters.
The result of this functions is a dictionary with symbolic
values of those parameters with respect to coefficiens in q.
This functions accepts both Equations class instances and ordinary
SymPy expressions. Specification of parameters and variable is
obligatory for efficiency and simplicity reason.
>>> from sympy import *
>>> a, b, c, x = symbols('a', 'b', 'c', 'x')
>>> solve_undetermined_coeffs(Eq(2*a*x + a+b, x), [a, b], x)
{a: 1/2, b: -1/2}
>>> solve_undetermined_coeffs(Eq(a*c*x + a+b, x), [a, b], x)
{a: 1/c, b: -1/c}
"""
if isinstance(equ, Equality):
# got equation, so move all the
# terms to the left hand side
equ = equ.lhs - equ.rhs
system = collect(equ.expand(), sym, evaluate=False).values()
if not any([ equ.has(sym) for equ in system ]):
# consecutive powers in the input expressions have
# been successfully collected, so solve remaining
# system using Gaussian ellimination algorithm
return solve(system, *coeffs, **flags)
else:
return None # no solutions
示例5: gf_Qbasis
def gf_Qbasis(Q, p, K):
"""
Compute a basis of the kernel of ``Q``.
**Examples**
>>> from sympy.polys.domains import ZZ
>>> from sympy.polys.galoistools import gf_Qmatrix, gf_Qbasis
>>> gf_Qbasis(gf_Qmatrix([1, 0, 0, 0, 1], 5, ZZ), 5, ZZ)
[[1, 0, 0, 0], [0, 0, 1, 0]]
>>> gf_Qbasis(gf_Qmatrix([3, 2, 4], 5, ZZ), 5, ZZ)
[[1, 0]]
"""
Q, n = [ list(q) for q in Q ], len(Q)
for k in xrange(0, n):
Q[k][k] = (Q[k][k] - K.one) % p
for k in xrange(0, n):
for i in xrange(k, n):
if Q[k][i]:
break
else:
continue
inv = K.invert(Q[k][i], p)
for j in xrange(0, n):
Q[j][i] = (Q[j][i]*inv) % p
for j in xrange(0, n):
t = Q[j][k]
Q[j][k] = Q[j][i]
Q[j][i] = t
for i in xrange(0, n):
if i != k:
q = Q[k][i]
for j in xrange(0, n):
Q[j][i] = (Q[j][i] - Q[j][k]*q) % p
for i in xrange(0, n):
for j in xrange(0, n):
if i == j:
Q[i][j] = (K.one - Q[i][j]) % p
else:
Q[i][j] = (-Q[i][j]) % p
basis = []
for q in Q:
if any(q):
basis.append(q)
return basis
示例6: denester
def denester(nested):
"""
Denests a list of expressions that contain nested square roots.
This method should not be called directly - use 'denest' instead.
This algorithm is based on <http://www.almaden.ibm.com/cs/people/fagin/symb85.pdf>.
It is assumed that all of the elements of 'nested' share the same
bottom-level radicand. (This is stated in the paper, on page 177, in
the paragraph immediately preceding the algorithm.)
When evaluating all of the arguments in parallel, the bottom-level
radicand only needs to be denested once. This means that calling
denester with x arguments results in a recursive invocation with x+1
arguments; hence denester has polynomial complexity.
However, if the arguments were evaluated separately, each call would
result in two recursive invocations, and the algorithm would have
exponential complexity.
This is discussed in the paper in the middle paragraph of page 179.
"""
if all((n ** 2).is_Number for n in nested): # If none of the arguments are nested
for f in subsets(len(nested)): # Test subset 'f' of nested
p = prod(nested[i] ** 2 for i in range(len(f)) if f[i]).expand()
if 1 in f and f.count(1) > 1 and f[-1]:
p = -p
if sqrt(p).is_Number:
return sqrt(p), f # If we got a perfect square, return its square root.
return nested[-1], [0] * len(nested) # Otherwise, return the radicand from the previous invocation.
else:
a, b, r, R = Wild("a"), Wild("b"), Wild("r"), None
values = [expr.match(sqrt(a + b * sqrt(r))) for expr in nested]
for v in values:
if r in v: # Since if b=0, r is not defined
if R is not None:
assert R == v[r] # All the 'r's should be the same.
else:
R = v[r]
d, f = denester([sqrt((v[a] ** 2).expand() - (R * v[b] ** 2).expand()) for v in values] + [sqrt(R)])
if not any([f[i] for i in range(len(nested))]): # If f[i]=0 for all i < len(nested)
v = values[-1]
return sqrt(v[a] + v[b] * d), f
else:
v = prod(nested[i] ** 2 for i in range(len(nested)) if f[i]).expand().match(a + b * sqrt(r))
if 1 in f and f.index(1) < len(nested) - 1 and f[len(nested) - 1]:
v[a] = -1 * v[a]
v[b] = -1 * v[b]
if not f[len(nested)]: # Solution denests with square roots
return (
(
sqrt((v[a] + d).expand() / 2) + sign(v[b]) * sqrt((v[b] ** 2 * R / (2 * (v[a] + d))).expand())
).expand(),
f,
)
else: # Solution requires a fourth root
FR, s = (R.expand() ** Rational(1, 4)), sqrt((v[b] * R).expand() + d)
return (s / (sqrt(2) * FR) + v[a] * FR / (sqrt(2) * s)).expand(), f
示例7: _eval_nseries
def _eval_nseries(self, x, n):
"""
This function does compute series for multivariate functions,
but the expansion is always in terms of *one* variable.
Examples:
>>> from sympy import atan2, O
>>> from sympy.abc import x, y
>>> atan2(x, y).series(x, n=2)
atan2(0, y) + x/y + O(x**2)
>>> atan2(x, y).series(y, n=2)
atan2(x, 0) - y/x + O(y**2)
"""
if self.func.nargs is None:
raise NotImplementedError('series for user-defined \
functions are not supported.')
args = self.args
args0 = [t.limit(x, 0) for t in args]
if any([t is S.NaN or t.is_bounded is False for t in args0]):
raise PoleError("Cannot expand %s around 0" % (args))
if (self.func.nargs == 1 and args0[0]) or self.func.nargs > 1:
e = self
e1 = e.expand()
if e == e1:
#for example when e = sin(x+1) or e = sin(cos(x))
#let's try the general algorithm
term = e.subs(x, S.Zero)
if term.is_bounded is False or term is S.NaN:
raise PoleError("Cannot expand %s around 0" % (self))
series = term
fact = S.One
for i in range(n-1):
i += 1
fact *= Rational(i)
e = e.diff(x)
subs = e.subs(x, S.Zero)
if subs is S.NaN:
# try to evaluate a limit if we have to
subs = e.limit(x, S.Zero)
if subs.is_bounded is False:
raise PoleError("Cannot expand %s around 0" % (self))
term = subs*(x**i)/fact
term = term.expand()
series += term
return series + C.Order(x**n, x)
return e1.nseries(x, n=n)
arg = self.args[0]
l = []
g = None
for i in xrange(n+2):
g = self.taylor_term(i, arg, g)
g = g.nseries(x, n=n)
l.append(g)
return Add(*l) + C.Order(x**n, x)
示例8: dmp_zz_wang_lead_coeffs
def dmp_zz_wang_lead_coeffs(f, T, cs, E, H, A, u, K):
"""Wang/EEZ: Compute correct leading coefficients. """
C, J, v = [], [0]*len(E), u-1
for h in H:
c = dmp_one(v, K)
d = dup_LC(h, K)*cs
for i in reversed(xrange(len(E))):
k, e, (t, _) = 0, E[i], T[i]
while not (d % e):
d, k = d//e, k+1
if k != 0:
c, J[i] = dmp_mul(c, dmp_pow(t, k, v, K), v, K), 1
C.append(c)
if any([ not j for j in J ]):
raise ExtraneousFactors # pragma: no cover
CC, HH = [], []
for c, h in zip(C, H):
d = dmp_eval_tail(c, A, v, K)
lc = dup_LC(h, K)
if K.is_one(cs):
cc = lc//d
else:
g = K.gcd(lc, d)
d, cc = d//g, lc//g
h, cs = dup_mul_ground(h, d, K), cs//d
c = dmp_mul_ground(c, cc, v, K)
CC.append(c)
HH.append(h)
if K.is_one(cs):
return f, HH, CC
CCC, HHH = [], []
for c, h in zip(CC, HH):
CCC.append(dmp_mul_ground(c, cs, v, K))
HHH.append(dmp_mul_ground(h, cs, 0, K))
f = dmp_mul_ground(f, cs**(len(H)-1), u, K)
return f, HHH, CCC
示例9: is_zero
def is_zero(self):
"""Since Integral doesn't autosimplify it it useful to see if
it would simplify to zero or not in a trivial manner, i.e. when
the function is 0 or two limits of a definite integral are the same.
This is a very naive and quick test, not intended to check for special
patterns like Integral(sin(m*x)*cos(n*x), (x, 0, 2*pi)) == 0.
"""
if self.function.is_zero or any(len(xab) == 3 and xab[1] == xab[2] for xab in self.limits):
return True
if not self.free_symbols and self.function.is_number:
# the integrand is a number and the limits are numerical
return False
示例10: preprocess
def preprocess(cls, gens):
if isinstance(gens, Basic):
gens = (gens,)
elif len(gens) == 1 and hasattr(gens[0], '__iter__'):
gens = gens[0]
if gens == (None,):
gens = ()
elif len(set(gens)) != len(gens):
raise GeneratorsError("duplicated generators: %s" % str(gens))
elif any(gen.is_commutative is False for gen in gens):
raise GeneratorsError("non-commutative generators: %s" % str(gens))
return tuple(gens)
示例11: _parallel_dict_from_expr
def _parallel_dict_from_expr(exprs, opt):
"""Transform expressions into a multinomial form. """
if opt.expand is not False:
exprs = [ expr.expand() for expr in exprs ]
if any(expr.is_commutative is False for expr in exprs):
raise PolynomialError('non-commutative expressions are not supported')
if opt.gens:
reps, gens = _parallel_dict_from_expr_if_gens(exprs, opt)
else:
reps, gens = _parallel_dict_from_expr_no_gens(exprs, opt)
return reps, opt.clone({'gens': gens})
示例12: __new__
def __new__(cls, *args, **options):
# Handle calls like Function('f')
if cls is Function:
return UndefinedFunction(*args)
args = map(sympify, args)
evaluate = options.pop('evaluate', True)
if evaluate:
evaluated = cls.eval(*args)
if evaluated is not None:
return evaluated
result = super(Application, cls).__new__(cls, *args, **options)
if evaluate and any([cls._should_evalf(a) for a in args]):
return result.evalf()
return result
示例13: _find
def _find(self, tests, obj, name, module, source_lines, globs, seen):
"""
Find tests for the given object and any contained objects, and
add them to `tests`.
"""
if self._verbose:
print 'Finding tests in %s' % name
# If we've already processed this object, then ignore it.
if id(obj) in seen:
return
seen[id(obj)] = 1
# Make sure we don't run doctests for classes outside of sympy, such
# as in numpy or scipy.
if inspect.isclass(obj):
if obj.__module__.split('.')[0] != 'sympy':
return
# Find a test for this object, and add it to the list of tests.
test = self._get_test(obj, name, module, globs, source_lines)
if test is not None:
tests.append(test)
# Look for tests in a module's contained objects.
if inspect.ismodule(obj) and self._recurse:
for rawname, val in obj.__dict__.items():
# Recurse to functions & classes.
if inspect.isfunction(val) or inspect.isclass(val):
in_module = self._from_module(module, val)
if not in_module:
# double check in case this function is decorated
# and just appears to come from a different module.
pat = r'\s*(def|class)\s+%s\s*\(' % rawname
PAT = pre.compile(pat)
in_module = any(PAT.match(line) for line in source_lines)
if in_module:
try:
valname = '%s.%s' % (name, rawname)
self._find(tests, val, valname, module, source_lines, globs, seen)
except ValueError, msg:
if "invalid option" in msg.args[0]:
# +SKIP raises ValueError in Python 2.4
pass
else:
raise
except:
pass
示例14: gf_Qbasis
def gf_Qbasis(Q, p, K):
"""Compute a basis of the kernel of `Q`. """
Q, n = [ list(q) for q in Q ], len(Q)
for k in xrange(0, n):
Q[k][k] = (Q[k][k] - K.one) % p
for k in xrange(0, n):
for i in xrange(k, n):
if Q[k][i]:
break
else:
continue
inv = K.invert(Q[k][i], p)
for j in xrange(0, n):
Q[j][i] = (Q[j][i]*inv) % p
for j in xrange(0, n):
t = Q[j][k]
Q[j][k] = Q[j][i]
Q[j][i] = t
for i in xrange(0, n):
if i != k:
q = Q[k][i]
for j in xrange(0, n):
Q[j][i] = (Q[j][i] - Q[j][k]*q) % p
for i in xrange(0, n):
for j in xrange(0, n):
if i == j:
Q[i][j] = (K.one - Q[i][j]) % p
else:
Q[i][j] = (-Q[i][j]) % p
basis = []
for q in Q:
if any(q):
basis.append(q)
return basis
示例15: test
def test(*args, **kwargs):
"""
Run all tests containing any of the given strings in their path.
If sort=False, run them in random order (not default).
Warning: Tests in *very* deeply nested directories are not found.
Examples:
>> import sympy
Run all tests:
>> sympy.test()
Run one file:
>> sympy.test("sympy/core/tests/test_basic.py")
Run all tests in sympy/functions/ and some particular file:
>> sympy.test("sympy/core/tests/test_basic.py", "sympy/functions")
Run all tests in sympy/core and sympy/utilities:
>> sympy.test("core", "util")
"""
from glob import glob
verbose = kwargs.get("verbose", False)
tb = kwargs.get("tb", "short")
kw = kwargs.get("kw", "")
post_mortem = kwargs.get("pdb", False)
colors = kwargs.get("colors", True)
sort = kwargs.get("sort", True)
r = PyTestReporter(verbose, tb, colors)
t = SymPyTests(r, kw, post_mortem)
if len(args) == 0:
t.add_paths(["sympy"])
else:
mypaths = []
for p in t.get_paths(dir='sympy'):
mypaths.extend(glob(p))
mypaths = set(mypaths)
t.add_paths([p for p in mypaths if any(a in p for a in args)])
return t.test(sort=sort)