shun333 发表于 2007-7-15 21:27:29

怎样让MATLAB实现在函数某一点的微分?

在函数f(t1)的微分,这样求得Z1=[],

那点错了
y=feval(f,t1);
    z1=diff(y);


f=-(3-2*x.^2)*x;
>> diff(f)

ans =

   []

深蓝世界 发表于 2007-7-15 22:16:55

你这里用了点乘,表达示中的X应该先赋值;
x=0:0.1:1;
diff(-(3-2*x.^2).*x)

shun333 发表于 2007-7-16 10:17:04

matlab没有直接提供 数值求导

在MATLAB中,没有直接提供求数值导数的函数,只有计算向前差分的函数diff,其调用格式为:
DX=diff(X):计算向量X的向前差分,DX(i)=X(i+1)-X(i),i=1,2,…,n-1。
DX=diff(X,n):计算X的n阶向前差分。例如,diff(X,2)=diff(diff(X))。
DX=diff(A,n,dim):计算矩阵A的n阶差分,dim=1时(缺省状态),按列计算差分;dim=2,按行计算差分。

谢谢深蓝了,问题解决了。
在做数值求导时对diff的数值处理一下就可对数值求导了


diff的用法
页: [1]
查看完整版本: 怎样让MATLAB实现在函数某一点的微分?