AngouriMath

Navigation

← Back to list of members

SolveByHalfAngleSubstitution​(AngouriMath.​Entity,​AngouriMath.​Entity.​Variable,​System.​Boolean)

 Method (no overloads)

Summary

A rational function of sin(x) and cos(x), turned into a rational function
of one variable by the half-angle substitution t = tan(x/2) and handed to the
machinery for those.

Remarks

The Weierstrass substitution. Under t = tan(x/2),
sin(x) = 2t/(1 + t^2), cos(x) = (1 - t^2)/(1 + t^2) and
dx = 2/(1 + t^2) dt, so anything built from sines and cosines by the field
operations becomes a quotient of polynomials — which partial fractions already answers.
What it is for. A family of first-year integrals had no antiderivative at all:
1/(1 + cos(x)), 1/(1 - sin(x)), 1/(1 + cos(x)/2),
1/(b cos(x) + a sin(x)). Measured against Rubi's suite, the integrals it rates
as a single table lookup were the *worst*-served difficulty band we had, and this
family is a large part of why.
https://github.com/asc-community/AngouriMath/issues/718
The test is the rewrite itself, as for the tangent above: replace every
sin(x) and cos(x) and see whether an x survives. That declines
sin(x) + x, and it declines sin(x) * sin(2x) as well — sin(2x) is
not sin(x), so an x is left behind. The second is the right answer for
the wrong-looking reason: a product of sines is a sum by the product-to-sum identity
and wants that rather than a rational function in t.
It runs after the tangent substitution, which is the more specific tool: an
integrand that is rational in tan(x) comes out of that one in terms of the
tangent, where this one would answer it in terms of the half-angle and be right but
unrecognisable.
The condition the answer inherits.tan(x/2) is undefined at odd
multiples of pi, so the antiderivative this produces is an antiderivative on each
interval between them rather than across one — the constant may differ from one
interval to the next. That is the standing property of this substitution and is the
same one SolveByTangentSubstitution(AngouriMath.Entity,AngouriMath.Entity.Variable,System.Boolean) already carries; it is not a claim
this rule makes and does not make the value wrong where it is defined.

























Angouri © 2019-2023 · Project's repo · Site's repo · Octicons · Transparency · 4378 pages online