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.

 採用された回答

John D'Errico
John D'Errico 2020 年 10 月 23 日
編集済み: John D'Errico 2020 年 10 月 23 日

0 投票

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

7 件のコメント

MD. Rokibujjaman sovon
MD. Rokibujjaman sovon 2020 年 10 月 23 日
hi,
not 154.056, it would be 154056.7
i made a mistake during the latex writing.
John D'Errico
John D'Errico 2020 年 10 月 23 日
With a valid value for the constant, now a solution exists. I show two solution methods, though I could also have used fsolve.
MD. Rokibujjaman sovon
MD. Rokibujjaman sovon 2020 年 10 月 24 日
why do you use [300, 2]? if i don't use that, isn't it possible? because i do some other calculation using 'solve', they results same without initial estimates.
Walter Roberson
Walter Roberson 2020 年 10 月 24 日
As John wrote, "Since vpasolve is a numerical solver, you will do best if you provide initial estimates of the unknowns as multiple solutions can exist"
MD Rokibujjaman Sabuj
MD Rokibujjaman Sabuj 2020 年 10 月 24 日
If I don’t want to use initial estimates, how can i solve this?
Walter Roberson
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.
MD. Rokibujjaman sovon
MD. Rokibujjaman sovon 2020 年 10 月 25 日
Thanks

サインインしてコメントする。

その他の回答 (1 件)

Alan Stevens
Alan Stevens 2020 年 10 月 23 日

0 投票

Compare your coded value of 154056.7 with the equation's value of 154.056.

カテゴリ

ヘルプ センター および File Exchange で Symbolic Math Toolbox についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by