{ "cells": [ { "cell_type": "markdown", "id": "minute-oxford", "metadata": {}, "source": [ "# Прикладные дифференциальные уравнения\n", "## Домашнее задание №6\n", "\n", "\n", "*Илья Щуров*\n", "\n", "Факультет компьютерных наук, Прикладная математики и информатика, 2021-22 учебный год\n", "\n", "[Страница курса](http://math-info.hse.ru/2021-22/Прикладные_дифференциальные_уравнения)" ] }, { "cell_type": "markdown", "id": "revolutionary-excellence", "metadata": {}, "source": [ "## Зависимость решений от начального условия и параметров\n", "В этом задании мы будем рассматривать уравнение\n", "\n", "$$\n", "\\tag{1}\n", "\\dot x = x(a\\sin(t) + b - x)$$\n", "\n", "Оно соответствует логистическому росту населения (с ограниченными ресурсами) с учётом сезонности: количество еды меняется периодически, летом её больше, зимой — меньше. Будем считать $a$ и $b$ фиксированными неотрицательными параметрами. При $a=0$ и $b=1$ получается логистическая модель, которую мы рассматривали ранее." ] }, { "cell_type": "markdown", "id": "excessive-desire", "metadata": {}, "source": [ "### Задача 1" ] }, { "cell_type": "markdown", "id": "american-crown", "metadata": {}, "source": [ "Пусть $a=1$ и $b=1$. Пусть $\\varphi(t; x_0)$ — решение уравнения с начальным условием $x(0)=x_0$, то есть $\\varphi(0; x_0)=x_0$ для всех $x_0$. Обозначим через $y(t)$ производную решения $\\varphi$ по начальному условию в точке $x_0=0$:\n", "$$y(t):=\\left.\\frac{\\partial \\varphi(t; x_0)}{\\partial x_0}\\right|_{x_0=0}.$$\n", "\n", "1. Найдите аналитически решение $\\varphi(t; 0)$ уравнения (1) с начальным условием $x(0)=0$.\n", "2. Запишите дифференциальное уравнение на $y(t)$ (уравнение в вариациях). \n", "3. Должно получиться уравнение с разделяющимися переменными. Найдите аналитически его решение (с правильным начальным условием).\n", "4. Напишите функцию, которая находит приближенное значение $\\hat y(t)$ с помощью численного решения уравнения (1). А именно, для фиксированного $t$ нужно взять маленькое значение $x_0$, численно (например, с помощью `np.odeint`) найти решение $\\hat \\varphi(t; x_0)$ уравнения (1) с начальным условием $x(0)=x_0$ и вычислить\n", "$$\\hat y(t) := \\frac{\\hat \\varphi(t; x_0) - \\varphi(t; 0)}{x_0-0}.$$\n", "5. Постройте на одной картинке графики $y(t)$, найденного аналитически, и $\\hat y(t)$, найденного численно, на отрезке $[0, T]$ для какого-нибудь $T$ (например, $T=1$). Что происходит, когда $x_0$ становится больше или меньше? Что происходит, если увеличивать $T$? Почему так происходит?\n", "6. Исходя из анализа уравнения в вариациях, какие выводы можно сделать о поведении решений вблизи решения $\\varphi(t; 0)$? С течением времени они будут удаляться от решения $\\varphi(t; 0)$ или приближаться к нему?" ] }, { "cell_type": "markdown", "id": "perceived-fight", "metadata": {}, "source": [ "### Задача 2\n", "Пусть $b=1$. Рассмотрим решение системы (1) с начальным условием $x(0)=1$. При разных значениях $a$ мы получаем разные системы и значит разные решения, поэтому решение будет зависеть от $a$. Обозначим его через $\\varphi(t; a)$. Обозначим через $y(t)$ производную решения $\\varphi$ по параметру $a$ в точке $a=0$:\n", "$$y(t):=\\left.\\frac{\\partial \\varphi(t; a)}{\\partial a}\\right|_{a=0}.$$\n", "\n", "1. Найдите аналитически решение $\\varphi(t; 0)$ уравнения (1) при $a=0$.\n", "2. Запишите дифференциальное уравнение на $y(t)$ (уравнение в вариациях).\n", "3. Должно получиться линейное неоднородное уравнение. Найдите аналитически его решение (с правильным начальным условием). Его можно решить с помощью метода вариации постоянной.\n", "4. Возьмём $t=10\\pi$. В какую сторону будет сдвинуто решение $\\varphi(t; a)$ при маленьких $a>0$ относительно решения $\\varphi(t; 0)$? Иными словами, что вы можете сказать про знак разности $\\varphi(t; a) - \\varphi(t; 0)$ при маленьких положительных $a$? Ответ обосновать без использования численного решения дифференциальных уравнений.\n", "4. Напишите функцию, которая находит приближенное значение $\\hat y(t)$ с помощью численного решения уравнения (1). А именно, для фиксированного $t$ нужно взять маленькое значение $a$, численно найти решение $\\hat \\varphi(t; a)$ уравнения (1) с начальным условием $x(0)=1$ и вычислить\n", "$$\\hat y(t) := \\frac{\\hat \\varphi(t; a) - \\varphi(t; 0)}{a-0}.$$\n", "5. Постройте на одной картинке графики $y(t)$, найденного аналитически, и $\\hat y(t)$, найденного численно, на отрезке $[0, T]$ для какого-нибудь $T$ (например, $T=10$). Что происходит, когда $a$ становится больше или меньше?\n", "6. Напишите функцию, которая для данного значения $a$ строит интегральные кривые системы (1) с начальными условиями $x(0)=x_0$, $x_0 \\in \\texttt{np.linspace(0, 3, 31)}$. Постройте анимацию, которая показывает, как эта картинка меняется при изменении $a$ от 0 до 2. Как вы можете описать поведение решений при различных значениях $a$ при $t \\to +\\infty$? Как вы можете описать зависимость этого поведения при изменении $a$?" ] }, { "cell_type": "code", "execution_count": null, "id": "weighted-grass", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.10" }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 5 }