在Python中使用NumPy制作计算带有外积的曼德布罗特集的网格
在这篇文章中,让我们学习如何在Numpy中使用Python制作一个计算曼德布罗特集外积的网格。
numpy.outer() 方法:
在Python中,numpy.outer()方法被用来获取一个数组和一个元素向量的外积。在线性代数中,一个矩阵是两个坐标向量的外积。m*n矩阵是两个维度为n和m的向量的外积。张量被定义为两个张量(多维数字数组)的外积。张量积,通常被称为张量的外积,定义了张量代数。换句话说,外积是第一个和第二个向量的所有元素之和。曼德布罗特数列是一组复数,在绘制时有一个非常扭曲的分形边界。
示例:
输入 :
A = [A0, A1, A2, A3..., AM] and B = [B0, B1, B2, B3 ..., BN]
输出:
[[A0*B0 A0*B1 A0*B2 A0*B3... A0*BN ]
[A1*B0 A1*B1 A1*B2 A1*B3... A1*BN ]
[ ... ... ... ... ... ]
[AM*B0 AM*B1 AM*B2 ... AM*BN ]]
语法: numpy.outer(a, b, out=None)
参数:
- a: (M,) array_like对象。初始输入向量。如果输入不是一维的,就会被压扁。
- b: (N,) array_like对象。输入的第二个向量。如果输入不是一维的,就会被压扁。
- out: (M, N) ndarray, 可选值。结果被保存的位置
返回:out (M, N) ndarray.结果是out[i, j] = a[i] * b[j]。
示例 1
在Python中,使用numpy.outer()方法来获得两个数组的外积。numpy.ones()函数用于创建一个指定类型和形状的1数组。numpy.linspace()函数返回在给定区间内均匀分布的数字。为了创建一个曼德布罗特集,我们需要创建一个虚数部分,和虚数部分,并通过组合它们来创建一个复数集。
# importing
import numpy as np
# Real number is created using the
# np.outer method
real_part = np.outer(np.ones((3,)), np.linspace(1, 3, 3))
print("The real part ")
print(real_part)
# imaginary number is created using the
# np.outer method
imaginary_part = np.outer(1j*np.linspace(3, 6, 3), np.ones((3,)))
print("The imaginary part")
print(imaginary_part)
# Forming a grid by combainaing rael
# and imaginary part
mandelbrot_grid = real_part + imaginary_part
print("Mandelbrot grid")
print(mandelbrot_grid)
输出:
The real part
[[1. 2. 3.]
[1. 2. 3.]
[1. 2. 3.]]
The imaginary part
[[0.+3.j 0.+3.j 0.+3.j ]
[0.+4.5j 0.+4.5j 0.+4.5j]
[0.+6.j 0.+6.j 0.+6.j ]]
Mandelbrot grid
[[1.+3.j 2.+3.j 3.+3.j ]
[1.+4.5j 2.+4.5j 3.+4.5j]
[1.+6.j 2.+6.j 3.+6.j ]]
示例 2
在这个例子中,我们使用了numpy.linspace(3, 6, 3)函数,范围从3开始到6结束,而3是要生成的样本数,那么它将返回在给定区间内均匀分布的数字。为了创建一个曼德布罗特集,我们需要创建一个虚数部分,以及虚数部分,通过组合它们来创建一个复数集。
# importing
import numpy as np
# Real number is created using the
# np.outer method
real_part = np.outer(np.ones((3,)), np.linspace(3, 6, 3))
print("The real part ")
print(real_part)
# imaginary number is created using
# the np.outer method
imaginary_part = np.outer(1j*np.linspace(6, 9, 3), np.ones((3,)))
print("The imaginary part")
print(imaginary_part)
# Forming a grid by combainaing real
# and imaginary part
mandelbrot_grid = real_part + imaginary_part
print("Mandelbrot grid")
print(mandelbrot_grid)
输出:
The real part
[[3. 4.5 6. ]
[3. 4.5 6. ]
[3. 4.5 6. ]]
The imaginary part
[[0.+6.j 0.+6.j 0.+6.j ]
[0.+7.5j 0.+7.5j 0.+7.5j]
[0.+9.j 0.+9.j 0.+9.j ]]
Mandelbrot grid
[[3. +6.j 4.5+6.j 6. +6.j ]
[3. +7.5j 4.5+7.5j 6. +7.5j]
[3. +9.j 4.5+9.j 6. +9.j ]]