New Sum of Powers Log Function
|
04-02-2021, 01:29 AM
(This post was last modified: 04-02-2021 10:27 AM by Albert Chan.)
Post: #21
|
|||
|
|||
RE: New Sum of Powers Log Function
(04-01-2021 11:55 PM)Namir Wrote: I am looking to solve for x given all other parameters--n, s, scale. I guess the only sure way is to actually do the sum. Because of the power-law nature of functions, we should use log scale, like before. I have no idea what should be the right guess for it, so I just start with g=1. Note that guess is evaluated twice. This is a fluke of mpmath, to simplify code. The branched solver(s) re-calculated from the same guess again. Code: from mpmath import * >>> n, b = 100, 0.8 >>> s = nbx_to_s(n, b, 1.6) # = 2238.0808062735837 >>> x = nbs_to_x(n, b, s) 1.0 1.0 1.25 1.69268857579 1.59352468855 1.5999199506 1.60000007609 1.6 >>> s = nbx_to_s(n, b, 16) # = 1.0000003500527855e+32 >>> x = nbs_to_x(n, b, s) 1.0 1.0 1.25 23.7615084486 15.9522719123 15.999999997 16.0 16.0 |
|||
04-02-2021, 01:18 PM
Post: #22
|
|||
|
|||
RE: New Sum of Powers Log Function
(04-02-2021 01:29 AM)Albert Chan Wrote: Note that guess is evaluated twice. This is a fluke of mpmath, to simplify code. This is the patch to fix this issue. C:\python\Lib\site-packages\mpmath\calculus\optimization.py, findroot(): Right before entering solver, i.e. below comment "use solver" Code: # use solver What is shocking is the patch may save more than 1 call. Example, copied from help(findroot): >>> f = [lambda x1, x2: x1**2 + x2, lambda x1, x2: 5*x1**2 - 3*x1 + 2*x2 - 3] >>> findroot(f, (0, 0)) [-0.618033988749895] [-0.381966011250105] Patched findroot reduced f calls, from 24, down to 17 Code: 01 0.0 0.0 |
|||
04-04-2021, 03:41 PM
Post: #23
|
|||
|
|||
RE: New Sum of Powers Log Function
Thanks Albert. Will be looking at your recent feedback.
|
|||
« Next Oldest | Next Newest »
|
User(s) browsing this thread: 1 Guest(s)