필터 지우기
필터 지우기

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

조회 수: 12 (최근 30일)
Tamara Macadam
Tamara Macadam 2024년 2월 15일
편집: Bruno Luong 2024년 2월 15일
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.

채택된 답변

Bruno Luong
Bruno Luong 2024년 2월 15일
편집: Bruno Luong 2024년 2월 15일
Your coding is wrong: Replace "/" with "./"

추가 답변 (1개)

Torsten
Torsten 2024년 2월 15일
편집: Torsten 2024년 2월 15일
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
Bruno Luong
Bruno Luong 2024년 2월 15일
편집: Bruno Luong 2024년 2월 15일
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.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Line Plots에 대해 자세히 알아보기

태그

제품


릴리스

R2023a

Community Treasure Hunt

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

Start Hunting!

Translated by