Problem in solving equation with Gamma distribution parameters as unknowns
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I am trying to solve the following sets of equations using the solve command.
gaminv(0.95,((2*y)-1),(1/(2*z)))-gaminv(0.05,((2*y)-1),(1/(2*z)))=6.73;
gaminv(0.45,((2*y)-1),(1/(2*z)))=7.19;
sqrt((Ia*(2*z)^((2*y)-1))/gamma((2*y)-1))=1.219;
It is giving an error of "Unable to prove '2*y - 1 < Inf & 0 < 2*y - 1 & 0 < 1/(2*z)' literally. Use 'isAlways' to test the statement mathematically."
I have also used the assume condition with the following lines
assume(0 < (2*y - 1) & (2*y - 1) < Inf);
assumeAlso(0 < (1/(2*z)));
Still same error. Is there any other way to solve them?
0 Commenti
Risposta accettata
Torsten
il 31 Ago 2023
Modificato: Torsten
il 31 Ago 2023
I'd try it numerically. Better initial values for y,z and la might give convergence.
fun = @(y,z,la)[gaminv(0.95,y,z)-gaminv(0.05,y,z)-6.73;gaminv(0.45,y,z)-7.19;la/z^y-1.219^2*gamma(y)];
F = @(x)fun(x(1),x(2),x(3));
y0 = 1; z0 = 1; la0 = 1 ;
x0 = [y0,z0,la0];
sol = fsolve(F,x0,optimset('MaxIter',2500000,'MaxFunEvals',2500000));
norm(F(sol))
y = 2*sol(1)-1
z = 1/(2*sol(2))
la = sol(3)
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Ordinary Differential Equations in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!