比如说画 tan x 这种函数,怎么处理 tan pi/2 这种点呢?还有一些点是分母为 0 的点之类的.
用 gnuplot 就可以,下面是我用 Octave 調用 gnuplot 畫的 tan(x):
octave:1> angles=linspace(0,2*pi,100);
octave:2> y=tan(angles);
octave:3> plot(angles,y)
octave:4> axis([0 7 -5 5])
我用的 GeoGebra,下面是生成的 y=tan(x) 图象:
!](http://ww2.sinaimg.cn/large/a04a339dgw1f2wh6e2fd8j20bz08umxf.jpg)
这是 y=1/x 的图象:
!](http://ww2.sinaimg.cn/large/a04a339dgw1f2whacc7wcj20bz08uaa5.jpg)
一般的数学绘图软件都会处理定义域问题的,不然画一次崩一次
octave 画出来比较丑啊,而且曲线也不够光滑.GeoGebra 看起来效果不错的样子.
我目前用的 asymptote,和 LaTeX 搭配挺好的,但是它没有自动处理分母为 0 的情况啊.也许是我不太懂.
[quote=“hottea”]octave 画出来比较丑啊,而且曲线也不够光滑.GeoGebra 看起来效果不错的样子.
跟你選擇的間隔有關,上面我只選了 100 個點,1,000 個點就光滑了~
octave:1> angles=linspace(0,2*pi,1000);
[/quote]
我觉得跟帖子附件只显示缩略图有关系… 并没有发现哪里丑啊
Python 的 Jupyter 交互式画图不错。如果需要写脚本就 import matplotlib 等就行了
def tannan(x, bound=6):
t=tan(x)
if abs(t)>bound:
return nan
else:
return t
tann=vectorize(tannan)
x=arange(0,9*pi/2,pi/100)
plot(x,tann(x))
效果图:
利用 Nan 的这个想法请参考: stackoverflow.com/questions/10377593/how-to-drop-connecting-lines-where-the-function-is-discontinuous
至于除以 0 的问题我觉得也可以类似处理。1/x 在 0 附近发散,定义一个边界然后超出边界就返回 nan 就行了
我还是比较喜欢 asymptote,语法和 C++ 很像,用着比较习惯,而且和 LaTeX 搭配很不错.而且可以得到高质量的矢量图.可惜手册写得不是很好,看起来比较麻烦.
我感觉用asymptote也可以自己定义类似的手段达到目的吧。比如说自己重定义一个画图的函数,然后#define nan 99999之类的
py生成的图也可以是矢量的pdf等格式。asy的话和tex搭配当然天衣无缝。
Sent from my Redmi Note 2 using Tapatalk
查到了,graph() 有一个可选参数 bool3 cond(real),如果 cond 返回 false 就不画这些点,如果返回 true 或者 default 就会新建一个 guide 类型,将要画的点加上去.这么看来,实际上 cond 的返回值类型只需要 bool 就可以了吧,并不需要 bool3 的样子.不知道它为什么这么设计.
没仔细看手册.后来谷歌到官方就有画 1/x 函数图像的例子,看了以下才知道的.
话说 gnuplot 似乎也可以配合 ConTeXt 的样子.不过我就不打算了解它了.似乎没有更新.