我正在尝试在Matlab中绘制一个函数,但我得到的只是一条直线。
我正在使用的代码是:
De = 6.22238*1e-5;
alpha = 3.0662*1e5;
re = 2.666;
r = -1:1/100:5;
V = De * (1-exp(alpha*(re-r))).^2
plot(r,V);
但我得到的只是一条直线。情节应该看起来像这样:http://chemwiki.ucdavis.edu/@api/deki/files/55194/=mHj1k.png?revision=1
这些数字是否太小,所以matlab只是将所有内容都整理好了?
请帮忙!
答案 0 :(得分:2)
你的一些子函数尤其是指数函数溢出,这种溢出导致Matlab将此值视为无穷大。在您的代码中,exp(alpha *(re-r))的输出值将导致:
为了防止这个问题,我们使用一个技巧,例如,如果我们想要计算(非常大的数字)* exp(非常小的数字),首先我们将公式更改为等于公式:exp(Log(非常大的数字) )*(非常小的数字)) 正如您所看到的,Log(非常大的数字)将导致较小的数字,并且我们希望Log(非常大的数字)*(非常小的数字)结果为中等值,这将不会使问题遇到指数函数。