plot() and fplot() give different results for the same function

19 vues (au cours des 30 derniers jours)
Tamara Macadam
Tamara Macadam le 15 Fév 2024
Modifié(e) : Bruno Luong le 15 Fév 2024
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.

Réponse acceptée

Bruno Luong
Bruno Luong le 15 Fév 2024
Modifié(e) : Bruno Luong le 15 Fév 2024
Your coding is wrong: Replace "/" with "./"

Plus de réponses (1)

Torsten
Torsten le 15 Fév 2024
Modifié(e) : Torsten le 15 Fév 2024
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 commentaire
Bruno Luong
Bruno Luong le 15 Fév 2024
Modifié(e) : Bruno Luong le 15 Fév 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.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Line Plots dans Help Center et File Exchange

Tags

Produits


Version

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by