我必须在Octave中绘制函数f(x) = ln(20 - e^x)
,并使用命令:
x = -5:0.1:5;
y = log(20 - exp(x));
plot(x,y)
但图表不正确,因为当我检查Wolfram Alpha时它不一样。任何帮助表示赞赏!
答案 0 :(得分:2)
您在Octave ln(20-e^x)
中绘制:
而你输入Wolfram Alpha的是e^x + e^y = 20
,看起来像这样:
完全相同。这里唯一的区别是,对于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)
的值。