嘿,所以我试图将年龄与变频率等变量一起绘制成旋转体。我得到了期间和期间的衍生以及相关的错误。由于频率与周期相关:
f = 1/T
其中频率为f且周期为T
然后,
df = - (1/(T^2)) * dT
其中dT和dF是周期和频率的导数
但是当涉及到绘制这个日志时,我无法在python中执行它,因为它不接受loglog绘图的负值。
我尝试过只使用绝对值但是在绘制误差条时我只得到一半的误差。有没有办法让python绘制阴性和正误差条?频率导数本身是负数。
答案 0 :(得分:1)
不幸的是,log(x)不能为负数,因为log(x) = y
< => 10^y = x
。
10 ^ y是否会变成-5?
不幸的是,10^y<=0
是不可能的,因为y
变为-infinity,x
接近1 / infinity; x
接近,但从未通过0。
是否可以绘制log(x),其中x为负?
然而,问题的一个简单解决方案是采用df
的绝对值。通过这样做,负数变为正数。唯一的缺点是,在以这种方式转换数据之后,您将需要撤消转换。如果数字为负数(由于abs(df)
而转为正数),则必须将其乘以-1。
您可能需要定义自己的绝对值函数,该函数记录积极所需的任何值:
changeList = []
def absRecordChanges(value):
if value < 0 :
value = value * -1
changeList.append(value)
return value
还有其他方法可以解决问题,但它们都围绕着转换数据以满足日志转换(x> 0)的条件,并将您更改的数据记录下来,以便您可以在以后更改它(在你绘制它之前)。
编辑:
在desmos中摆弄时,我能够绘制log(x)
,其中x
是任何整数。我使用分段函数来执行此操作:{x<0:-log(abs(x)),log (x)}
。
def piecewiseLog(x)
If x <= 0 :
return -log(abs(x))
else :
return log(x)
由于我不熟悉matlab语法,此链接有另一种解决方案:http://www.mathworks.com/matlabcentral/answers/31566-display-negative-values-on-logarithmic-graph