A Equation system involving InverseDigamma(Digamma(a+1)-b*k)-1

Click For Summary
The discussion focuses on solving a system of equations involving the Inverse Digamma function for variables a and b, given constants N, E, and K. The equations include summations of n(k) defined as InverseDigamma(Digamma(a+1)-b*k)-1. Participants suggest that numerical methods using programming languages like Python, Matlab, or Mathematica are necessary for finding solutions. Pseudo-code is provided to illustrate a brute-force approach for searching optimal values of a and b within specified ranges. The conversation invites further suggestions for analytic solutions to the problem.
rabbed
Messages
241
Reaction score
3
How would one go about solving this for a and b given N, E and K?

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
 
Mathematics news on Phys.org
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.

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:
Thanks, i'll try that.
If anyone has ideas for an analytic solution, just shoot :)
 
Thread 'Erroneously  finding discrepancy in transpose rule'
Obviously, there is something elementary I am missing here. To form the transpose of a matrix, one exchanges rows and columns, so the transpose of a scalar, considered as (or isomorphic to) a one-entry matrix, should stay the same, including if the scalar is a complex number. On the other hand, in the isomorphism between the complex plane and the real plane, a complex number a+bi corresponds to a matrix in the real plane; taking the transpose we get which then corresponds to a-bi...

Similar threads

  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 14 ·
Replies
14
Views
2K
  • · Replies 4 ·
Replies
4
Views
3K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 5 ·
Replies
5
Views
1K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 1 ·
Replies
1
Views
1K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 10 ·
Replies
10
Views
1K
  • · Replies 1 ·
Replies
1
Views
1K