plot graph with value when finding fzero
古いコメントを表示
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 件のコメント
madhan ravi
2019 年 3 月 20 日
What value are you trying to find from fzero()? , it’s a bit confusing.
Paranee Sawad
2019 年 3 月 20 日
Walter Roberson
2019 年 3 月 20 日
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
2019 年 3 月 20 日
Walter Roberson
2019 年 3 月 20 日
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
2019 年 3 月 20 日
Walter Roberson
2019 年 3 月 20 日
Use 1E150 as the upper bound.
Paranee Sawad
2019 年 3 月 21 日
Walter Roberson
2019 年 3 月 21 日
[h0, fval] = fzero(f, [sqrt(realmin), 1E150])
Paranee Sawad
2019 年 3 月 21 日
回答 (1 件)
Andrea Monfredini
2019 年 3 月 20 日
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)
カテゴリ
ヘルプ センター および File Exchange で Graph and Network Algorithms についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!