首页 > 解决方案 > MATLAB 为复杂表示绘制一系列图形

问题描述

我试图在窗口中绘制同一函数的各种表示,以了解它的几何形状。尽管如此,我的 matlab 技能限制了我……我的目标是创建一个真正能够让任何人都能够理解函数的几何形状的程序,并显示它的每个角度。

我试图在同一个窗口上: 在此处输入图像描述

  1. 使用黎曼曲面表示实部和虚部。

如何在具有亮度的 MATLAB 中绘制具有相位信息的复杂函数

  1. 使用相同事物的亮度和颜色的表示(不像在他们绘制幅度和相位的链接中)。

在此处输入图像描述

在这个链接中,一位好帮手有好主意,只是我认为情节不够流畅,颜色很奇怪...... Octave(Matlab)中复杂函数的域着色(色轮)图

  1. 然后在另一个窗口中做同样的事情,但不是绘制实部和虚部,而是绘制幅度和相位。

  2. 最后,在最后一个窗口中,我真的很想绘制类似我们在 wolfram alpha 上看到的东西(这是 1/z 的示例): 在此处输入图像描述

所以到目前为止我发现了什么:

https://www.mathworks.com/help/matlab/visualize/visualizing-four-dimensional-data.html?ue

因此,在matlab中,我现在可以使用以下代码在第一张图片上进行可视化:

r = (0:1:15)';                        % create a matrix of complex inputs
theta = pi*(-1:0.05:1);
z = r*exp(1i*theta);
w = log10(z)  ;                                % calculate the complex outputs



figure('Name','Graphique complexe'  , 'units','normalized','outerposition',[ 0.08 0.1 0.8 0.55]);
subplot(121)
surf(real(z),imag(z),real(w),imag(w))    % visualize the complex function using surf
xlabel('Real(z)')
ylabel('Imag(z)')
zlabel('Real(u)')
cb = colorbar;
cb.Label.String = 'Imag(v)';

subplot(122)
surf(real(z),imag(z),imag(w),real(w))    % visualize the complex function using surf
xlabel('Real(z)')
ylabel('Imag(z)')
zlabel('Imag(v)')
cb = colorbar;
cb.Label.String = 'Real(u)';

但我有一个问题。也许我错了,但是当我绘制 z^2 时,我猜想的不是线性的(就像它必须是:Im z^2 = -2xy )而是二次的,就像实部一样: x^2-y^2 ...绘制身份时出现同样的问题,角度的范围很奇怪......它从-15到15......

此外,我真的很喜欢使用这种彩虹色,拥有从蓝色到红色的一系列常规颜色:

在此处输入图像描述

而且我不知道如何更改颜色...我也不知道如何更改绘图右侧的刻度范围以使其以“pi”而不是弧度形式书写。 .我想它会更具可读性...

好吧,如果你有任何想法来做这个把戏,我真的很乐意在实践中做到 :) 我知道我问了很多事情,但即使它只是整个代码的一个紧缩,它也会是有用,我会尽量统一一切。

谢谢大家 !

标签: matlabcomplex-numbers

解决方案


好吧,要经历很多事情,所以在我尝试理解其余部分之前,让我们先了解一些简单的事情。

更改颜色渐变: 在声明后立即添加代码

 colorbar
 colormap jet; %gradient from blue to red

将比例更改为 pi 的数字: 在绘图部分只需添加代码,它应该可以解决问题

xticks([-pi -pi/2 0 pi/2 pi])
xticklabels({'-\pi','-\pi/2','0','\pi/2','2\pi'})

其余的,我需要更多时间,或者其他人可以尝试回答。


推荐阅读