how to find the root of function?
Show older comments
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 Comments
Rik
on 20 Sep 2021
Why don't you want to provide an initial estimate?
Ani Asoyan
on 20 Sep 2021
Accepted Answer
More Answers (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.
Categories
Find more on Optimization in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!