Визуализация вектора Пойнтинга
Author
In [ ]:
using Plots
# 1. Общие параметры и константы
E0 = 500.0 # Амплитуда электрического поля на входе, В/м
f = 2.45e9 # Частота, Гц
omega = 2 * pi * f # Круговая частота, рад/с
eps0 = 8.854e-12 # Электрическая постоянная, Ф/м
mu0 = 4 * pi * 1e-7 # Магнитная постоянная, Гн/м
# 2. Расчет параметров по участкам
# Участок 1: Вакуум / среда без потерь
Zc1 = 377.0 # Характеристическое сопротивление, Ом
# Поскольку затухания нет (alpha = 0), значение постоянно:
Pi_03 = 0.5 * (E0^2 / Zc1)
# Участок 2: Среда с потерями
sigma2 = 0.2 # Проводимость, См/м
eps_r2 = 5.0 # Относительная диэлектрическая проницаемость
eps_a2 = eps_r2 * eps0 # Абсолютная диэлектрическая проницаемость
tg_delta = sigma2 / (omega * eps_a2)
# Вычисление коэффициента затухания и волнового сопротивления
alpha2 = omega * sqrt((eps_a2 * mu0 / 2) * (sqrt(1 + tg_delta^2) - 1))
Zc2 = sqrt(mu0 / eps_a2) * (1 + tg_delta^2)^(-0.25)
# Дополнительные параметры
cos_delta = 1 / sqrt(1 + tg_delta^2)
cos_delta_half = sqrt((1 + cos_delta) / 2)
# Значение П(z) на границе со стеной (z = 0.5):
Pi_05 = Pi_03 * exp(-2 * alpha2 * (0.5 - 0.3))
# Участок 3: Стена (z >= 0.5)
alpha_wall = 20.0 # Коэффициент затухания в стене, Нп/м
println("Значение Π на границе среды с потерями Π(0.3) = ", round(Pi_03, digits=3), " Вт/м²")
println("Значение Π на границе стены Π(0.5) = ", round(Pi_05, digits=3), " Вт/м²")
# 3. Функция распределения вектора Пойнтинга
function calc_Poynting(z)
if z < 0.3
return Pi_03
elseif z < 0.5
return Pi_03 * exp(-2 * alpha2 * (z - 0.3))
else
return Pi_05 * exp(-2 * alpha_wall * (z - 0.5))
end
end
z_vals = 0:0.001:1.0
Pi_vals = calc_Poynting.(z_vals)
p = plot(z_vals, Pi_vals,
xlabel = "z, м",
ylabel = "Плотность потока мощности, Вт/м²",
label = "Π(z)",
linewidth = 2,
color = :blue,
grid = true,
legend = :topright,
title = "Визуализация вектора Пойнтинга Π(z)"
)
vline!(p, [0.3], label="Начало среды с потерями", linestyle=:dash, color=:orange, linewidth=2)
vline!(p, [0.5], label="Начало стены", linestyle=:dash, color=:red, linewidth=2)
annotate!(p, 0.15, 300, text("Вакуум", :black, 10))
annotate!(p, 0.40, 300, text("Среда с потерями", :black, 10))
annotate!(p, 0.75, 300, text("Стена", :black, 10))
# Отображение графика
display(p)