使用ezplot

时间:2015-07-02 06:02:39

标签: matlab symbolic-math

我创建了以下符号积分:

syms x; 
syms t; 
int(1./((1-t.*x).^3),t,0,1)

ans =
    piecewise([x = 1, Inf], [not 1/x in (0, 1) and x 1, -(x/2 - 1)/(x - 1)^2])

导致分段函数定义。现在我想使用ezplot函数绘制此积分,但这会导致错误:

Error using ezplot (line 162)
piecewise([1/x in Dom::Interval([0], [1]), -int(1/(t*x - 1)^3, t, 0, 1)], 
   [~1/x in Dom::Interval([0], [1]), -(x - 2)/(2*(x - 1)^2)]) 
   cannot be plotted in the xy-plane.

Error in sym/ezplot (line 61)
   h = ezplot(fhandle(f));

如何绘制这个分段符号积分?

1 个答案:

答案 0 :(得分:1)

虽然我没有找到Mathworks的任何证据,但ezplot似乎 与分段符号函数一起工作(来源:关于这个主题的确有一些未解决的问题) Matlab帮助论坛)。

在这个答案中,我提出了一个解决方法,它适用于明确的,可逆的函数,即它会因x^2 + y^2 = 1y^2 = y^4等类似的东西而失败。在这种特殊情况下(我假设最常使用),可以手动生成x - 向量并使用subs函数计算相应的y - 值。

ezplot的默认范围是[-2pi, 2pi]。点的数量很大程度上取决于函数,但是大约1000点,应该创建一个相当平滑的图。 注意:这应该产生默认的ezplot行为。如果您对该函数有进一步的了解,即值范围等,您一定要使用它来创建x向量。

xp = -2*pi : 0.01: 2*pi;
yp = subs(f, x, xp);
plot(xp,yp);