how to find the root of function?
Afficher commentaires plus anciens
Hi , I want to find the root of nonlinear function, without giving initial point.
here is my .m file for parameters
alpha=0.74
g =0.5
gamma=1.2
sigma=1
phi=0.8
epsilon_1=1.5
w_r= (epsilon_1-1)/epsilon_1
then I made a function like this
function a=n_h_fun(n_h)
a= n_h-(alpha*(w_r/ ((n_h-1)/(g*(1-gamma)))^sigma)^(1/phi))
end
and saved that file as n_h_fun.m
I want to find the value of n_h where a gets the value 0. I used fzero command but it shows errors.
2 commentaires
Rik
le 20 Sep 2021
Why don't you want to provide an initial estimate?
Ani Asoyan
le 20 Sep 2021
Réponse acceptée
Plus de réponses (1)
Or do this:
alpha=0.74;
g =0.5;
gamma=1.2;
sigma=1;
phi=0.8;
epsilon_1=1.5;
w_r= (epsilon_1-1)/epsilon_1;
syms n_h
a = n_h-(alpha*(w_r/ ((n_h-1)/(g*(1-gamma)))^sigma)^(1/phi));
pretty(a)
So a is a simple nonlinear function of n_h.
% first, plot it. ALWAYS PLOT EVERYTHING
fplot(a,[-20,20])
grid on
vpasolve(a,n_h)
So vpasolve found the root near zero for n_h. There may be other solutions, but when n_h is negative, it looks like that curve goes to -inf almost linearly. We can probably show that to be true. And for positive values of n_h, above some point, it looks like a becomes complex. So the only real solution is probably the one found by vpasolve.
Catégories
En savoir plus sur Optimization dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
