plot() and fplot() give different results for the same function
Show older comments
I'm trying to plot the function

between 0 and 100 (not including zero of course), but am running into a problem. When I use
x = linspace(0, 100, 10000);
y = 2.*sqrt(1+x)+((sin(sqrt(x).*pi).*sin(sqrt(1+x).*pi).*(2.*x+1))/(sqrt(x))) - 2.*sqrt(1+x).*cos(sqrt(x).*pi).*cos(sqrt(1+x).*pi);
plot(x,y);
I don't get the result I expected, which is the graph occasionally intersecting y = 0. However, by doing
fplot(@(x) 2.*sqrt(1+x)+((sin(sqrt(x).*pi).*sin(sqrt(1+x).*pi).*(2.*x+1))/(sqrt(x))) - 2.*sqrt(1+x).*cos(sqrt(x).*pi).*cos(sqrt(1+x).*pi), [0 100]);
I do get the result I expected.
I can't just use fplot, as I do need to use the variable y for other things, so I'm not sure what to do or what is even happening here. Any help would be greatly appreciated.
Accepted Answer
More Answers (1)
x = linspace(0, 100, 10000);
y = 2*sqrt(1+x)+sin(sqrt(pi)*x).*sin(sqrt(1+x)*pi).*(2*x+1)./sqrt(x) - 2*sqrt(1+x).*cos(sqrt(x)*pi).*cos(sqrt(1+x)*pi);
plot(x,y);
hold on
f = @(x)2*sqrt(1+x)+sin(sqrt(pi)*x).*sin(sqrt(1+x)*pi).*(2*x+1)./sqrt(x) - 2*sqrt(1+x).*cos(sqrt(x)*pi).*cos(sqrt(1+x)*pi);
fplot(f,[0 100])
1 Comment
Bruno Luong
on 15 Feb 2024
Edited: Bruno Luong
on 15 Feb 2024
I believe fplot ezplot replace "*" "/" "^" etc... with elementwise operators ".*" "./', ".^". It interprets as standard math notation.
This how charming or quirking MATLAB is, depending on your taste.
Categories
Find more on Line Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!