MATLAB: How to write the codes for this gamma function

mathematicssolve

I am trying to find the value for alpha and beta. the answer should be alpha=395.2359 and beta=2.0698
But i am not getting this answer.
I used this code.
syms a b
[a,b]=solve(a.*gamma((1/b) + 1) - 350.1 == 0, a.^2.*gamma((2/b) + 1) - 154056.7 == 0)
Can someone tell me where is the problem in my codes and what should be the right codes?
Thanks.

Best Answer

Easy, peasy. Although since you are using gamma as a FUNCTION, it is a REALLY bad idea to use beta, another closely related special function as a variable.
For the changed problem, I now have:
First, eliminate a. Square the first equation, then divide one into the other. This is valid as long as we create no zero divides.
We get
gamma(2/beta + 1)/gamma(1/beta + 1)^2 = 154056.7/350.1^2
Solve for beta. But before we bother to try that, plot the function. Does it EVER cross zero? Certainly, does it cross zero near 2? (NO.)
bfun = @(bet) gamma(2./bet + 1)./gamma(1./bet + 1).^2 - 154056.7/350.1^2;
fplot(bfun,[1,3])
yline(0);
So now, we see a solution bet beta, roughly near 2.
format long g
bet = fzero(bfun,2)
bet =
2.06980749988105
Solving for alpha is now easy. (Again, alpha is ALSO a function in MATLAB.
alph = 350.1/gamma(1/bet + 1)
alph =
395.23590882898
Could you have used the symbolic toolbox? Trivially easy too. But since an analytical solution will not exist, you will use vpasolve. Since vpasolve is a numerical solver, you will do best if you provide initial estimates of the unknowns as multiple solutions can exist.
syms a b real positive
[a,b] = vpasolve(a.*gamma((1/b) + 1) - 350.1 == 0, a.^2.*gamma((2/b) + 1) - 154056.7 == 0,[a,b],[300,2])
a = 
395.23590882898036747077460275278
b = 
2.0698074998810479469634339822283