我有以下符号功能:
f(x)=(2*5^(1/2)*atanh((5^(1/2)*x)/150))/3 - 100/x
如果我用它绘图:
figure(2);
vMax=150/5^(1/2);
ezplot('(2*5^(1/2)*atanh(x/vMax)/3 - 100/x',[0.1, vMax]);
axis([0.1 150/5^(1/2) 0 3]);
view([90 -90]);
我得到了下图:
正如您在view(90 -90])
看到的那样,我反转(Ox)和(Oy)轴:这是因为我想绘制上面解析表达式的反函数。
现在,我想找到相同的情节但是有数值。为此,我做了:
syms f x;
f=(2*5^(1/2)*atanh((5^(1/2)*x)/150))/3 - 100/x;
ht=matlabFunction(f);
vMax=150/5^(1/2);
% Speed array
v_start=0.1;
step=0.0001;
v_final=vMax;
% Construct array vNew
vNew=v_start:step:v_final;
%Plot results : Speed vs Time
figure(1);
plot(vNew,ht(vNew));
axis([0 vMax 0 3]);
view([90 -90]);
使用此代码段,我得到下图:
在这里,我不明白两件事:
警告:忽略复杂X和/或Y参数的虚部
行:plot(vNew,ht(vNew));
我知道atanh
和-infty < x < -1
的{{1}}函数会显示复数,但就我而言,我已经采取了:
1 < x < +infty
0.1/vMax <= x/vMax <= 1
,间隔为vMax = 150/5^(1/2)
,在此范围内,[0.1/vMax,1]
具有实际值。
从逻辑上讲,执行命令时我不应该找到复杂的值:
atanh(x/vMax)
如果有人可以帮我找到关于这两件事的解释。
更新1:错误已修复,因为我超出了范围-1&lt; x&lt; 1通过plot(vNew,ht(vNew));
进行计算以及vMax=150/(5^(1/2))+20
,即两者之间存在冲突。
由于