难道Matlab只能对正值求导?

问题描述:

难道Matlab只能对正值求导?
初学MATLAB,有个函数于SIGMA的导数有关系,但我定义完DIFF,出现了?Error using ==> diff
Difference order N must be a positive integer scalar.
是哪里出了错呢,
程序如下:
for t=0:0.1:2
i=i+1;
tt(i)=t;
eps(i)=eps0*t;
% trial values
ep_tr=epn;
a_tr=an;
sig_tr=E*(eps(i)-ep_tr);
b_tr=-H*a_tr;
d(sig_tr)=diff(sig_tr);
f_tr=sign(d(sig_tr))*abs(sig_tr-b_tr)*sign(sig_tr-sign(sig_tr)*b_tr)-Y_0;
对sig_tr求一阶导数,错误在哪呢?
修改之后出现?Attempted to access dsig_tr(0); index must be a positive integer or logical.
又是什么问题呢?
1个回答 分类:综合 2014-10-10

问题解答:

我来补答
只能求正阶导数,不能求类似-1,-2阶导数(积分),个人感觉你编程时输入项次序搞错了,可以试试help diff 命令
问题还不是一般多啊,你可以比较一下.
%clear;
%i=0; eps0=1;epn=1;an=1;E=1;H=1;Y_0=1;
for t=0:0.1:2
i=i+1;
tt(i)=t;
eps(i)=eps0*t;
end
% trial values
ep_tr=epn;
a_tr=an;
sig_tr=E*(eps-ep_tr);
b_tr=-H*a_tr;
dsig_tr=diff(sig_tr);
dsig_tr(i)=dsig_tr(i-1);
f_tr=sign(dsig_tr).*abs(sig_tr-b_tr).*sign(sig_tr-sign(sig_tr).*b_tr)-Y_0;
diff(x)求出来的值是[x2-x1 x3-x2 x4-x3 .] 按这个规律,最后会缺少一位,最简便的方法就是把最后一位向后扩展,进行运算 当然还有别的方式
 
 
展开全文阅读
剩余:2000