In Julia, I use Reduce package to do integration since Julia Symbolics.jl does not have integrate command in it.
But I am not able to figure how to convert the output (the anti derivative) to Julia symbolic expression so I can use it inside Julia symbolic, and not using the Reduce package.
This is what I tried
_
_ _ _(_)_ | Documentation: https://docs.julialang.org
(_) | (_) (_) |
_ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 1.7.1 (2021-12-22)
_/ |\__'_|_|_|\__'_| | Official https://julialang.org/ release
|__/ |
julia> using Symbolics
julia> using Reduce
julia> @variables x
1-element Vector{Num}:
x
#use Reduce to do the integration
julia> output = :(int(sin(x),x)) |> rcall
:(-(cos(x)))
julia> typeof(output)
Expr
Now, I want to use the output -cos(x) as symbolic expression using Julia Symbolics. How to convert it?
Now it gives an error as is
julia> Symbolics.simplify(output^2)
ERROR: MethodError: no method matching ^(::Expr, ::Int64)
Closest candidates are:
^(::Union{AbstractChar, AbstractString}, ::Integer) at G:\nabbasi\data\CDROM\JULIA_language\julia-1.7.1-win64\julia-1.7.1\share\julia\base\strings\basic.jl:721
^(::LinearAlgebra.Diagonal, ::Integer) at G:\nabbasi\data\CDROM\JULIA_language\julia-1.7.1-win64\julia-1.7.1\share\julia\stdlib\v1.7\LinearAlgebra\src\diagonal.jl:196
^(::LinearAlgebra.Diagonal, ::Real) at G:\nabbasi\data\CDROM\JULIA_language\julia-1.7.1-win64\julia-1.7.1\share\julia\stdlib\v1.7\LinearAlgebra\src\diagonal.jl:195
...
Stacktrace:
[1] literal_pow(f::typeof(^), x::Expr, #unused#::Val{2})
@ Base .\intfuncs.jl:325
[2] top-level scope
@ REPL[9]:1
This is the same output, but now it is Julia Symbolics expression:
julia> f=-cos(x)
-cos(x)
julia> typeof(f)
Num
julia> Symbolics.simplify( f^2)
cos(x)^2
How does one convert output of Reduce expression to Julia Symbolics expression, may be for further processing?
It is possible to convert the Reduce output to string
julia> g=string(output)
"-(cos(x))"
But do not know how to convert the above string now to Symbolics expression. parse does not work. May be there is different command?
References
Reduce Julia package https://docs.juliahub.com/Reduce/wEGBP/1.2.5/
Julia Symbolics package https://symbolics.juliasymbolics.org/dev/