Symbolics.jl icon indicating copy to clipboard operation
Symbolics.jl copied to clipboard

expand_derivatives fails on simple expression, with only one variable referenced

Open orebas opened this issue 1 year ago • 0 comments

MWE:

using Symbolics

function main()
	@variables t  b(t)
	D = Differential(t)
	expr = b - ((D(b))^2) * D(D(b))
	expr2 = D(expr)
	display(expr)
	display(expand_derivatives(expr))
	display(expr2)
	display(expand_derivatives(expr2))
end
main()

Error:

ERROR: LoadError: BoundsError: attempt to access 1-element Vector{Any} at index [2]
Stacktrace:
  [1] throw_boundserror(A::Vector{Any}, I::Tuple{Int64})
    @ Base ./essentials.jl:14
  [2] getindex(A::Vector{Any}, i::Int64)
    @ Base ./essentials.jl:915
  [3] expand_derivatives(O::SymbolicUtils.BasicSymbolic{Real}, simplify::Bool; occurrences::SymbolicUtils.BasicSymbolic{Real}) (repeats 2 times)
    @ Symbolics ~/.julia/packages/Symbolics/zuLwn/src/diff.jl:257
  [4] expand_derivatives(O::SymbolicUtils.BasicSymbolic{Real}, simplify::Bool; occurrences::Nothing)
    @ Symbolics ~/.julia/packages/Symbolics/zuLwn/src/diff.jl:257
  [5] expand_derivatives(n::Num, simplify::Bool; occurrences::Nothing)
    @ Symbolics ~/.julia/packages/Symbolics/zuLwn/src/diff.jl:299
  [6] expand_derivatives
    @ ~/.julia/packages/Symbolics/zuLwn/src/diff.jl:298 [inlined]
  [7] expand_derivatives(n::Num)
    @ Symbolics ~/.julia/packages/Symbolics/zuLwn/src/diff.jl:298
  [8] main()
    @ Main ~/MWE-test/v6.jl:12
  [9] top-level scope
    @ ~/MWE-test/v6.jl:15
 [10] include(fname::String)
    @ Main ./sysimg.jl:38
 [11] top-level scope
    @ REPL[4]:1
in expression starting at /home/orebas/MWE-test/v6.jl:15

Using:

  [d1185830] SymbolicUtils v3.6.0
  [0c5d862f] Symbolics v6.6.0

This is probably related to #1126. I found this trying to debug that. However, this error seems to come from a much simpler expression, indeed there is only one variable referenced. So I am skeptical it has to do with variable ordering.

Note that replacing "t" with "x" everywhere eliminates the failure, but that is not a fix because "t" is used in a lot of places as the independent variable.

orebas avatar Sep 05 '24 02:09 orebas