在现实生活中,这很简单,但你如何在Matlab中求二次或三次函数的导数呢?
例如,A*x^3 + B*x^2 + C*x + D
的导数为 3*Ax^2 + 2*B*x + C
我想在Matlab中得到这个结果,但我不知道该怎么做 :(
例如,我尝试了这个代码,但是却得到了一个愚蠢的结果(也许应该怪我自己!):
>> x = [6 3 2 1]
x =
6 3 2 1
>> xPrime = diff(x)
xPrime =
-3 -1 -1
通常应该返回[18 6 2] ?? 我还想知道如何对一系列数字进行此操作。例如,我希望针对
n = linspace(0,10,1000)
中的每个点求导数。更新 当然,我可以手动完成此操作,但我真的很想知道如何使用matlab自己完成此操作。
现在我正在获取上面示例的切线,并且我像这样做,它有效:
x = linspace(0,10,1000);
y=A*x.^3+B*x.^2+C*x + D;
plot(x,y);
hold on;
slop=3*A.*(Location^2)+2*B.*Location+C;
b=(A.*Location.^3)+(B.*Location.^2)+(C.*Location)+D;
y2=slop*(x-Location)+b;
plot(x,y2,'--r');
legend('Graph of the function','Tangent Line');
hold off;
我想表达的是,在这一行中,我应该使用什么代替手动计算的导数?
slop=3*A.*(Location^2)+2*B.*Location+C;
谢谢!
polyder(p)
吗?我有一段时间没用Matlab了,不太记得,但我想这个应该可以。 - Jeffdiff()
的文档?文档中说:“Y = diff(X)
计算X
相邻元素之间的差异。” 这似乎不是你想要它做的事情。 - André Caron