Распространение напряженности электрического поля
Author
In [ ]:
try
using Plots
catch
error("Пакет Plots не установлен. В терминале Julia выполните:\nimport Pkg; Pkg.add(\"Plots\")")
end
# 1. Физические параметры и константы
f = 2.45e9 # Частота волны (Гц)
E0 = 500 # Начальная амплитуда (В/м)
c = 3e8 # Скорость света в вакууме (м/с)
ε0 = 8.854e-12 # Диэлектрическая постоянная вакуума (Ф/м)
μ0 = 4pi * 1e-7 # Магнитная постоянная вакуума (Гн/м)
ω = 2 * pi * f # Круговая частота (рад/с)
# Границы зон
z0 = 0.0
z1 = 0.3 # Конец вакуума, начало среды с потерями
z2 = 0.50 # Конец среды с потерями, начало стены
z3 = 1.0 # Конец расчетной области
# Зона 1 (Вакуум)
k1 = ω / c # Волновое число в вакууме
# Зона 2 (Среда с потерями)
εr2 = 5.0
σ2 = 0.2
εa2 = εr2 * ε0
tgδ2 = σ2 / (ω * εa2)
# Коэффициент затухания α2
α2 = ω * sqrt((εa2 * μ0 / 2) * (sqrt(1 + tgδ2^2) - 1))
# Фазовая постоянная β2
β2 = ω * sqrt((εa2 * μ0 / 2) * (sqrt(1 + tgδ2^2) + 1))
# Зона 3 (Стена-поглотитель)
εr3 = 8.0
σ3 = 2.0
εa3 = εr3 * ε0
tgδ3 = σ3 / (ω * εa3)
α3 = ω * sqrt((εa3 * μ0 / 2) * (sqrt(1 + tgδ3^2) - 1))
β3 = ω * sqrt((εa3 * μ0 / 2) * (sqrt(1 + tgδ3^2) + 1))
# 2. Вычисление поля E(z)
z_arr = z0:0.001:z3
function calculate_E_and_env(z)
if z <= z1
# Зона 1: без потерь
env = E0
phase = k1 * z
return env * cos(phase), env
elseif z <= z2
# Зона 2: затухание
env = E0 * exp(-α2 * (z - z1))
phase = β2 * (z - z1) + k1 * z1
return env * cos(phase), env
else
# Зона 3: поглощение стеной
env2_end = E0 * exp(-α2 * (z2 - z1))
env = env2_end * exp(-α3 * (z - z2))
phase = β3 * (z - z2) + β2 * (z2 - z1) + k1 * z1
return env * cos(phase), env
end
end
results = calculate_E_and_env.(z_arr)
E_arr = first.(results)
env_arr = last.(results)
# 3. Визуализация графика
p = plot(
size=(900, 500),
dpi=300,
grid=true,
gridalpha=0.3,
title="Распространение напряжённости электрического поля E(z)",
xlabel="Координата z (м)",
ylabel="Напряжённость поля E (В/м)",
margin=5Plots.mm,
legend=:bottomright
)
plot!(p, z_arr, env_arr, color=:red, linestyle=:dash, linewidth=1.5, label="Огибающая затухания")
plot!(p, z_arr, -env_arr, color=:red, linestyle=:dash, linewidth=1.5, label="")
plot!(p, z_arr, E_arr, color=:blue, linewidth=1.2, label="E(z)")
vline!(p, [z1], color=:black, linestyle=:dot, linewidth=2, label="Начало среды с потерями")
vline!(p, [z2], color=:orange, linestyle=:dot, linewidth=2, label="Начало стены")
annotate!(p, 0.15, 450, text("Вакуум", 10, :black))
annotate!(p, 0.40, 450, text("Среда с потерями", 10, :black))
annotate!(p, 0.75, 450, text("Стена", 10, :black))
display(p)