Advertisement
mirosh111000

Атестація1

Nov 1st, 2023
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.15 KB | None | 0 0
  1. import numpy as np
  2. from scipy.integrate import odeint
  3. import matplotlib.pyplot as plt
  4. import sympy as sp
  5.  
  6. # Визначимо систему диференціальних рівнянь
  7. def system(y, t):
  8.     x, z = y
  9.     dxdt = x - z
  10.     dzdt = 2 * (x - z) + 2
  11.     return [dxdt, dzdt]
  12.  
  13. # Визначимо матрицю Якобі для системи рівнянь
  14. def jacobian():
  15.     dxdt_dx = 1
  16.     dxdt_dy = -1
  17.     dydt_dx = 2
  18.     dydt_dy = -2
  19.     return np.array([[dxdt_dx, dxdt_dy], [dydt_dx, dydt_dy]])
  20.  
  21. x_range = np.linspace(-100, 100, 5)
  22. z_range = np.linspace(-100, 100, 5)
  23.  
  24.  
  25. plt.figure(figsize=(15, 10))
  26. for x0 in x_range:
  27.     for z0 in z_range:
  28.         y0 = [x0, z0]  # Початкові значення [x0, z0]
  29.         t = np.linspace(0, 30, 1000)  # Часовий інтервал
  30.         solution = odeint(system, y0, t)
  31.         x, z = solution[:, 0], solution[:, 1]
  32.         plt.plot(x, z)
  33.  
  34. plt.xlabel('x')
  35. plt.ylabel('y')
  36. plt.grid()
  37. plt.show()
  38.  
  39.  
  40. # Визначимо символьні змінні
  41. x, y = sp.symbols('x y')
  42.  
  43. # Визначимо систему рівнянь
  44. eq1 = x - y
  45. eq2 = 2 * (x - y) + 2
  46.  
  47. # Знайдемо точки (де dx/dt = 0 і dy/dt = 0)
  48. solutions = sp.solve([eq1, eq2], (x, y))
  49.  
  50. print("Точки вузла:")
  51. if len(solutions) != 0:    
  52.     for solution in solutions:
  53.         print(f"x = {solution[x]}, y = {solution[y]}")
  54. else:
  55.     print("Точок (де dx/dt = 0 і dy/dt = 0) не існує")
  56.  
  57. try:
  58.  
  59.     # Знайдемо точки вузла (де dx/dt = 0 і dy/dt = 0)
  60.     x_eq = solution[x]
  61.     y_eq = solution[y]  # значення x і y в точці
  62.  
  63.     # Обчислимо матрицю Якобі в точці вузла
  64.     Jacobian = jacobian()
  65.  
  66.     # Знайдемо власні значення матриці Якобі
  67.     eigenvalues = np.linalg.eigvals(Jacobian)
  68.  
  69.     print("Матриця Якобі:")
  70.     print(Jacobian)
  71.     print("Власні значення:")
  72.     print(eigenvalues)
  73.    
  74. except:
  75.     print("Матриця Якобі:")
  76.     print(Jacobian)
  77.     print("Власних значень не існує")
  78.    
  79.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement