我创建了以下符号积分:
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));
如何绘制这个分段符号积分?
答案 0 :(得分:1)
虽然我没有找到Mathworks的任何证据,但ezplot
似乎 与分段符号函数一起工作(来源:关于这个主题的确有一些未解决的问题) Matlab帮助论坛)。
在这个答案中,我提出了一个解决方法,它适用于明确的,可逆的函数,即它会因x^2 + y^2 = 1
或y^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);