怎么样手画对数坐标(坐标变换的本质,对数坐标的变换)
今天突然在想一个问题,当我们用对数坐标的时候,电脑干了啥?
首先举个例子,x 属于0.1到10, y = e^(x)。 当我们用普通坐标作图的时候,我们能得到左边的图,把y坐标设置成对数坐标,我们能得到右边的图。左边的图是一条曲线,而右边的图则是一条直线。
那么在这个过程中电脑做了什么呢?可以回想一下当我们手工作图的时候我们在干什么。手工作图的时候,第一步,我们需要在纸上画一个直角坐标系,然后定一个点,把这个点指定为范围的最大值(比如100); 第二步均分为某个等分(比如两等分),第三步再某种程度的等分。第四步把某个y值,比如15画到纸上y=15的位置。
这个过程的本质其实也是在做坐标变换,即我们把一组最大值< 100 的数,变换到我们的这个坐标轴,比如(y轴长为5 cm)的区域。那么实际的点 y = 15,对应的坐标轴上的点的距离就是 15/100*5 cm = 0.75 cm。那么我们其实就是把这个y = 15的点,画到我们纸上距离y = 0 的直线(也就是x轴)0.75 cm 的位置。
那么我们做对数坐标的时候应该怎么做呢?首先我们只考虑对y轴做对数坐标的情况,对x轴做对数坐标的情况是一样的。
第一步还是画一个直角坐标,定一个点作为范围的最大值,还是假设为100。那么第二步做什么?其实还是等分,但是这个中点,再也不是50 (100/2),而是别的值。为了知道这个值,我们需要知道需要作图的数的范围,比如0.1 - 100,或者 0.01 - 100。 如果是0.01-100,那么中点的代表1 ( 计算 10^(log10(100/0.01) * 0.5)*0.01, log10代表以10为底的对数), 此时零点不再是零点,而是y = 0.01。 而当再对上半部分做均分时,中点代表(10^(log10(100/1)*0.5)*1 = 10。通用的公式是 (10^(log10(ymax/ymin)*0.5)*ymim, 简化公式是ymax^t*ymin^(1-t)
再想一下我们这时候是在干什么?我们把一个坐标轴上到零点的距离为 t 个单位的点,变换为另一个常数,变换公式为 y = 10^(log(ymax/ymin)*t)*ymin。那么反过来,我们要把一个范围在0.01- 100的数,画到一个的坐标上,那么原来为 y的值,现在坐标上的位置就是 t = log10(y/ymin) /log10(ymax/ymin) 。
这就完成了从一次坐标变换。下图左边是对数坐标的作图,右边则是变换过坐标的数用正常坐标作图。


评论
发表评论