功能 gradient ,使用一个输出参数,计算x方向的偏导数。因此,您在第一位代码中计算的是d / dx r1,而不是d / dt r1。使用两个输出参数,它计算x和y导数。
gradient
在第二位代码中,计算的导数被转置,导致交换x和t轴。
以下代码修复了这两个错误:
X=-1:.05:1; T=-1:.05:1; m=1+1*1i; [x,t]=meshgrid(X,T); r1=m.*sin(x+4.*t); [dr1dx,dr1dt]=gradient(r1); dr1dx=dr1dx/mean(diff(X)); dr1dt=dr1dt/mean(diff(T)); dr1dt_true=4.*m.*cos(x+4.*t); figure subplot(1,2,1) surf(x,t,abs(dr1dt)); xlabel('x') ylabel('t') title('discrete approximation') subplot(1,2,2) surf(x,t,abs(dr1dt_true)); xlabel('x') ylabel('t') title('analytical')