本文整理汇总了Python中sympy.integrals.trigonometry.trigintegrate函数的典型用法代码示例。如果您正苦于以下问题:Python trigintegrate函数的具体用法?Python trigintegrate怎么用?Python trigintegrate使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了trigintegrate函数的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_trigintegrate_mixed
def test_trigintegrate_mixed():
assert trigintegrate(sin(x)*sec(x), x) == -log(cos(x))
assert trigintegrate(sin(x)*csc(x), x) == x
assert trigintegrate(sin(x)*cot(x), x) == sin(x)
assert trigintegrate(cos(x)*sec(x), x) == x
assert trigintegrate(cos(x)*csc(x), x) == log(sin(x))
assert trigintegrate(cos(x)*tan(x), x) == -cos(x)
assert trigintegrate(cos(x)*cot(x), x) == log(cos(x) - 1)/2 \
- log(cos(x) + 1)/2 + cos(x)
assert trigintegrate(cot(x)*cos(x)**2, x) == log(sin(x)) - sin(x)**2/2
示例2: test_trigintegrate_even
def test_trigintegrate_even():
assert trigintegrate(sin(x)**2, x) == x/2 - cos(x)*sin(x)/2
assert trigintegrate(cos(x)**2, x) == x/2 + cos(x)*sin(x)/2
assert trigintegrate(sin(3*x)**2, x) == x/2 - cos(3*x)*sin(3*x)/6
assert trigintegrate(cos(3*x)**2, x) == x/2 + cos(3*x)*sin(3*x)/6
assert trigintegrate(sin(x)**2 * cos(x)**2, x) == \
x/8 - sin(2*x)*cos(2*x)/16
assert trigintegrate(sin(x)**4 * cos(x)**2, x) == \
x/16 - sin(x) *cos(x)/16 - sin(x)**3*cos(x)/24 + \
sin(x)**5*cos(x)/6
assert trigintegrate(sin(x)**2 * cos(x)**4, x) == \
x/16 + cos(x) *sin(x)/16 + cos(x)**3*sin(x)/24 - \
cos(x)**5*sin(x)/6
assert trigintegrate(sin(x)**(-4), x) == -2*cos(x)/(3*sin(x)) \
- cos(x)/(3*sin(x)**3)
assert trigintegrate(cos(x)**(-6), x) == sin(x)/(5*cos(x)**5) \
+ 4*sin(x)/(15*cos(x)**3) + 8*sin(x)/(15*cos(x))
示例3: test_trigintegrate_even
def test_trigintegrate_even():
assert trigintegrate(sin(x)**2, x) == x/2 - cos(x)*sin(x)/2
assert trigintegrate(cos(x)**2, x) == x/2 + cos(x)*sin(x)/2
assert trigintegrate(sin(3*x)**2, x)== x/2 - cos(3*x)*sin(3*x)/6
assert trigintegrate(cos(3*x)**2, x)== x/2 + cos(3*x)*sin(3*x)/6
assert trigintegrate(sin(x)**2 * cos(x)**2, x) == x/8 - cos(x)**3*sin(x)/4 \
+ cos(x) *sin(x)/8
assert trigintegrate(sin(x)**4 * cos(x)**2, x) == x/16- sin(x) *cos(x)/16 \
- sin(x)**3*cos(x)/24 \
+ sin(x)**5*cos(x)/6
assert trigintegrate(sin(x)**2 * cos(x)**4, x) == x/16+ cos(x) *sin(x)/16 \
+ cos(x)**3*sin(x)/24 \
- cos(x)**5*sin(x)/6
示例4: test_trigintegrate_symbolic
def test_trigintegrate_symbolic():
n = Symbol('n', integer=True)
assert trigintegrate(cos(x)**n, x) is None
assert trigintegrate(sin(x)**n, x) is None
assert trigintegrate(cot(x)**n, x) is None
示例5: test_trigintegrate_odd
def test_trigintegrate_odd():
assert trigintegrate(Rational(1), x) == x
assert trigintegrate(x, x) is None
assert trigintegrate(x**2, x) is None
assert trigintegrate(sin(x), x) == -cos(x)
assert trigintegrate(cos(x), x) == sin(x)
assert trigintegrate(sin(3*x), x) == -cos(3*x)/3
assert trigintegrate(cos(3*x), x) == sin(3*x)/3
y = Symbol('y')
assert trigintegrate(sin(y*x), x) == \
Piecewise((0, Eq(y, 0)), (-cos(y*x)/y, True))
assert trigintegrate(cos(y*x), x) == \
Piecewise((x, Eq(y, 0)), (sin(y*x)/y, True))
assert trigintegrate(sin(y*x)**2, x) == \
Piecewise((0, Eq(y, 0)), ((x*y/2 - sin(x*y)*cos(x*y)/2)/y, True))
assert trigintegrate(sin(y*x)*cos(y*x), x) == \
Piecewise((0, Eq(y, 0)), (sin(x*y)**2/(2*y), True))
assert trigintegrate(cos(y*x)**2, x) == \
Piecewise((x, Eq(y, 0)), ((x*y/2 + sin(x*y)*cos(x*y)/2)/y, True))
y = Symbol('y', positive=True)
# TODO: remove conds='none' below. For this to work we would have to rule
# out (e.g. by trying solve) the condition y = 0, incompatible with
# y.is_positive being True.
assert trigintegrate(sin(y*x), x, conds='none') == -cos(y*x)/y
assert trigintegrate(cos(y*x), x, conds='none') == sin(y*x)/y
assert trigintegrate(sin(x)*cos(x), x) == sin(x)**2/2
assert trigintegrate(sin(x)*cos(x)**2, x) == -cos(x)**3/3
assert trigintegrate(sin(x)**2*cos(x), x) == sin(x)**3/3
# check if it selects right function to substitute,
# so the result is kept simple
assert trigintegrate(sin(x)**7 * cos(x), x) == sin(x)**8/8
assert trigintegrate(sin(x) * cos(x)**7, x) == -cos(x)**8/8
assert trigintegrate(sin(x)**7 * cos(x)**3, x) == \
-sin(x)**10/10 + sin(x)**8/8
assert trigintegrate(sin(x)**3 * cos(x)**7, x) == \
cos(x)**10/10 - cos(x)**8/8
# both n, m are odd and -ve, and not necessarily equal
assert trigintegrate(sin(x)**-1*cos(x)**-1, x) == \
-log(sin(x)**2 - 1)/2 + log(sin(x))
示例6: _eval_integral
#.........这里部分代码省略.........
parts.append(coeff*x)
continue
# g(x) = expr + O(x**n)
order_term = g.getO()
if order_term is not None:
h = self._eval_integral(g.removeO(), x)
if h is not None:
h_order_expr = self._eval_integral(order_term.expr, x)
if h_order_expr is not None:
h_order_term = order_term.func(h_order_expr, *order_term.variables)
parts.append(coeff*(h + h_order_term))
continue
# NOTE: if there is O(x**n) and we fail to integrate then there is
# no point in trying other methods because they will fail anyway.
return None
# c
# g(x) = (a*x+b)
if g.is_Pow and not g.exp.has(x) and not meijerg:
a = Wild('a', exclude=[x])
b = Wild('b', exclude=[x])
M = g.base.match(a*x + b)
if M is not None:
if g.exp == -1:
h = C.log(g.base)
else:
h = g.base**(g.exp + 1) / (g.exp + 1)
parts.append(coeff * h / M[a])
continue
# poly(x)
# g(x) = -------
# poly(x)
if g.is_rational_function(x) and not meijerg:
parts.append(coeff * ratint(g, x))
continue
if not meijerg:
# g(x) = Mul(trig)
h = trigintegrate(g, x)
if h is not None:
parts.append(coeff * h)
continue
# g(x) has at least a DiracDelta term
h = deltaintegrate(g, x)
if h is not None:
parts.append(coeff * h)
continue
if not meijerg:
# fall back to the more general algorithm
try:
h = heurisch(g, x, hints=[])
except PolynomialError:
# XXX: this exception means there is a bug in the
# implementation of heuristic Risch integration
# algorithm.
h = None
else:
h = None
if meijerg is not False and h is None:
# rewrite using G functions
h = meijerint_indefinite(g, x)
if h is not None:
parts.append(coeff * h)
continue
# if we failed maybe it was because we had
# a product that could have been expanded,
# so let's try an expansion of the whole
# thing before giving up; we don't try this
# out the outset because there are things
# that cannot be solved unless they are
# NOT expanded e.g., x**x*(1+log(x)). There
# should probably be a checker somewhere in this
# routine to look for such cases and try to do
# collection on the expressions if they are already
# in an expanded form
if not h and len(args) == 1:
f = f.expand(mul=True, deep=False)
if f.is_Add:
return self._eval_integral(f, x, meijerg)
if h is not None:
parts.append(coeff * h)
else:
return None
return Add(*parts)
示例7: _eval_integral
#.........这里部分代码省略.........
# no point in trying other methods because they will fail anyway.
return None
# c
# g(x) = (a*x+b)
if g.is_Pow and not g.exp.has(x) and not meijerg:
a = Wild('a', exclude=[x])
b = Wild('b', exclude=[x])
M = g.base.match(a*x + b)
if M is not None:
if g.exp == -1:
h = C.log(g.base)
elif conds != 'piecewise':
h = g.base**(g.exp + 1) / (g.exp + 1)
else:
h1 = C.log(g.base)
h2 = g.base**(g.exp + 1) / (g.exp + 1)
h = Piecewise((h1, Eq(g.exp, -1)), (h2, True))
parts.append(coeff * h / M[a])
continue
# poly(x)
# g(x) = -------
# poly(x)
if g.is_rational_function(x) and not meijerg:
parts.append(coeff * ratint(g, x))
continue
if not meijerg:
# g(x) = Mul(trig)
h = trigintegrate(g, x, conds=conds)
if h is not None:
parts.append(coeff * h)
continue
# g(x) has at least a DiracDelta term
h = deltaintegrate(g, x)
if h is not None:
parts.append(coeff * h)
continue
# Try risch again.
if risch is not False:
try:
h, i = risch_integrate(g, x, separate_integral=True, conds=conds)
except NotImplementedError:
h = None
else:
if i:
h = h + i.doit(risch=False)
parts.append(coeff*h)
continue
# fall back to heurisch
try:
if conds == 'piecewise':
h = heurisch_wrapper(g, x, hints=[])
else:
h = heurisch(g, x, hints=[])
except PolynomialError:
# XXX: this exception means there is a bug in the
# implementation of heuristic Risch integration
示例8: test_trigintegrate_odd
def test_trigintegrate_odd():
assert trigintegrate(Rational(1), x) == x
assert trigintegrate(x, x) is None
assert trigintegrate(x**2, x) is None
assert trigintegrate(sin(x), x) == -cos(x)
assert trigintegrate(cos(x), x) == sin(x)
assert trigintegrate(sin(3*x), x) == -cos(3*x)/3
assert trigintegrate(cos(3*x), x) == sin(3*x)/3
assert trigintegrate(sin(y*x), x) == -cos(y*x)/y
assert trigintegrate(cos(y*x), x) == sin(y*x)/y
assert trigintegrate(sin(x)*cos(x), x) == sin(x)**2/2
assert trigintegrate(sin(x)*cos(x)**2, x) == -cos(x)**3/3
assert trigintegrate(sin(x)**2*cos(x), x) == sin(x)**3/3
# check if it selects right function to substitute,
# so the result is kept simple
assert trigintegrate(sin(x)**7 * cos(x), x) == sin(x)**8/8
assert trigintegrate(sin(x) * cos(x)**7, x) == -cos(x)**8/8
assert trigintegrate(sin(x)**7 * cos(x)**3, x) == -sin(x)**10/10 + sin(x)**8/8
assert trigintegrate(sin(x)**3 * cos(x)**7, x) == cos(x)**10/10 - cos(x)**8/8
示例9: timeit_trigintegrate_sin3x
def timeit_trigintegrate_sin3x():
trigintegrate(sin(x)**3, x)
示例10: timeit_trigintegrate_x2
def timeit_trigintegrate_x2():
trigintegrate(x**2, x) # -> None
示例11: _eval_integral
#.........这里部分代码省略.........
(b) using Trager's algorithm - possibly faster than (a) but needs
implementation :)
(3) Whichever implementation of pmInt (Mateusz, Kirill's or a
combination of both).
- this way we can handle efficiently huge class of elementary and
special functions
(4) Recursive Risch algorithm as described in Bronstein's integration
tutorial.
- this way we can handle those integrable functions for which (3)
fails
(5) Powerful heuristics based mostly on user defined rules.
- handle complicated, rarely used cases
"""
# if it is a poly(x) then let the polynomial integrate itself (fast)
#
# It is important to make this check first, otherwise the other code
# will return a sympy expression instead of a Polynomial.
#
# see Polynomial for details.
if isinstance(f, Poly):
return f.integrate(x)
# Piecewise antiderivatives need to call special integrate.
if f.func is Piecewise:
return f._eval_integral(x)
# let's cut it short if `f` does not depend on `x`
if not f.has(x):
return f*x
# try to convert to poly(x) and then integrate if successful (fast)
poly = f.as_poly(x)
if poly is not None:
return poly.integrate(x).as_basic()
# since Integral(f=g1+g2+...) == Integral(g1) + Integral(g2) + ...
# we are going to handle Add terms separately,
# if `f` is not Add -- we only have one term
parts = []
for g in make_list(f, Add):
coeff, g = g.as_independent(x)
# g(x) = const
if g is S.One:
parts.append(coeff * x)
continue
# c
# g(x) = (a*x+b)
if g.is_Pow and not g.exp.has(x):
a = Wild('a', exclude=[x])
b = Wild('b', exclude=[x])
M = g.base.match(a*x + b)
if M is not None:
if g.exp == -1:
h = C.log(g.base)
else:
h = g.base**(g.exp+1) / (g.exp+1)
parts.append(coeff * h / M[a])
continue
# poly(x)
# g(x) = -------
# poly(x)
if g.is_rational_function(x):
parts.append(coeff * ratint(g, x))
continue
# g(x) = Mul(trig)
h = trigintegrate(g, x)
if h is not None:
parts.append(coeff * h)
continue
# g(x) has at least a DiracDelta term
h = deltaintegrate(g,x)
if h is not None:
parts.append(coeff * h)
continue
# fall back to the more general algorithm
h = heurisch(g, x, hints=[])
if h is not None:
parts.append(coeff * h)
else:
return None
return C.Add(*parts)