matplotlib 如何绘制复数的颜色图或密度图?

vfhzx4xs  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(95)

我有一个res函数,它将某个omega变量的复数值作为输入,并返回一个连分数的余数(也是复数)的绝对值。
我想测试res函数的各种omega值,看看哪些值产生最接近零的残差值。所以我会看到哪一个ω对应,在某种意义上,这就是连续函数的余数的方程的根。因此,我生成了一个omegas列表如下:

N = 400

omega = [complex(np.random.uniform(0.001, 15), np.random.uniform(0, 2)) for i in range(N)]

字符串
我将每个omega[i]值强加给res函数。截断列表,用于omega列表

omega = [(8.89186304186803+1.8580361935398448j), (4.250554058118386+0.34692636983137204j),(13.77975011058525+0.4067498913305867j), (11.848491447761512+1.1353493824887473j), (5.368197310760776+1.603262808639006j), (7.953834937525846+0.31087387982821735j),
 (12.589975089023985+1.9010925629632527j),(0.8533967396680111+0.9083830823882479j),
 (11.966071152073017+1.7535358294965886j), (6.723597895069045+0.5943732982185757j)]


我得到了以下相应残差的绝对值

list_res = [2.1663149855057022, 12.202467603015915, 13.105388388645999, 3.524702335556132, 5.007101216080126, 2.1989779961023457, 4.6753139694285775, 1.82871868615581, 3.8247209107872857, 2.977690850044372]


我想生成一个颜色图或密度图与欧米茄值和各自的绝对值的残差。其思想是定位局部极小点(残差最接近零的点)
我尝试使用spb库中的plot_comples。但显然你只能绘制符号函数。
我想做一个与下面的情节类似的情节。其中黑点是res最小的值。
Color plot

yptwkmov

yptwkmov1#

下面是spb创建这种可视化的方式:
1.在复平面中创建Ω值的网格。
1.在这个复杂的网格上计算函数。
1.计算结果的大小,其从0到(可能)无穷大变化。数值的范围通常很大,所以绘制震级不是一个好主意,因为你最终会得到一个难以理解的图像。
1.相反,我们使用以下公式计算亮度:b = m / (m + 1),其中m是幅度。注意,当m=0b为零,当m趋于无穷大时b趋于1。
1.绘制亮度。
下面是一个例子:

import numpy as np
import matplotlib.pyplot as plt

func = lambda w: np.sin(w**2)
n = 200j
re_w, im_w = np.mgrid[-3:3:n, -3:3:n]
w = re_w + 1j * im_w
res = func(w)
mag = np.absolute(res)
brightness = mag / (mag + 1)

fig, ax = plt.subplots()
img = ax.imshow(brightness, cmap="gray", vmin=brightness.min(), vmax=brightness.max())
cbar = fig.colorbar(img, label="brightness")

字符串


的数据

相关问题