你们都用什么工具画图?

比如说画 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)

一般的数学绘图软件都会处理定义域问题的,不然画一次崩一次 :slight_smile:

octave 画出来比较丑啊,而且曲线也不够光滑.GeoGebra 看起来效果不错的样子.
我目前用的 asymptote,和 LaTeX 搭配挺好的,但是它没有自动处理分母为 0 的情况啊.也许是我不太懂. :joy:

[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 函数图像的例子,看了以下才知道的. :joy:

话说 gnuplot 似乎也可以配合 ConTeXt 的样子.不过我就不打算了解它了.似乎没有更新.