how to find the root of function?
조회 수: 3 (최근 30일)
이전 댓글 표시
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
채택된 답변
Alan Stevens
2021년 9월 20일
Like this?
n_h0 = 0.1; %initial guess
n_h = fzero(@n_h_fun, n_h0);
disp(n_h)
function a=n_h_fun(n_h)
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;
a= n_h-(alpha*(w_r/ ((n_h-1)/(g*(1-gamma)))^sigma)^(1/phi));
end
추가 답변 (1개)
John D'Errico
2021년 9월 20일
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.
댓글 수: 0
참고 항목
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!