Skip to content

Latest commit

 

History

History
122 lines (89 loc) · 3.86 KB

File metadata and controls

122 lines (89 loc) · 3.86 KB

План реализации задания 1.10

Цель

Доработать программу так, чтобы она помогала исследовать системы дифференциальных уравнений из задания:

  • находить окрестность нулевого стационарного состояния;
  • строить матрицу линеаризации;
  • вычислять собственные значения;
  • определять тип устойчивости;
  • при необходимости показывать фазовый портрет и траектории.

Системы из задания

а)

dx/dt = 2xy - x + y
dy/dt = 5x^4 + y^3 + 2x - 3y

б)

dx/dt = x^2 + y^2 - 2x
dy/dt = 3x^2 - x + 3y

в)

dx/dt = e^(x + 2y) - cos(3x)
dy/dt = sqrt(4 + 8x) - 2e^y

г)

dx/dt = ln(4y + e^(-3x))
dy/dt = 2y - 1 + cbrt(1 - 6x)

Математический план

  1. Для каждой системы описать правую часть f(x, y), g(x, y).
  2. Проверить, что точка (0, 0) является стационарной:
f(0, 0) = 0
g(0, 0) = 0
  1. Найти матрицу Якоби:
J = [ df/dx  df/dy ]
    [ dg/dx  dg/dy ]
  1. Подставить (0, 0) и получить матрицу линеаризации.
  2. Найти собственные значения матрицы 2x2 через след и определитель:
lambda^2 - tr(J) lambda + det(J) = 0
  1. Определить устойчивость:
  • det < 0 — седло, неустойчиво;
  • det > 0, tr < 0, дискриминант > 0 — устойчивый узел;
  • det > 0, tr > 0, дискриминант > 0 — неустойчивый узел;
  • det > 0, tr < 0, дискриминант < 0 — устойчивый фокус;
  • det > 0, tr > 0, дискриминант < 0 — неустойчивый фокус;
  • det > 0, tr = 0, дискриминант < 0 — центр в линейном приближении;
  • случаи с нулевыми собственными значениями требуют отдельного анализа.

План изменений в коде

  1. Заменить текущую демонстрационную функцию F/G/H на набор систем из задания.
  2. Добавить структуру System2D:
struct System2D {
    const char* name;
    RHS rhs;
    matrix jacobianAtZero;
};
  1. Добавить функции правых частей:
systemA(t, X)
systemB(t, X)
systemC(t, X)
systemD(t, X)
  1. Добавить расчет характеристик матрицы 2x2:
  • след;
  • определитель;
  • дискриминант;
  • собственные значения;
  • текстовый тип устойчивости.
  1. При запуске выводить в консоль список систем и результат линеаризации для каждой.
  2. Для графики оставить интерактивный режим:
  • выбрать систему;
  • кликом мыши задавать начальную точку;
  • рисовать траекторию выбранной системы.
  1. Добавить отдельный файл с математическим отчетом или пояснительной запиской, если потребуется оформление решения.

Предлагаемые коммиты

  1. Initial Visual Studio project
  2. Add implementation plan for linearization task
  3. Add systems and linearization analysis
  4. Add interactive system selection and plotting
  5. Document results for assignment systems