在Python中使用NumPy制作计算带有外积的曼德布罗特集的网格

在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 ]]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Numpy教程