Hi again DragonGuy,
Okay, here is code for a UDF that uses Newton's method to solve your equation given the values for p, j, and k. Just stick this into a macro module and use it like this:
=PolyRoot(A1,B1,C1)
where A1 is the cell containing p, B1 is the cell containing j and C1 is the cell containing k.
You will notice that it has a variable F and a variable dFdX. You can make it solve any (other) equation in one variable by making F the f(x) that you want the root of, and dFdX is the derivative of F with respect to X. I chose to use the value of P as the initial guess for X, but that was totally arbitrary.
Function PolyRoot(P As Double, J As Integer, K As Integer) As Double
' Returns the root of the polynomial:
' (1-p)*x^(j+k) - x^k + p = 0
' Assumes J and K are integers, but can easily change this by
' declaring them as Double.
' Solution is based on Newton's method
Dim X As Double 'the root being sought
Dim F As Double
Dim dFdX As Double
Dim DeltaX As Double
Const Tol = 0.000000000001 'convergence tolerance
Dim Iter As Integer
X = P
If P = 0 Then GoTo Solution
'permit a maximum of 20 iterations
For Iter = 1 To 20
F = (1 - P) * X ^ (J + K) - X ^ K + P
dFdX = (1 - P) * (J + K) * X ^ (J + K - 1) - K * X ^ (K - 1)
DeltaX = F / dFdX
If Abs(DeltaX) < Tol Then GoTo Solution
X = X - DeltaX
Next Iter
MsgBox "No root found", vbExclamation, "PolyRoot result"
Solution:
PolyRoot = X
End Function