Дифференциальные уравнения в C++
В следующей статье описывается один из самых мощных методов решения дифференциальных уравнений .
Я буду решать простые дифференциальные уравнения первого и второго порядка, используя метод Рунге-Кутты , который я обсуждал здесь .
Исходный код этой статьи вы найдете на моем GitHub .
Метод Рунге-Кутты
Следующий метод является наиболее часто используемым методом для решения обыкновенных дифференциальных уравнений. Метод Рунге-Кутты превосходит другие численные методы, поскольку он прост в реализации, точен и часто стабилен, и его можно решить, предоставив одно начальное значение.
Существуют методы n-го порядка, которые определяют, сколько раз мы вычисляем функцию f (t, x(t)). Однако наиболее популярным методом, который также изображен ниже, является метод четвертого порядка .
Как видите, на каждом временном шаге нам нужно найти коэффициенты k1, k2, k3 и k4.
Наиболее важной частью решения дифференциальных уравнений с использованием метода Рунге-Кутты является понимание того, как развертывать уравнения.
Я могу проиллюстрировать некоторый псевдокод, который, я надеюсь, даст вам некоторую интуицию.
Как видите, есть два дифференциальных уравнения первого порядка. Теперь вам нужно также создать две функции, которые возвращают ЛЕВУЮ часть дифференциального уравнения.
Здесь мы решаем осциллятор Ван дер Поля.
Решение можно изобразить следующим образом,
Для дифференциального уравнения второго порядка вы должны добавить также уравнение, в котором вы решаете производную первого порядка
Решение можно изобразить следующим образом,
Для построения графика требуется включить файл заголовка , который должен находиться в той же папке, что и ваш cpp (файл, который вы можете клонировать из моего репозитория).
Ваша программа может быть скомпилирована следующим образом:
//compile
g++ my_prog.cpp -o my_prog -I/usr/include/python3.8 -lpython3.8//
//run
./my_prog
//folder tree
├── my_prog
├── my_prog.cpp
├── matplotlibcpp.h

![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































