Is there an implemented version of the legendre Polynomials with symbolic variables?
I have checked
But they either don’t implement the Legendre Polynomials or a symbolic equivalent.
What would be the most convenient way to implement them?
1 Like
Their combination does:
julia> using ClassicalOrthogonalPolynomials, Symbolics
julia> @variables x;
julia> p4 = legendrep(4, x)
0.375 + 1.75x*(1.6666666666666667x*(1.5(x^2) - 0.5) - 0.6666666666666666x) - 1.125(x^2)
julia> expand(p4)
0.375 + 4.375(x^4) - 3.75(x^2)
Gotta love composability!
8 Likes
Following up on @stevengj’s enthusiasm for composability, if you needed exact coefficients, you might mix in SpecialPolynomials
:
julia> using Symbolics, SpecialPolynomials
julia> @variables x
1-element Vector{Num}:
x
julia> basis(Legendre{Rational{Int}}, 4)(x) |> expand
(3//8) + (35//8)*(x^4) - (15//4)*(x^2)
7 Likes
Excelent! As a rule of thumb, which functions should I expect to work with Symbolics.jl?
1 Like
Really nice! But this option seems to overflow for degrees n > 25
basis(Legendre{Rational{Int}}, 25)(x) |> expand
ERROR: OverflowError: -148257227381443 * 74290 overflowed for type Int64
[...]
Replacing Int
for Int128
does not seem to work, because I’ll need to work with polynomials of degree 50 or more
Use BigInt
if you need exact rational coefficients for high degrees?
3 Likes