Численно решить дифур

cupuyc
Сообщений: 1107
Зарегистрирован: 23 май 2009, 21:00

Численно решить дифур

Сообщение cupuyc » 06 янв 2014, 16:33

Здравствуйте. В процессе решения задачи получил систему дифуров в переменных $$x(t), \vartheta(t)$$
$$\displaystyle 2\cos\vartheta\ddot{x}+\cos^{2}\vartheta\ddot{\vartheta}-\sin\vartheta\cos\vartheta\dot{\vartheta}^{2}+2g\sin\vartheta\cos\vartheta\frac{\dot{\vartheta}}{\dot{x}}=&0\\\ddot{\vartheta}+\cos\vartheta\ddot{x}-g\sin\vartheta=&0$$

Мне нужно получить численное решение. Причём, решение $$\vartheta(t)$$ лежит в интервале значений $$[-0.5..0.5]$$.

Проблема в том, что решение должно обязательно пройти через точку с $$\dot{x} = 0, \dot{\vartheta} = 0$$. Как тут быть? В голову приходит только один вариант -- как-то ввести новые координаты, в которых дробь $$\frac{\dot{\vartheta}}{\dot{x}}$$ будет всегда конечной.

Добавлю, что данная система имеет первый интеграл, может быть тоже можно как-то использовать...
$$\displaystyle \dot{x}^{2}+\frac{1}{2}\dot{\vartheta}^{2}+\dot{x}\dot{\vartheta}\cos\vartheta-g\cos\vartheta=\text{const} $$
Последний раз редактировалось cupuyc 28 ноя 2019, 06:37, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
Ian
Сообщений: 5455
Зарегистрирован: 28 июл 2009, 21:00

Численно решить дифур

Сообщение Ian » 06 янв 2014, 21:02

А почему бы 1е уравнение на косинус не сократить, в 0 он не обращается.
Действительно,лучше новые координаты $$u,\theta $$, где u(t)= этому первому интегралу, и значит, одно из уравнений превратится в $$\dot u =0$$ его можно не решать а считать u параметром, определяемым начальными условиями. В любое из двух уравнений подставить выражение $$\dot x$$ через $$u,\theta $$ из квадратного уравнения, разобравшись, который из его корней нужен
Решать с начальным условием $$\displaystyle u=-g\cos\theta (0)$$-задать какое Вам нужно, $$\dot\theta (0)=0 $$
как уравнение 2-го порядка, Рунге-Куттой
Последний раз редактировалось Ian 28 ноя 2019, 06:37, всего редактировалось 1 раз.
Причина: test

cupuyc
Сообщений: 1107
Зарегистрирован: 23 май 2009, 21:00

Численно решить дифур

Сообщение cupuyc » 07 янв 2014, 12:48

Ian писал(а):Source of the post
А почему бы 1е уравнение на косинус не сократить, в 0 он не обращается.
Действительно,лучше новые координаты $$u,\theta $$, где u(t)= этому первому интегралу, и значит, одно из уравнений превратится в $$\dot u =0$$ его можно не решать а считать u параметром, определяемым начальными условиями. В любое из двух уравнений подставить выражение $$\dot x$$ через $$u,\theta $$ из квадратного уравнения, разобравшись, который из его корней нужен
Решать с начальным условием $$\displaystyle u=-g\cos\theta (0)$$-задать какое Вам нужно, $$\dot\theta (0)=0 $$
как уравнение 2-го порядка, Рунге-Куттой

Спасибо за идею. Попытался реализовать, но всё-равно не получилось избавиться от сингулярности.

Ввожу переменную

$$\displaystyle h=\dot{x}^{2}+\frac{1}{2}\dot{\vartheta}^{2}+\dot{x}\dot{\vartheta}\cos\vartheta-g\cos\vartheta$$

выражаю $$\dot{x}$$:

$$\displaystyle \dot{x}=\frac{-\dot{\vartheta}\cos\vartheta\pm\sqrt{\dot{\vartheta}^{2}\cos^{2}\vartheta-4\left(-g\cos\vartheta-h+\frac{1}{2}\dot{\vartheta}^{2}\right)}}{2}$$

дифференцирую по времени, чтобы получить $$\ddot{x}$$ и подставить его во второе уравнение -- в результате, как нетрудно видеть, в знаменатель попадает корень.

$$\displaystyle \ddot{x}=-\frac{1}{2}\cos\vartheta\ddot{\vartheta}+\frac{1}{2}\sin\vartheta\dot{\vartheta}^{2}\pm\frac{1}{2}\frac{\dot{\vartheta}\ddot{\vartheta}\left(\cos^{2}\vartheta-2\right)-\cos\vartheta\sin\vartheta\dot{\vartheta}^{3}-2g\sin\vartheta\dot{\vartheta}}{\sqrt{\dot{\vartheta}^{2}\left(\cos^{2}\vartheta-2\right)+4g\cos\vartheta+4h}}$$

В начальный момент $$\dot{\vartheta}_{0}=0$$ и корень равен нулю, т.к. выбираем $$h=-g\cos\vartheta_{0}$$. Особенность, конечно же, устранимая (в числителе стоит выражение, умноженное на $$\dot{\vartheta}$$), но проинтегрировать численно не получается.
Последний раз редактировалось cupuyc 28 ноя 2019, 06:37, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
Ian
Сообщений: 5455
Зарегистрирован: 28 июл 2009, 21:00

