在Octave中绘制自然对数函数

时间:2018-04-18 15:44:00

标签: math plot octave complex-numbers

我必须在Octave中绘制函数f(x) = ln(20 - e^x),并使用命令:

x = -5:0.1:5; 
y = log(20 - exp(x));
plot(x,y)

但图表不正确,因为当我检查Wolfram Alpha时它不一样。任何帮助表示赞赏!

enter image description here

1 个答案:

答案 0 :(得分:2)

您在Octave ln(20-e^x)中绘制:

enter image description here

而你输入Wolfram Alpha的是e^x + e^y = 20,看起来像这样:

enter image description here

完全相同。这里唯一的区别是,对于e^x+e^y=20,Wolfram Alpha仅绘制实际解(蓝线),而对于ln(20-e^x),Wolfram Alpha和Octave都绘制了完整的解集,因此包括虚拟解(尽管Octave仅绘制复杂解的实部。)

如果你仔细观察,你会看到x<ln(20)对于Wolfram Alpha中显示的虚部是0,而对于x>ln(20),有一个虚部(偶然为y=ln(20)) 。 Octave只绘制实部,因为它在绘制复杂信号时忽略了虚部。只需在命令行上检查whos y,它就会告诉您它是一个复杂的变量。

我在MATLAB上,但你的控制台输出应该是类似的:

>> x = -5:0.1:5; 
y = log(20 - exp(x));
plot(x,y)
Warning: Imaginary parts of complex X and/or Y arguments ignored 
>> whos y
  Name      Size             Bytes  Class     Attributes

  y         1x101             1616  double    complex 

告诉你A)当你绘制函数时它是一个复杂信号而B)y确实很复杂,因为它应该是x>ln(20)的值。