Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from __future__ import annotations
- from pathlib import Path
- import matplotlib.pyplot as plt
- import numpy as np
- D = 0.5
- Delta = (1.0 - D) / D
- j_regular = 2
- j_degenerate = 3
- a_irregular = 2
- zeta_0 = 1.0
- zeta_max = 5.0
- num_points = 500
- u_degenerate = 0.35
- u_irregular = 0.85
- output_dir = Path(__file__).resolve().parent
- output_png = output_dir / "pr3_hierarchical_connection_plot.png"
- def w_regular(zeta: np.ndarray, delta: float, zeta_start: float = 1.0) -> np.ndarray:
- return np.exp(-delta * (zeta - zeta_start))
- def w_degenerate(zeta: np.ndarray, delta: float, u: float, zeta_start: float) -> np.ndarray:
- base = 1.0 + u * np.log(zeta_start / zeta)
- if np.any(base <= 0):
- raise ValueError(
- "Для виродженого дерева вираз у дужках став непозитивним. "
- "Зменште u або звузьте діапазон ζ."
- )
- return np.power(base, delta)
- def w_irregular(zeta: np.ndarray, delta: float, u: float, zeta_start: float, a: float) -> np.ndarray:
- base = 1.0 + u * ((zeta_start / zeta) ** (a - 1.0) - 1.0)
- if np.any(base <= 0):
- raise ValueError(
- "Для нерегулярного дерева вираз у дужках став непозитивним. "
- "Зменште u або звузьте діапазон ζ."
- )
- return np.power(base, delta)
- def main() -> None:
- zeta = np.linspace(zeta_0, zeta_max, num_points)
- y_regular = w_regular(zeta, Delta, zeta_0)
- y_degenerate = w_degenerate(zeta, Delta, u_degenerate, zeta_0)
- y_irregular = w_irregular(zeta, Delta, u_irregular, zeta_0, a_irregular)
- plt.figure(figsize=(9, 5.5))
- plt.plot(zeta, y_regular, label=f"Регулярне дерево (j={j_regular})")
- plt.plot(zeta, y_degenerate, label=f"Вироджене дерево (j={j_degenerate})")
- plt.plot(zeta, y_irregular, label=f"Нерегулярне дерево (a={a_irregular})")
- plt.xlabel("ζ")
- plt.ylabel("w(ζ)")
- plt.title("Порівняння функції ієрархічного зв'язку для трьох типів дерев")
- plt.grid(True, alpha=0.35)
- plt.legend()
- plt.tight_layout()
- plt.savefig(output_png, dpi=200)
- plt.close()
- print("Файл Python виконано успішно.")
- print(f"Графік збережено у: {output_png}")
- print("Використані параметри:")
- print(f"D = {D}")
- print(f"Δ = {Delta}")
- print(f"ζ0 = {zeta_0}")
- print(f"u (вироджене дерево) = {u_degenerate}")
- print(f"u (нерегулярне дерево) = {u_irregular}")
- print(f"a = {a_irregular}")
- if __name__ == "__main__":
- main()
Advertisement
Add Comment
Please, Sign In to add comment