Plotting atan()
12 ビュー (過去 30 日間)
古いコメントを表示
I need to make a plot of this function:
f = atan((x*.8441/4)/(.8441^2-x^2))
What happens is that there is an asymptote at atan(infinity) and the values after that are negative. Is there anyway I could make the graph having atan() go from 0 to pi and instead of an asymptote have it have a value of pi/2?
Thanks.
0 件のコメント
回答 (2 件)
Kevin Holst
2012 年 2 月 3 日
Not sure I'm understanding the question, are you wanting to replace any values > pi/2 with pi/2? (and any values < -pi/2 with -pi/2?)
if you're just looking to plot the function from 0 to pi, you can use the same method that I suggested on your previous question:
f = @(x) atan((x*.8441/4)/(.8441^2-x^2))
fplot(f,[0,pi])
EDIT
I think I see what you're wanting, although I couldn't open your link at work. The unwrap function is very interesting; hadn't heard of it until now, but I couldn't get it to work for this application for some reason.
There are many ways to do this, so I'll go ahead and show you one.
x = 0:0.01:2;
y = atan((x*.8441/4)./(.8441^2-x.^2));
y(y<0) = y(y<0) + pi;
plot(x,y);
note that I had to add some extra '.'s in your equation to make it work.
3 件のコメント
Walter Roberson
2012 年 2 月 3 日
See the unwrap() function to avoid having it go negative.
2 件のコメント
Walter Roberson
2012 年 2 月 3 日
This works (visually at least):
x = linspace(-3,3,100);
f = atan((x.*0.8441/4)./(0.8441^2-x.^2));
plot(x, unwrap(f*2)/2)
Note the use of ./ and .^ in order to process a vector of x.
Kevin Holst
2012 年 2 月 3 日
Walter, when I plot what you posted, I get f from 0 to 2pi. Unwrap appears to be accounting for a discontinuity at -0.8 and another at 0.8, and they're cumulative. if you make your linspace from 0 to 3, it is fixed.
参考
カテゴリ
Help Center および File Exchange で Graphics Performance についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!