Численно решить дифур

Сообщение Ian » 07 янв 2014, 14:00

cupuyc писал(а):Source of the post Особенность, конечно же, устранимая
Мне тоже так показалось. Хотя сходу найти предел не получилось. Попробуйте, и я попробую в свободное время.
После устранения доопределением проблем уже нет. можно первый шажок интегрирования делать отдельно(если делает матпакет).Либо вставить его в программу.Либо функцию в правой части уравнения определить через if
Последний раз редактировалось Ian 28 ноя 2019, 06:37, всего редактировалось 1 раз.
Причина: test

balans
Сообщений: 2030
Зарегистрирован: 29 дек 2012, 21:00

Численно решить дифур

Сообщение balans » 07 янв 2014, 18:04

Здравия Вам желаю.
Попытался совместить уравнения.
$$ \begin{pmatrix} 2& cos \theta \\	 cos \theta	& 1\\ \end{pmatrix} \begin{pmatrix} \ddot{x} \\	 \ddot{\theta}\\ \end{pmatrix} = sin \theta \begin{pmatrix} \dot{\theta}^2-2g \dot{\theta}/ \dot{x}\\	 g\\ \end{pmatrix} $$
и
$$ \begin{pmatrix} \dot{x}& \dot{\theta}& \end{pmatrix} \begin{pmatrix} 2& cos \theta \\	 cos \theta	& 1\\ \end{pmatrix} \begin{pmatrix} \dot{x} \\	 \dot{\theta}\\ \end{pmatrix} =2g(cos\theta -cos\theta_0) $$

Получилось
$$\dot{\theta}\dot{x}=g$$
Возможно где-то я допустил ошибка.
Последний раз редактировалось balans 28 ноя 2019, 06:37, всего редактировалось 1 раз.
Причина: test

balans
Сообщений: 2030
Зарегистрирован: 29 дек 2012, 21:00

Численно решить дифур

Сообщение balans » 08 янв 2014, 05:25

balans писал(а):Source of the post
Возможно где-то я допустил ошибка.

Уравнения сходятся. Как обычно, ляпну с бодуна ...
Последний раз редактировалось balans 28 ноя 2019, 06:37, всего редактировалось 1 раз.
Причина: test

cupuyc
Сообщений: 1107
Зарегистрирован: 23 май 2009, 21:00

Численно решить дифур

Сообщение cupuyc » 08 янв 2014, 08:12

Ian, какая-то ерунда получилась. Попробовал вычислить предел $$\frac{\dot{\vartheta}}{\dot{x}}$$. Как я понимаю, этот предел при $$\dot{x}\to0$$, $$\dot{\vartheta}\to0$$ будет равен $$\frac{\ddot{\vartheta}}{\ddot{x}}$$ по теореме Лопиталя. Подставил в уравнения, решил -- получил комплексное число.
Последний раз редактировалось cupuyc 28 ноя 2019, 06:37, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
Ian
Сообщений: 5455
Зарегистрирован: 28 июл 2009, 21:00

Численно решить дифур

Сообщение Ian » 08 янв 2014, 12:35

Там не обязательно комплексное. А $$\sin\theta _0 $$ меньше нуля или больше?
Последний раз редактировалось Ian 28 ноя 2019, 06:37, всего редактировалось 1 раз.
Причина: test

balans
Сообщений: 2030
Зарегистрирован: 29 дек 2012, 21:00

Численно решить дифур

Сообщение balans » 08 янв 2014, 17:36

Извините, что вмешиваюсь. Пытаюсь ковырнуть в матаппарате.
$$\frac {\dot{\theta}^2-2g \alpha-g cos \theta} {-cos \theta \dot{\theta}^2+2g cos \theta \alpha+2g}=\frac {\ddot{x}} {\ddot\theta} }$$

где $$\alpha =\frac {\dot{\theta}} {\dot{x}}$$

Учитывая, что $$\dot {\theta}=0$$ и правило Лопиталя, получилось

$$\frac {-2g \alpha-g cos \theta} {2g cos \theta \alpha+2g}=\frac {1} {\alpha}$$
Далее квадратное уравнение
$$2\alpha^2+3cos\theta \alpha+2=0$$
дискриминант которого
$$D=9 cos^2\theta -16 <0$$.

Получается, что комплексных чисел не избежать. Все ли верно?
Последний раз редактировалось balans 28 ноя 2019, 06:37, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
Ian
Сообщений: 5455
Зарегистрирован: 28 июл 2009, 21:00

Численно решить дифур

Сообщение Ian » 08 янв 2014, 20:01

Я так понял что вы оба одним путем шли. Да, у меня тоже это противоречие выходит в нуле, что показывает, что $$\dot\theta (0)=0,\dot x(0)=0$$ невозможно кроме случая $$\theta_0=0$$, тогда получаются
$$\ddot\theta (0)=0,\ddot x(0)=0$$. И если такой расклад Вам нужен, то стартуйте с $$\Delta t$$ и каких-то малых, но ненулевых начальных условий Рунге-Куттой
Последний раз редактировалось Ian 28 ноя 2019, 06:37, всего редактировалось 1 раз.
Причина: test


Вернуться в «Математический анализ»

Кто сейчас на форуме

Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 9 гостей