3

我正在尝试使用fplot.

fplot('3*x*sin(x) - 2*x', [-2*pi 2*pi], 'r')

这是有效的,但下面的命令显示错误。

fplot('diff(3*x*sin(x) - 2*x)', [-2*pi 2*pi], 'g')

显示错误

??? Subscripted assignment dimension mismatch.

Error in ==> fplot at 105
x = xmin+minstep; y(2,:) = feval(fun,x,args{4:end});

请给我一些建议?

4

2 回答 2

4

问题在于diff函数字符串中。您的函数需要为 N 个输入生成 N 个输出,但要diff提供 N-1 个输出。从fplot(重点添加)的文档中:

函数必须采用 y = f(x) 的形式,其中 x 是一个向量,其范围指定了限制,y 是一个与 x 大小相同的向量,包含函数在 x 中的点的值(参见第一个示例)。

zplesivcak 的回答显示了解决此限制的一种方法。您还可以以非符号方式评估函数:

x = linspace(-2*pi, 2*pi, 1000);
y = diff(3*x.*sin(x) - 2*x);
figure
plot(y)
于 2013-01-16T19:00:20.907 回答
1

您可以先计算导数,将结果转换为字符串,然后绘制获得的函数:

syms x;
di = char( diff(3*x*sin(x)-2*x) );
fplot(di, [-2*pi 2*pi], 'g');

编辑: @shoelzer 为您收到的错误提供了正确的解释。

于 2013-01-16T18:43:49.890 回答