plot graph with value when finding fzero
Ältere Kommentare anzeigen
Dear all,
I have question how to let it plot the graph while finding fzero
frad = 220;
rpm = 20000;
m =3;
alpha = 0.1;
R0 = 0.015;
R1 = 0.020;
rpmtoms = rpm*pi*(R0+R1)/(60);
B=pi*(R0+R1)/(m);
L=R1-R0;
ita=0.01; %from prof.
h0 = 0.00002;
k = B*tan(alpha*pi/180)/h0;
% fu = -(6*ita*rpmtoms*L*B^2)*(-log(k+1)+(2*k)/(k+2))/((k^2)*(h0^2));
f = @(h0) (-(6*ita*rpmtoms*L*B^2)*(-log(k+1)+(2*k)/(k+2))/((k^2)*(h0^2))) - frad;
h0 = fzero(f,h0)
I would like to see the graph because it seems like it depends on the initial value i set so i am not sure how much should i set? and my answer would be close to zero like in 1e-6 but cannot set it to zero. i read in some matlab questions i need to set the range for my h0 but in this case since the result close to zero but cannot be zero.
Thank you
10 Kommentare
madhan ravi
am 20 Mär. 2019
What value are you trying to find from fzero()? , it’s a bit confusing.
Paranee Sawad
am 20 Mär. 2019
Walter Roberson
am 20 Mär. 2019
There are two solutions. Your equation is a quadratic of the form
constant/h0^2 - another_constant == 0
which can be solved by multiplying through by h0^2 to get
constant - another_constant*h0^2 == 0
which has solution
h0 = +/- sqrt(constant / another_constant)
Paranee Sawad
am 20 Mär. 2019
Walter Roberson
am 20 Mär. 2019
It just means that you should provide bounds,
fzero(f, [sqrt(realmin), realmax])
to ensure that it does not accidentally try negative values.
Paranee Sawad
am 20 Mär. 2019
Walter Roberson
am 20 Mär. 2019
Use 1E150 as the upper bound.
Paranee Sawad
am 21 Mär. 2019
Walter Roberson
am 21 Mär. 2019
[h0, fval] = fzero(f, [sqrt(realmin), 1E150])
Paranee Sawad
am 21 Mär. 2019
Antworten (1)
Andrea Monfredini
am 20 Mär. 2019
You can substitute the equation expression of the operators * / and ^ with the respective dot operators
f = @(h0) (-(6.*ita.*rpmtoms.*L.*B.^2).*(-log(k+1)+(2.*k)./(k+2))./((k.^2).*(h0.^2))) - frad;
and then use semilogx to see a clearer representation of your function. Adjust the arguments of t to your needs.
t=linspace(0,h0*100,1000);
figure()
semilogx(t,f(t))
hold on
yline(0)
Kategorien
Mehr zu Graph and Network Algorithms finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!