- #1

rabbed

- 243

- 3

n(0) + n(1) + … + n(K) = N

n(0)*0 + n(1)*1 + … + n(K)*K = E

Where n(k) = InverseDigamma(Digamma(a+1)-b*k)-1

You are using an out of date browser. It may not display this or other websites correctly.

You should upgrade or use an alternative browser.

You should upgrade or use an alternative browser.

- A
- Thread starter rabbed
- Start date

- #1

rabbed

- 243

- 3

n(0) + n(1) + … + n(K) = N

n(0)*0 + n(1)*1 + … + n(K)*K = E

Where n(k) = InverseDigamma(Digamma(a+1)-b*k)-1

- #2

jedishrfu

Mentor

- 14,166

- 8,148

I think it would have to be done numerically using Python, Matlab, or Mathematica.

Mathematica has a digamma function:

https://mathworld.wolfram.com/DigammaFunction.html

and Matlab has a digamma function:

https://www.mathworks.com/help/matlab/ref/psi.html

and Python has a version of the digamma function:

https://docs.scipy.org/doc/scipy/reference/generated/scipy.special.digamma.html

Here's some pseudo code to search for the best A, B values across a range of A, B values. It's not the fastest or the best way, and the pseudo-code needs to be written in either Python, Matlab, or Mathematica to find the answer you're looking for.

Also, the means of determining closeness could be better implemented with perhaps some other distance measurement more suited to this search.

Mathematica has a digamma function:

https://mathworld.wolfram.com/DigammaFunction.html

and Matlab has a digamma function:

https://www.mathworks.com/help/matlab/ref/psi.html

and Python has a version of the digamma function:

https://docs.scipy.org/doc/scipy/reference/generated/scipy.special.digamma.html

Here's some pseudo code to search for the best A, B values across a range of A, B values. It's not the fastest or the best way, and the pseudo-code needs to be written in either Python, Matlab, or Mathematica to find the answer you're looking for.

Also, the means of determining closeness could be better implemented with perhaps some other distance measurement more suited to this search.

Code:

```
given N , E , K
A = 0
B = 0
NDIFF= max_float_value
EDIFF = max_float_value
for a in range(a_min,a_max,a_step)
for b in range(b_min,b_max,b_step)
for k = 0 to K:
X = (a+1)-b*k
NK = inverse_digamma(digamma(X))
N2 = N2 + NK
E2 = E2 +k*NK
if ((N2-N)^2+(E2-E)^2) < (NDIFF^2+EDIFF^2):
NDIFF = (N2 - N)
EDIFF = (E2 - E)
A = a
B = b
print "NDIFF = " NDIFF
print "EDIFF = " EDIFF
print "A = ". A, " B = ", B
```

Last edited:

- #3

rabbed

- 243

- 3

Thanks, i'll try that.

If anyone has ideas for an analytic solution, just shoot :)

If anyone has ideas for an analytic solution, just shoot :)

Share:

- Last Post

- Replies
- 20

- Views
- 560

MHB
Show that K≥1

- Last Post

- Replies
- 1

- Views
- 647

- Replies
- 8

- Views
- 753

- Replies
- 34

- Views
- 1K

- Replies
- 12

- Views
- 456

- Last Post

- Replies
- 6

- Views
- 277

- Last Post

- Replies
- 5

- Views
- 849

- Last Post

- Replies
- 4

- Views
- 420

- Last Post

- Replies
- 17

- Views
- 937

- Last Post

- Replies
- 3

- Views
- 1K