How to find the value of x when y = 0 and label on the curve?

32 visualizzazioni (ultimi 30 giorni)
Hello,
I'm trying to find and label the coordinate of (x,y) when y=0 but I don't succeed.
x = 0:0.01:66.03;
y=(3.7*(10*(x/66.03).^3-15*(x/66.03).^4+6*(x/66.03).^5)-1.86);
plot(x,y,'c-','LineWidth',3);
Thank you in advance for you help...

Risposta accettata

Star Strider
Star Strider il 11 Apr 2022
Using interp1
x = 0:0.01:66.03;
y=(3.7*(10*(x/66.03).^3-15*(x/66.03).^4+6*(x/66.03).^5)-1.86);
x_at_y0 = interp1(y,x,0)
x_at_y0 = 33.1102
figure
plot(x,y,'c-','LineWidth',3);
hold on
plot(x_at_y0, 0, 'r+', 'MarkerSize',15)
hold off
text(x_at_y0, 0, sprintf(' \\leftarrow (%.2f, %.2f)',x_at_y0,0), 'Horiz','left', 'Vert','middle')
.

Più risposte (1)

KSSV
KSSV il 11 Apr 2022
x = 0:0.01:66.03;
y=(3.7*(10*(x/66.03).^3-15*(x/66.03).^4+6*(x/66.03).^5)-1.86);
[val,idx] = min(abs(y)) ;
plot(x,y,'c-','LineWidth',3);
hold on
plot(x(idx),y(idx),'*r')
  2 Commenti
LIM MING HUI
LIM MING HUI il 11 Apr 2022
But this show the y=-0.00993621... My target is to get x when y=0...
KSSV
KSSV il 11 Apr 2022
fun = @(x) (3.7*(10*(x/66.03).^3-15*(x/66.03).^4+6*(x/66.03).^5)-1.86);
x0 = fzero(@(x) fun(x), 33)
x0 = 33.1102
fun(x0)
ans = 2.2204e-16

Accedi per commentare.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by