ploting exponential integral function
3 次查看(过去 30 天)
显示 更早的评论
Hi, I'm trying to plot integral of x*exp(-1/x). These are my code,
syms x y1 y2;
y1=x*exp(-1/x);
y2=int(y1)
ezplot(y2)
I've got this error message,
??? Error using ==> inlineeval at 15 Error in inline expression ==> - Ei(-1./x)./2 - (x.^2./(2.*exp(1./x)) - x.^3./(2.*exp(1./x)))./x Undefined function or method 'Ei' for input arguments of type 'double'.
How could I plot it ? Many thanks BJ
0 个评论
回答(1 个)
Laura Proctor
2011-3-17
You can plot it by defining your range of x values and then plugging this into y, something like this:
x = -0.5:0.01:0.5;
y = x.*exp(-1./x);
plot(x,y,'.')
axis([ -0.5 0.5 -10 0.5])
A few comments on this code:
The second line uses element-wise multiplication and division rather than matrix multiplication and division denoted by the dot in front of the operator. http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_oop/br02znk-1.html#br02znk-6
The third line is plotting x versus y with the dot marker (third input). You can learn more about customizing your plots here: http://www.mathworks.com/access/helpdesk/help/techdoc/ref/linespec.html
4 个评论
Laura Proctor
2011-3-17
Ei is an MFUN function and these do not play well with EZPLOT because EZPLOT looks to be directly plugging in numeric values to create the plot. For MFUN functions, numeric values need to be plugged in with MFUN and cannot be plugged in directly.
Walter Roberson
2011-3-17
This is part of a more general problem that there is a bug report or technical solution for (that I'd have to locate.) If you use matlabFunction() or inline() to convert symbolic expressions to Matlab, then some calls (such as ln) do not get translated to their Matlab equivalents, and others (such as Ei) have no Matlab equivalents to be translated to.
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!