复数的构造
在本演示中,我们将了解在Engee中绘制复数图形的基本技巧。
复数 是一个形式为 的数,其中 是实数, 是虚数单位 。数字 是复数 的实部,表示为 。数字 是复数 的虚部,表示为 。
复数 可以在直角坐标系中绘制,其实部 绘制在横轴上,虚部 绘制在纵轴上。
此外, 也可以在极坐标系中绘制。为此,我们应参考其指数或三角符号 。
因此:模数 和参数 分别是复数 与原点的距离和以缺轴为半径的矢量。
复数矢量的构造
让我们定义一个复数向量。
Pkg.add(["LinearAlgebra"])
z = [
3 + 4im,
-4 - 3im,
1 - 2im,
-1 - 1im
];
加载函数库并连接后台进行绘图。
import Pkg
Pkg.add("Plots")
using Plots;
plotlyjs()
将从z
提取的实部和虚部作为坐标,在复平面上绘制给定向量。
scatter(
real.(z), imag.(z),
title="Комплексные числа",
xlabel="Re(z)",
ylabel="Im(z)",
markersize=4,
markercolor=:red,
legend=:topleft,
label="z"
)
在映射复数时,不必提取实部和虚部。将复数传递给函数scatter(z)
或plot(z)
时,它们在复平面上的坐标将自动确定,下面我们将看到这一点。
复数平面上从 1 开始的 n 阶根
对于形式为 的多项式,其中 ,我们可以根据莫伊雷公式找到 的复数根:
其中
让我们定义计算根的函数:
nthroots(n::Integer) = [ cospi(2k/n) + sinpi(2k/n)im for k = 0:n-1 ]
求阶数为n = 5
的多项式的复数根:
z = nthroots(5)
让我们在直角坐标系的复平面上显示找到的根。在此结构中,我们向函数scatter()
传递一个复数数组,但不提取实部和虚部。
scatter(
z,
title="Корни полинома",
xlabel="Re(z)",
ylabel="Im(z)",
markersize=4,
markercolor=:blue,
legend=:topleft,
label="z"
)
根据从 1 开始的 n 阶根的性质,复数根的模将等于 1。为了确定这一点,让我们继续将这些根映射到极坐标中。在这种情况下,函数scatter()
必须传递参数数组和复数根的模数。
scatter(
angle.(z), abs.(z),
proj=:polar,
marker = :circle,
m=4, #markersize
markercolor=:green,
legend=:topleft,
label="z"
)
根据 1 的 5 度根的几何性质,它们的模等于 1,在复平面上,它们位于以坐标原点为中心的正五边形的顶点上,其中一个根等于复单位 。
复平面上的参数曲线
让我们在复平面上构建一条参数曲线,其表达式为 。
参数 将定义在 的范围内。
让我们在定义的范围内为参数 设置一个包含 200 个点的数组,并计算参数曲线的点数组。
t = collect(range(0, 4pi, length=200));
z = t.*exp.(t.*im);
在直角坐标系的复平面上显示参数曲线:
plot(
z,
title="Параметрическая кривая",
xlabel="Re(z)",
ylabel="Im(z)",
markersize=4,
markercolor=:blue,
legend=:topright,
label="z",
width=3
)
在极坐标系中显示复平面上的参数曲线
plot(
angle.(z), abs.(z),
proj=:polar,
legend=:topleft,
label="z",
width=3
)
复平面上矩阵的特征值
对于正方形矩阵 ,存在 有效的特征值或复数共轭对。
让我们来验证这一性质,并在复平面上显示特征值。
为了找到共轭值,让我们加载并连接LinearAlgebra
库:
Pkg.add("LinearAlgebra")
using LinearAlgebra;
让我们找出随机生成的矩阵 的特征值。
z=eigen(rand(20,20));
让我们在复平面上构造矩阵的特征值。
scatter(
z.values,
title="Собственные значения",
xlabel="Re(z)",
ylabel="Im(z)",
markersize=4,
markercolor=:magenta,
legend=:topleft,
label="z"
)
根据正方形矩阵 的特征值性质,可以在复平面上观察到 20 个点,这些点要么位于实值轴上,要么代表复共轭对。
平面上的几个复数阵列
考虑在复数平面上表示两组不同的复数数据。它们将由以下表达式定义:
我们按 的步骤定义 的值向量,并计算 和 的值数组。
x = collect(-2:0.25:2);
z1=Complex.(x).^exp.(-x.^2);
z2=2*Complex.(x).^exp.(-x.^2);
提取两个数组中数字的实部和虚部:
re_z1 = real.(z1);
im_z1 = imag.(z1);
re_z2 = real.(z2);
im_z2 = imag.(z2);
让我们在同一平面上绘制两组复数:
scatter(
re_z1, im_z1,
title="Массивы комплексных чисел",
xlabel="Re(z)",
ylabel="Im(z)",
marker=:cross,
markersize=5,
markercolor=:violet,
legend=:topleft,
label="z1"
)
scatter!(
re_z2, im_z2,
marker=:xcross,
markersize=5,
markercolor=:orange,
label="z2"
)
结论
在本演示中,我们了解了在Engee中用图形表示复数的各种工具和技术。