I am certainly no expert in sympy or inpython, but maybe one more point:

I think, it is ‚dangerous‘ to do it like this:

from sympy import sqrt, sin, cos and then use sqrt, sin, cos later.
I could imagine, that lambdify gets confused.

I feel, it is better to do it like this:
import sympy as sp
Import numpy as np

and the write np.sqrt, or sp.sqrt, whichever you want in the context.
Then it is clear, which sqrt is meant.

On Thu 18. Aug 2022 at 13:12 Peter Stahlecker <[email protected]>
wrote:

> I use lambdify quite a bit, on rather large expressions.
> Basically, it always works like this for me:
>
> import sympy as sm
> x1, x2, …, xn = sm.symbols(‚x1, x2, ….., xn‘)
> ….
> …
> expr = some expression of generally with me: sm.sin, sm.cos, sm.exp,
> sm.sqrt,
>             sm.Heaviside, etc..
> This expression may have 50,000 terms, may be an (axb) matrix, whatever.
>
> expr_lam = sm.lambdify([x1, x2, …,xn], expr)
>
> Now I can evaluate expr_lam(…) like I would evaluate any numpy function.
>
> I have no idea, what expr_lam looks like, I would not know how to look at
> it.
> I assume, it converts sm.sin(..) to np.sin(…), etc
>
> This is how it works for me.
> As I do not really understand your points, like ‚dynamically created‘,
> ‚parse and subs‘, this may be of not help at all for you.
>
> Peter
>
>
> On Thu 18. Aug 2022 at 09:21 Zohreh Karimzadeh <[email protected]>
> wrote:
>
>> Before run I import sp.sqrt or sp.exp but after run they get
>> disappeared.  My expression is big and dynamically created  and not
>> possible to parse and subs np.exp or sp.exp.
>>
>> Zohreh Karimzadeh
>>
>> Contact me on
>>            +989102116325
>>                      and at
>>      [email protected]
>>                                  🌧️🌍🌱
>>
>>
>> On Thu, 18 Aug 2022, 01:17 Aaron Meurer, <[email protected]> wrote:
>>
>>> Your expression uses "sqrt" but you haven't imported it from anywhere,
>>> since you only did "import sympy as sp". You need to use sp.sqrt.
>>>
>>> Aaron Meurer
>>>
>>> On Wed, Aug 17, 2022 at 11:02 AM Zohreh Karimzadeh <
>>> [email protected]> wrote:
>>>
>>>> Here is my code:
>>>>
>>>> import matplotlib.pyplot as plt
>>>> import numpy as np
>>>> import sympy as sp
>>>> import pandas as pd
>>>> #exp_NaCl path: F:\Zohreh\MainZohreh\postdoc-field\CSU\Duplicat_Pure
>>>> df = 
>>>> pd.read_excel(r'F:\Zohreh\MainZohreh\postdoc-field\CSU\Duplicat_Pure\data.xlsx',
>>>>  sheet_name='NaCl_exp')
>>>> XNa = df['XNa']
>>>> XCl = df['XCl']
>>>> Xwater = df['Xwater']
>>>> Y = df['gama_x']
>>>> L=['WwaterNaCl', 'UwaterNaCl', 'VwaterNaCl', 'XCl', 'XNa', 'Xwater', 
>>>> 'BNaCl']
>>>> for j in range(len(L)):
>>>>     locals()[L[j]] = sp.symbols(L[j])
>>>> expr = -0.0118343195266272*BNaCl*XCl*XNa*(-2*(9.19238815542512*sqrt(XNa) + 
>>>> 9.19238815542512*sqrt(XCl + XNa) + 1)*exp(-9.19238815542512*sqrt(XNa) - 
>>>> 9.19238815542512*sqrt(XCl + XNa)) + 2)/((XCl + XNa)*(sqrt(XNa) + sqrt(XCl 
>>>> + XNa))**2) + 
>>>> 0.00591715976331361*BNaCl*XCl*(-2*(9.19238815542512*sqrt(XNa) + 
>>>> 9.19238815542512*sqrt(XCl + XNa) + 1)*exp(-9.19238815542512*sqrt(XNa) - 
>>>> 9.19238815542512*sqrt(XCl + XNa)) + 2)/(sqrt(XNa) + sqrt(XCl + XNa))**2 + 
>>>> 0.00591715976331361*BNaCl*XNa*(-2*(9.19238815542512*sqrt(XNa) + 
>>>> 9.19238815542512*sqrt(XCl + XNa) + 1)*exp(-9.19238815542512*sqrt(XNa) - 
>>>> 9.19238815542512*sqrt(XCl + XNa)) + 2)/(sqrt(XNa) + sqrt(XCl + XNa))**2 - 
>>>> 1.0*Cl*WwaterNaCl*Xwater*(0.5*XCl + 0.5*XNa + 0.5)/XCl - 
>>>> 0.5*Cl*WwaterNaCl/XCl - 4.0*UwaterNaCl*XCl*XNa*Xwater + 
>>>> 2.0*UwaterNaCl*XCl*Xwater + 2.0*UwaterNaCl*XNa*Xwater - 4.0*UwaterNaCl*XNa 
>>>> - 6.0*VwaterNaCl*XCl*XNa*Xwater**2 - 4.0*VwaterNaCl*XCl*Xwater**2 + 
>>>> 2.0*VwaterNaCl*XNa*Xwater**2 - 1.0*WwaterNaCl*Xwater*(0.5*XCl + 0.5*XNa + 
>>>> 0.5) + 2.0*WwaterNaCl*Xwater - 0.5*WwaterNaCl - 
>>>> 1.45739430799067*(0.707106781186548*sqrt(XNa) + 0.707106781186548*sqrt(XCl 
>>>> + XNa))*(-XCl - XNa + 1)/(9.19238815542512*sqrt(XNa) + 
>>>> 9.19238815542512*sqrt(XCl + XNa) + 1) - 
>>>> 1.45739430799067*(0.707106781186548*sqrt(XNa) + 0.707106781186548*sqrt(XCl 
>>>> + XNa))*(-1.4142135623731*sqrt(XNa) - 1.4142135623731*sqrt(XCl + XNa) + 
>>>> 1)/(9.19238815542512*sqrt(XNa) + 9.19238815542512*sqrt(XCl + XNa) + 1) - 
>>>> 0.448429017843282*log(9.19238815542512*sqrt(XNa) + 
>>>> 9.19238815542512*sqrt(XCl + XNa) + 1)
>>>> model_func = sp.lambdify(L, expr )
>>>>
>>>> def f(param):
>>>>     BNaCl = param[0]
>>>>     UwaterNaCl = param[1]
>>>>     VwaterNaCl = param[2]
>>>>     WwaterNaCl = param[3]
>>>>     Y_est = model_func
>>>>     return np.sum((np.log(Y) - Y_est)**2)
>>>>
>>>>
>>>> bnds = [(1, np.inf), (0, 1), (0, 1), (-1, np.inf)]
>>>> x0 = (1, 0.01, 0.98, 1)
>>>> con = {"type": "eq", "fun": c}
>>>>
>>>> result = minimize(f, x0, bounds=bnds)
>>>>
>>>> print(result.fun)
>>>> print(result.message)
>>>> print(result.x[0], result.x[1], result.x[2], result.x[3])
>>>>
>>>> while I got :
>>>> NameError: name 'sqrt' is not defined
>>>>
>>>> Zohreh Karimzadeh
>>>> *https://www.researchgate.net/profile/Zohreh-Karimzadeh*
>>>> <https://www.researchgate.net/profile/Zohreh-Karimzadeh>
>>>> Skype Name 49a52224a8b6b38b
>>>> Twitter Account @zohrehkarimzad1
>>>> [email protected]
>>>> +989102116325
>>>> ((((((((((((((((Value Water)))))))))))))))
>>>>
>>>>
>>>> On Wed, Aug 17, 2022 at 7:46 PM Peter Stahlecker <
>>>> [email protected]> wrote:
>>>>
>>>>> I use lambdify(....) a lot, but always like this:
>>>>>
>>>>> x = sympy.symbols('x')
>>>>> expr = symy.S(10.) * sympy.sqrt(x)
>>>>> expr_lam = sympy.lambdify([x], expr)
>>>>>
>>>>> a = expr_lam(10.)
>>>>>
>>>>> This seems to work for me.
>>>>>
>>>>> On Wed 17. Aug 2022 at 20:38, Zohreh Karimzadeh <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Dear sympy group
>>>>>> Thanks for your sympy.
>>>>>>
>>>>>> I am working on a code, after creating my big expression using sympy
>>>>>> it includes sqrt.
>>>>>>
>>>>>> I need to lambdify my expression to make it consistent with numpy and
>>>>>> other suffs.
>>>>>>
>>>>>> expr =10 * sp.sqrt(sp.symbols('x'))
>>>>>>
>>>>>> model_func = sp.lambdify('x', expr)
>>>>>>
>>>>>> But I found my expression after lambdifying becomes somethings like
>>>>>> this:
>>>>>>
>>>>>> 10*sqrt(x)
>>>>>>
>>>>>> while I need :
>>>>>>
>>>>>> 10*numpy.sqrt(x)
>>>>>>
>>>>>> Could possibly let me know how get sqrt to work with numpy?
>>>>>>
>>>>>> Regards,
>>>>>>
>>>>>> Zohreh
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> 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/1f0b313f-31c5-402e-991e-142a556016f4n%40googlegroups.com
>>>>>> <https://groups.google.com/d/msgid/sympy/1f0b313f-31c5-402e-991e-142a556016f4n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>> .
>>>>>>
>>>>> --
>>>>> Best regards,
>>>>>
>>>>> Peter Stahlecker
>>>>>
>>>>> --
>>>>> 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/CABKqA0ZoGwsadsk4SWCbJVMbCDwXcO_gNGumJH00GAeEFod7Cw%40mail.gmail.com
>>>>> <https://groups.google.com/d/msgid/sympy/CABKqA0ZoGwsadsk4SWCbJVMbCDwXcO_gNGumJH00GAeEFod7Cw%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>>
>>>> --
>>>> 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/CA%2B1XYLPRvXZ6jiJbUS_xpWNKqMuUH7Kt5evue%2BwKEwDMvGekBQ%40mail.gmail.com
>>>> <https://groups.google.com/d/msgid/sympy/CA%2B1XYLPRvXZ6jiJbUS_xpWNKqMuUH7Kt5evue%2BwKEwDMvGekBQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>> .
>>>
>>>
>>>> --
>>> 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%3D6JfUmU7Uu%2BSrcA1STxVvWWm7bGWE%3Dit8CTchksTC0Qk7g%40mail.gmail.com
>>> <https://groups.google.com/d/msgid/sympy/CAKgW%3D6JfUmU7Uu%2BSrcA1STxVvWWm7bGWE%3Dit8CTchksTC0Qk7g%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>> --
>> 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/CA%2B1XYLPiCR%3DS2Fac3FZtjMpspqB7BRKtYEi45BVWPjkizVbNvw%40mail.gmail.com
>> <https://groups.google.com/d/msgid/sympy/CA%2B1XYLPiCR%3DS2Fac3FZtjMpspqB7BRKtYEi45BVWPjkizVbNvw%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
> --
> Best regards,
>
> Peter Stahlecker
>
-- 
Best regards,

Peter Stahlecker

-- 
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/CABKqA0aHXE25ZM9hKBcYAh2gjQDiO54joS3C2%3D3iS_WnXwrJ_g%40mail.gmail.com.

Reply via email to