solve() seems to have a bug here.

Aaron Meurer

On Tue, Dec 10, 2019 at 10:50 AM Damon Turney <[email protected]> wrote:
>
> Update:  An angel on GitHub told me that I can overcome this problem by using 
> solveset() instead of solve().
>
> But why does solve() not work as expected?
>
>
> On Tuesday, December 10, 2019 at 12:41:46 PM UTC-5, Damon Turney wrote:
>>
>> Hi Forum,
>>
>> Help!  sympy.solve() always uses precision of 15 no matter what I try.
>>
>> Recreated problem results:
>>
>> In [164]: import sympy
>>
>> In [165]: w,x,y,z=sympy.symbols('w,x,y,z')
>>
>> In [166]: eqn=sympy.Eq(sympy.Float('1/55500',45)*w,sympy.Float('96500.0')*y)
>>
>> In [167]: eqn.evalf(45)
>>
>> Out[167]: Eq(0.000018018018018018018018018018018018018018018018*w, 96500.0*y)
>>
>> In [168]: sympy.solve(eqn,y)[0].evalf(45)
>>
>> Out[168]: 0.000000000186715212621948369903318027445619613213789734*w
>>
>> In [169]: sympy.solve(eqn.evalf(45),y)[0].evalf(45)
>>
>> Out[169]: 0.000000000186715212621948369903318027445619613213789734*w
>>
>>
>> The more accurate coefficient (to 45 digit accuracy) is:
>>
>> In [152]: sympy.Float('1/55500',45)/sympy.Float('96500.0',45).evalf(45)
>>
>> Out[152]: 0.000000000186715212621948373243710031274798114176352518
>>
>> In [174]: 
>> sympy.Float('1',45)/sympy.Float('55500',45)/sympy.Float('96500.0',45).evalf(45)
>>
>> Out[174]: 0.000000000186715212621948373243710031274798114176352518
>>
>>
>> So you see, the coefficient that results from sympy.solve:
>>
>> 0.000000000186715212621948369903318027445619613213789734
>>
>> is accurate to only 15 digits of precision.
>>
>>
>> Clearly sympy.solve is using only 15 digit precision, even though I'm 
>> specifying 45 digit precision.
>>
>> How can I force sympy.solve to use 45 digit precision when it solves for y?
>
> --
> 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/996dada4-fc41-49a7-ae08-cd8577bca974%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%3D6%2BOr%3DymbCuNim0MWA-U%3DTSHfNuLaJHTWPG49%3DSwmbJKeQ%40mail.gmail.com.

Reply via email to