Utworzyłem symboliczne wyrażenie za pomocą pakietu SymPy (https://github.com/jverzani/SymPy.jl). Chcę teraz znaleźć korzenie tego wyrażenia za pomocą pakietu Roots (https://github.com/JuliaLang/Roots.jl). Jednak nie mogę znaleźć sposobu, aby użyć metody fzeros
do znalezienia korzeni, ponieważ można to zastosować tylko do obiektu o typie Function
, a nie Sym
, który jest typem mojego wyrażenia.Julia: jak mogę przekonwertować wyrażenie symboliczne na funkcję?
Oto przykład tego, co próbuję zrobić. Tworzę symboliczny symbol "x"
i wyrażenie symboliczne sin(x)
. Teraz spróbujmy znaleźć zer sin(x)
między wartościami -10 i 10:
using SymPy
x = sym"x"
expr = sin(x)
using Roots
fzeros(expr,-10,10)
Oto błąd:
ERROR: `fzeros` has no method matching fzeros(::Sym, ::Int64, ::Int64)
Jak przekonwertować wyrażenia z Sym
typem Function
typ, więc może znaleźć korzenie?
Czy nsolve jest odsłonięty? – smichr
Dzięki. Tak, zapomniałem o tym, 'nsolve (expr, x0)' zadziała, aby znaleźć pojedyncze zero. Funkcja 'fzeros' w pierwotnym pytaniu jest trochę hack, która próbuje znaleźć wszystkie proste zera w określonym przedziale. Jest to bardziej podobne do "rozwiązania". – jverzani