Solving (x*y)^y == gamma((x+2)*y)/gamma((x+1)*y) for integer values of x.
1 view (last 30 days)
Show older comments
Hey all. I'm trying to find the best way to find solutions to an equation (its for island scaling analysis of our quantum dots):
eqn = (x*y)^y == gamma((x+2)*y)/gamma((x+1)*y)
for positive integer values of x.
I was able plot it, and can see solutions are available, and I know at x=1 that y=0.2715. I've tried playing around with solve, vpasolve, functions, and fzero but keep getting errors or empty sym. I know this should be really simple, could someone point me in the right direction or show me how they would code this?
Thank you.
1 Comment
Walter Roberson
on 13 Apr 2018
My tests suggest that in theory there might exist solutions for every positive integer x, but that the solutions quickly approach 1/3, and that numeric precision problems can crop up easily if you try for numeric solutions. Still, it suggests trying fsolve() with initial guess about 0.3
Answers (1)
David Goodmanson
on 13 Apr 2018
Edited: David Goodmanson
on 13 Apr 2018
Hello Christopher,
N = 100;
soln = zeros(1,N)
for x = 1:N
fun = @(y) (x*y)^y - gamma((x+2)*y)/gamma((x+1)*y);
soln(x) = fzero(fun,[.1 1])
end
soln
The solution seems to vary over a remarkably small range.
2 Comments
David Goodmanson
on 13 Apr 2018
Edited: David Goodmanson
on 13 Apr 2018
Hi Walter,
As additional evidence for your upper bound, the asymptotic formula for the gamma function (Abramowitz and Stegun 6.1.47) gives for the difference between the left and right sides of the equation
[ gamma((x+2)*y)/gamma((x+1)*y) - (x*y)^y ] / (x*y)^y
= (3*y-1)/(2*x) + ... higher order terms in (1/x) as x -> oo
So for large values of x, setting the leading difference term to be zero means that y = 1/3.
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!