Я хотел бы вычислить производную комплекснозначной функции (голоморфную функцию) численно в MATLAB.Численное вычисление производной комплекснозначной функции в MATLAB
Я вычислил функцию в сетке на комплексной плоскости, и я попытался вычислить производную, используя отношения Коши-Римана.
Дано: и = реальная (е), V = емк (е), х = реальная (точка), у = емк (точка)
производное должно быть задано: F»= ди/dx + i dv/dx = dv/dy - i du/dy
где 'd' - оператор производной.
Я попытался следующий код:
stepx = 0.01;
stepy = 0.01;
Nx = 2/stepx +1;
Ny = 2/stepy +1;
[re,im] = meshgrid([-1:stepx:1], [-1:stepy:1]);
cplx = re + 1i*im;
z = cplx.^3;
Производная должно быть дано по:
f1 = diff(real(z),1,2)/stepx +1i* diff(imag(z),1,2)/stepx;
или
f2 = diff(imag(z),1,1)/stepy - 1i* diff(real(z),1,1)/stepy;
Но два производных, которые предполагают, чтобы быть равным, не совпадать.
Что я делаю неправильно?
Подсчитаем число элементов, которое отличается менее чем stepx (в предположении, stepx = степы):
lm = min(size(f1));
A = f1(1:lm,1:lm);
B = f2(1:lm,1:lm);
sum(sum(abs(A - B) <= stepx))
и с помощью исправления, предложенные @A. Donda
f1i = interp1(1 : Ny, f1, 1.5 : Ny);
f2i = interp1(1 : Nx, f2 .', 1.5 : Nx) .';
sum(sum(abs(f1i - f2i) <= stepx))
Во втором случае все они отличаются менее чем stepx, как это должно быть, в то время как в первом случае это не так.