本人matlab新手,求教指数积分函数的性质,并通过matlab如何画出指数积分函数Ei曲线图,万分感谢!
补充说明几点,供探讨:
(1)之所以回答这个问题,是因为楼上最初只给了结果而没给代码(在我昨天下午提交回答之后发现楼主有追问,楼上也已贴出代码),对于新手而言不能算是解决问题的好方式,而且我简单做了一下觉得结果也有点可疑(下面再说)。
(2)和我的代码比较,楼上所给代码的效率比较低,在我的电脑上运行大约需要7分钟时间,而我的代码只需要1分钟左右。上面所说的运行时间只有相对的参考意义,和电脑硬件、软件环境都有关系。
(3)比运行时间更重要的一点是,楼上的做法采用多个plot叠加,这样会占用大量资源,在句柄太多时应慎用(如本例,相当于画了5000条线)。
(4)说一下为什么当初觉得楼上的结果可疑:从后来贴出的代码可见,是由于用axis函数把纵坐标范围设为-0.6~1之间(相当于局部放大),导致了曲线的形状差别。有点不明白楼上为什么要这样设置——仅仅为了曲线好看一点?我觉得,正确应该比好看更加重要吧?
=========================
以下为7月13日下午回答的内容。
=========================
1、指数积分函数的性质有很多,不知道楼主所指的是什么?
百度知道不支持输入公式,贴图感觉很没必要,请参考维基百科的条目:
中文:http://zh.wikipedia.org/wiki/%E6%8C%87%E6%95%B0%E7%A7%AF%E5%88%86
英文:http://en.wikipedia.org/wiki/Exponential_integral
2、指数积分函数不是初等函数,在MATLAB软件中,它属于一个特殊数学函数(special mathematical function),可以用mfun来进行计算。
3、就楼主的问题而言,可使用下面的代码计算:
r0=1.95;
a=0.875;
t=1:5000;
K=1./mfun('Ei',-r0^2./(4*a*t));
plot(t,K,'linewidth',2,'clipping','off');
xlabel('t');
ylabel('K');
绘图结果:
从你这里学到很多 给了很中肯的建议 也帮我解决了问题 真心很感谢 只不过我不会追加奖励 不好意思
追加奖励没必要,不过面对多个解答总应该有个比较吧,看回答的质量、用心程度以及对自己帮助的大小等等。虽然虚拟的积分并不重要,但付出劳动总还是希望受到尊重的吧。这样的回答居然没被采纳,我真的感到无语。