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

32 views (last 30 days)
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...

Accepted Answer

Star Strider
Star Strider on 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')
.

More Answers (1)

KSSV
KSSV on 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 Comments
LIM MING HUI
LIM MING HUI on 11 Apr 2022
But this show the y=-0.00993621... My target is to get x when y=0...
KSSV
KSSV on 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

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!