Hi Roberto,
If you have something like
expr = some_function(args)
where some_function creates new symbols (not found in args) then
ideally some_function should also return what the newly created
symbols are or some other object that can tell you them:
expr, syms = some_function(args)
I think that attempting to guess what symbols should be used in any
context by inspecting free symbols is not a good approach.
Oscar
On Fri, 10 Jul 2020 at 14:28, roberto franceschini
<[email protected]> wrote:
>
> The situation is the one in which I get a sympy expression out of a function
> that ends in `return my_polynomial_inRn` and now I want to pass this to
> another function (e.g. to make plots or whatever) without having to know the
> names of the symbols involved, which is exactly what free_symbols does for me
> in this instance.
> Do you see another way around this?
>
>
> On Fri, Jul 10, 2020 at 11:08 AM Oscar Benjamin <[email protected]>
> wrote:
>>
>> Hi Roberto,
>>
>> I already answered this on SO:
>> https://stackoverflow.com/questions/62798213/keep-the-order-of-parameters-fixed-in-sympy-lambdify-from-free-symbols/62800716?noredirect=1#comment111075099_62800716
>>
>> If you are using symarray to generate the symbols then you can get the
>> list of symbols from the symarray directly and then pass those to
>> lambdify.
>>
>> I can't think of any situation where it would be a good idea to use
>> free_symbols to get the arguments to lambdify.
>>
>> Oscar
>>
>> On Fri, 10 Jul 2020 at 08:10, roberto franceschini
>> <[email protected]> wrote:
>> >
>> > Hello, I have opened an issue for the input of lambdify. If you want to
>> > disallow sets as inputs I think it is fair. However, It would be nice to
>> > have that free_symbol can be given directly as input for lambdify, is that
>> > possible? should I use something else than free_symbols for this purpose?
>> >
>> > On Thu, Jul 9, 2020 at 9:55 PM Aaron Meurer <[email protected]> wrote:
>> >>
>> >> Can you open an issue in the issue tracker for this? I agree that sets
>> >> should not be allowed.
>> >>
>> >> Aaron Meurer
>> >>
>> >> On Thu, Jul 9, 2020 at 3:08 AM Roberto <[email protected]>
>> >> wrote:
>> >> >
>> >> > I have seen that lambdify wants a list for the arguments to be treated
>> >> > as symbols. This list can be also give as a python set, e.g. {x,y,z },
>> >> > which is exactly what would be returned by a .free_symbol property. If
>> >> > lambdify is feed a set like that of the output of .free_symbol it may
>> >> > change their order in the conversion from set to list. This is done
>> >> > silently and may cause major disfunction in the use of the lamdified
>> >> > function because you think x is x, but is y instead and so on.
>> >> > I would like to ask developers to check for the type of the lambdify
>> >> > list of arguments and throw a warning to flag that a set is being
>> >> > converted and that the ordering is not guaranteed.
>> >> > Given that .free_symbols returns a set, not a list, this is very common
>> >> > pitfall in my opinion and must be prevented.
>> >> >
>> >> > --
>> >> > You received this message because you are subscribed to the Google
>> >> > Groups "sympy" group.
>> >> > To unsubscribe from this group and stop receiving emails from it, send
>> >> > an email to [email protected].
>> >> > To view this discussion on the web visit
>> >> > https://groups.google.com/d/msgid/sympy/c1517b79-490b-4a1b-b526-3e3842b55fbco%40googlegroups.com.
>> >>
>> >> --
>> >> You received this message because you are subscribed to the Google Groups
>> >> "sympy" group.
>> >> To unsubscribe from this group and stop receiving emails from it, send an
>> >> email to [email protected].
>> >> To view this discussion on the web visit
>> >> https://groups.google.com/d/msgid/sympy/CAKgW%3D6KuqnjJHTObyDxK0tvaF_Frxzd-MfyQSY94v-oTUWyNAg%40mail.gmail.com.
>> >
>> > --
>> > You received this message because you are subscribed to the Google Groups
>> > "sympy" group.
>> > To unsubscribe from this group and stop receiving emails from it, send an
>> > email to [email protected].
>> > To view this discussion on the web visit
>> > https://groups.google.com/d/msgid/sympy/CAJxM9JqSoqQQkYH9UUXGyXNqRtY9VHJxKByc8Fv8%2BPaqFudP6w%40mail.gmail.com.
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "sympy" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/sympy/CAHVvXxSsngVE_X-aBRYWER5sESZW-e-EnjwWcfGAhM%3D%2Beq97zQ%40mail.gmail.com.
>
> --
> You received this message because you are subscribed to the Google Groups
> "sympy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/sympy/CAJxM9Jpza%3DgRk9%3DZ2_thBS4xN_dkjCaB5PTMcz1hj8wHG_R90g%40mail.gmail.com.
--
You received this message because you are subscribed to the Google Groups
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/sympy/CAHVvXxQCPtBmmcjoVKv0jqYFqezsUQ5zWox_Q16x72ygng37Xg%40mail.gmail.com.