Я пытаюсь построить градиент реальной части сложной функции, однако то, что я получаю, является пустой фигурой. Я не понимаю, что я делаю неправильно, так как код работает с другими функциями (например, мнимую часть)График градиента в Matlab и ничего не пусто
% Set up
x = -3:0.2:3;
y1 = (-3:0.2:3);
y = (-3:0.2:3)*1i;
[X, Y]= meshgrid(x,y);
% Complex variable s
s = X + Y;
% Complex function f(z)
z = s + 1./s;
figure
subplot(1,2,1);
[Dx, Dy] = gradient(real(z),.2,.5);
quiver(x,y1,Dx,Dy)
title('u(x,y) gradient, vector field');
%%Imaginary part
subplot(1,2,2)
contour(x,y1,imag(z),linspace(-10,10,100)); title('Contour of Im(f)');
xlabel('x'); ylabel('y'); %clabel(C3);
title('Imaginary part');
Здесь ниже изображения я получаю
Я попытался изменить масштаб и изменить размер изображения , домен и т. д., но не смогли отобразить градиент (стрелки). Что я здесь делаю неправильно?
EDIT: Я обнаружил, что он отображается пустым, возможно, потому что в переменных Dy и Dx есть значения Inf и -Inf, есть ли возможность игнорировать эти значения или установить их в 0?
Спасибо, я частично решил проблему. Я узнал, что ничего не сделал, потому что там, где Inf и -Inf приводят к переменным Dx и Dy. Можно ли указать Matlab установить 0 этих значений? – mickkk
Да! Что-то вроде 'Dx (isinf (Dx)) = 0;' и то же для 'Dy'. Я добавлю эту информацию в ответ. –
спасибо! он отлично работает! – mickkk