Finding roots of a two variable function
20 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Basically I have x which is a column vector with 350 rows of random data. I need to model this as a Birnbaum Sauders distribution and estimate its parameters. I can do this directly using the mle function, but I wonder if its possible to use fsolve. Below is my function file.
function f = BirnbaumSaunders(alpha,lamb)
F = (alpha.^2)-((1/350)*sum((lamb.*x)+(1./(lamb.*x))-2));
G = (-175.*lamb)+((1./(2.*(alpha.^2)))*sum(((lamb.*lamb.*x))-(1./x))+sum(lamb./((lamb.*x)+1)));
end
Here, I have to find the value of alpha and lamb for which both my functions F and G are zero. I have tried using the fsolve with initial alpha and lamb values as 0.65 and 2.13 (I got these values after using the mle function). But I'm getting an error using fsolve.
fun = @BirnbaumSaunders;
x = fsolve(fun,[0.65,2.13])
This is giving me an error. Is there any other way to find the values of alpha and lamb when F and G are set to 0?
0 Kommentare
Antworten (2)
Torsten
am 12 Dez. 2022
x = rand(10,1);
fun = @(z)BirnbaumSaunders(z(1),z(2),x);
z = fsolve(fun,[0.65,2.13])
norm(fun(z))
function f = BirnbaumSaunders(alpha,lamb,x)
F = (alpha.^2)-((1/350)*sum((lamb.*x)+(1./(lamb.*x))-2));
G = (-175.*lamb)+((1./(2.*(alpha.^2)))*sum(((lamb.*lamb.*x))-(1./x))+sum(lamb./((lamb.*x)+1)));
f = [F;G];
end
5 Kommentare
Torsten
am 12 Dez. 2022
You want to estimate two parameters of a distribution given seven realizations ? That's ... courageous.
Walter Roberson
am 14 Dez. 2022
Verschoben: Walter Roberson
am 14 Dez. 2022
format long g
x = [
0.260594
0.50998
0.609437
0.365165
0.949793
0.590385
0.902765];
fun = @(z)BirnbaumSaunders(z(1),z(2),sym(x));
syms z [1 2]
F = simplify(fun(z))
sol = vpasolve(F,[0.65;2.13])
vpa(subs(z, sol))
subs(F, sol)
fun = @(z)BirnbaumSaunders(z(1),z(2),x);
opt = optimoptions('fsolve', 'MaxFunctionEvaluations', 1e4);
Z = fsolve(fun,[0.06,2], opt)
function f = BirnbaumSaunders(alpha,lamb,x)
F = (alpha.^2)-((1/350)*sum((lamb.*x)+(1./(lamb.*x))-2));
G = (-175.*lamb)+((1./(2.*(alpha.^2)))*sum(((lamb.*lamb.*x))-(1./x))+sum(lamb./((lamb.*x)+1)));
f = [F;G];
end
0 Kommentare
Siehe auch
Kategorien
Mehr zu Deep Learning Toolbox finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


