我正在尝试在Matlab中实现不同的数值方法,而不使用内置函数,例如Gradient或Del2。到目前为止这是我的代码:
clear all
close all
x = [-1:0.1:1];
y = [-2:0.1:2];
vel = @(x,y) x+exp(-((x-x(1)).^2+(y-y(1)).^2));
nx = length(x);
ny = length(y);
derivx = zeros(nx-1,ny-1)
% The partial derivative with respect to x
for ii = 1:nx-1
for jj = 1:ny-1
derivx(ii,jj) = (vel(ii+1,jj) - vel(ii,jj))./(x(jj+1,ii)-x(jj,ii));
end
end
% The partial with respect to y
derivy = zeros(ny-1,nx-1)
for ii = 1:ny-1
for jj = 1:nx-1
derivy(ii,jj) = (vel(ii+1,jj) - vel(ii,jj))./(y(jj+1,ii)-y(jj,ii));
end
end
此代码无法处理表示矩阵索引已超过的错误消息。
Index in position 1 exceeds array bounds (must not exceed 1).
Error in untitled6 (line 13)
derivx(ii,jj) = (vel(ii+1,jj) - vel(ii,jj))./(x(jj+1,ii)-x(jj,ii));
我如何计算二阶偏导数,并对x和y进行重复(不是混合的)?
提前谢谢你的帮助!