How to write the codes for this gamma function?
4 次查看(过去 30 天)
显示 更早的评论
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.
0 个评论
采纳的回答
John D'Errico
2020-10-23
编辑:John D'Errico
2020-10-23
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)
Solving for alpha is now easy. (Again, alpha is ALSO a function in MATLAB.
alph = 350.1/gamma(1/bet + 1)
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])
7 个评论
Walter Roberson
2020-10-24
vpasolve does not demand initial estimates. But it might happen to find a different solution, possibly even one that involves complex values.
Also, in general some equations are nonlinear enough that vpasolve does a poor job of finding any solution at all. Sometimes it is necessary to provide a guess that is pretty close. A couple of weeks ago, one user had a system that vpasolve failed on unless the initial guess was within 0.1 on one of the values. Just "wanting" not to use initial values is not always enough to get a solution in practice.
更多回答(1 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Symbolic Math Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!