2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2  След.
 
 Метод конечных разностей для второй производной...
Сообщение28.10.2010, 14:01 
У меня есть такое уравнение: $\ddot{x}+\omega^2x=0$ которое нужно приближённо считать методом конечных разностей. Я посмотрел описание этого метода: Метод конечных разностей
но там производная первого порядка заменяется на конечную разность, а как быть в случае со вторым порядком производной, как в моём случае?

 
 
 
 Re: Метод конечных разностей для второй производной...
Сообщение28.10.2010, 14:07 
Аватара пользователя
Никаких методов не знаю, но, ну ёлки, ну замените производную второго порядка на конечно-разностное приближение, что не так?

 
 
 
 Re: Метод конечных разностей для второй производной...
Сообщение28.10.2010, 14:11 
Аватара пользователя
JustAMan в сообщении #367165 писал(а):
У меня есть такое уравнение: $\ddot{x}+\omega^2x=0$ которое нужно приближённо считать методом конечных разностей.
Помимо уравнения есть что-нибудь? Начальные условия, например?

 
 
 
 Re: Метод конечных разностей для второй производной...
Сообщение28.10.2010, 14:19 
ИСН в сообщении #367168 писал(а):
Никаких методов не знаю, но, ну ёлки, ну замените производную второго порядка на конечно-разностное приближение, что не так?

Да, я пробовал это сделать. Проблема у меня там в том, что в формуле приближённого вычисления второй производной:
$y''_i = \frac{ y_{i2} - 2 * y_{i1} + y_i }{ h^2 }$
непонятно откуда брать коэффициент $y_{i1}$? То ли это имеется ввиду, что следующий коэффициент ($y_{i2}$) вычисляется на основе предыдущего (именно он зовётся в формуле $y_{i1}$) и на основе перед-предыдущего ($y_i$).. Не так ли случаем?

-- Чт окт 28, 2010 15:21:31 --

TOTAL в сообщении #367172 писал(а):
Помимо уравнения есть что-нибудь? Начальные условия, например?

А, да, забыл упомянуть их: x(0) = A, x'(0) = 0.

 
 
 
 Re: Метод конечных разностей для второй производной...
Сообщение28.10.2010, 14:38 
Аватара пользователя
Именно так: надо два предыдущих.

 
 
 
 Re: Метод конечных разностей для второй производной...
Сообщение28.10.2010, 15:00 
Аватара пользователя
JustAMan в сообщении #367178 писал(а):
А, да, забыл упомянуть их: x(0) = A, x'(0) = 0.

Теперь решайте последовательно
$$\frac{x_{j+1}-x_{j}}{\tau}=\frac{1}{2}(v_{j+1}+v_{j})$$
$$\frac{v_{j+1}-v_{j}}{\tau}=-\frac{1}{2}\omega^2(x_{j+1}+x_{j})$$
$x_0=A, \; v_0=0$

 
 
 
 Re: Метод конечных разностей для второй производной...
Сообщение28.10.2010, 15:21 
JustAMan в сообщении #367178 писал(а):
$y''_i = \frac{ y_{i2} - 2 * y_{i1} + y_i }{ h^2 }$

Запись плохая, надо так:

$\dfrac{ y_{i+1} - 2\,y_{i} + y_{i-1}}{ h^2 }+\omega^2y_{i}=0\,,$

откуда каждое следующее $y_{i+1}$ и выражается через два предыдущих.

JustAMan в сообщении #367178 писал(а):
А, да, забыл упомянуть их: x(0) = A, x'(0) = 0.

, т.е. для запуска процедуры надо знать два начальных значения: $y_{0}$ и $y_{1}$.

Простейший способ аппроксимации: $y_{0}=A$ (естественно) и $\dfrac{y_1-y_0}{h}=0$, т.е. $y_1=y_0$. Но это не очень хорошо -- первая производная аппроксимируется несимметрично, что ведёт к потере точности. Разумнее добавить фиктивный узел слева и узловое значение в нём $y_{-1}$. Тогда начальное условие на производную аппроксимируется как $\dfrac{y_1-y_{-1}}{2h}=0$, т.е. $y_{-1}=y_1$, что в сочетании с известным $y_{0}$ и основным уравнением $\dfrac{ y_{1} - 2\,y_{0} + y_{-1}}{ h^2 }+\omega^2y_{0}=0$ даёт искомое $y_{1}$.

(можно и как у TOTAL, но там логика сложнее)

 
 
 
 Re: Метод конечных разностей для второй производной...
Сообщение28.10.2010, 16:33 
Спасибо большое вам!

ewert, отдельное спасибо за такой подсчёт $y_1$! :-) Расписал на бумаге всё это - вроде бы разобрался!

 
 
 
 Re: Метод конечных разностей для второй производной...
Сообщение02.11.2010, 06:34 
Кстати, у меня тут получается какая-то очень странная ситуация.. Если брать уравнение гармонического колебания:

$\[\ddot x = \frac{{ - ({k_2} + {k_1})}}
{m}x\]
$

где k1 и k2 - жёсткость каждой пружины. При использовании метода конечных разностей, у меня получается такое рекурретное выражение:

$x_2 = 2*x_1 - x_0 + h^2 * (-k2-k1)/m * x_0$

Прикинул в экселе что примерно получится и построил график. Получается какая-то странная быстро возрастающая линия) Тут на скриншоте у меня и коэффициенты видны, и формула (по ячейкам), которая простраивается.

Почему-то линия у меня загибается вниз и уходит туда в бесконечность: http://s002.radikal.ru/i198/1011/7c/df546cd541da.gif
Не подскажете ли почему такое может быть? Может с коэффициентами что-то не то?

Для тех, кто захочет поиграться с формулами этого excel-приложения, вот оно (формат - OpenOffice): http://webfile.ru/4866410

 
 
 
 Re: Метод конечных разностей для второй производной...
Сообщение02.11.2010, 08:33 
Аватара пользователя
JustAMan в сообщении #369131 писал(а):
Кстати, у меня тут получается какая-то очень странная ситуация.. Если брать уравнение гармонического колебания:

$\[\ddot x = \frac{{ - ({k_2} + {k_1})}}
{m}x\]
$

где k1 и k2 - жёсткость каждой пружины. При использовании метода конечных разностей, у меня получается такое рекурретное выражение:

$x_2 = 2*x_1 - x_0 + h^2 * (-k2-k1)/m * x_0$

Прикинул в экселе что примерно получится и построил график. Получается какая-то странная быстро возрастающая линия) Тут на скриншоте у меня и коэффициенты видны, и формула (по ячейкам), которая простраивается.

Почему-то линия у меня загибается вниз и уходит туда в бесконечность:

$x_2 = 2*x_1 - x_0 + h^2 * (-k2-k1)/m * x_0$ замените на $x_2 = 2*x_1 - x_0 + h^2 * (-k2-k1)/m * x_1$
У Вас в программе $(-k2+k1),$ а надо $(k2+k1).$




Кроме того, вместо $\displaystyle \frac{ x_{i+1} - 2x_{i} + x_{i-1}}{ h^2 }=-\frac{k2+k1}{m} \;\; x_{i}$
на всякий случай используйте $\displaystyle \frac{ x_{i+1} - 2x_{i} + x_{i-1}}{ h^2 }=-\frac{k2+k1}{m} \;\; \frac{ x_{i+1} + 2x_{i} + x_{i-1}}{ 4 }$

 
 
 
 Re: Метод конечных разностей для второй производной...
Сообщение02.11.2010, 10:16 
TOTAL в сообщении #369152 писал(а):
на всякий случай используйте

зачем?

 
 
 
 Re: Метод конечных разностей для второй производной...
Сообщение02.11.2010, 10:42 
Аватара пользователя
ewert в сообщении #369165 писал(а):
TOTAL в сообщении #369152 писал(а):
на всякий случай используйте

зачем?
Схема получается не условно, а абсолютно устойчивой.

 
 
 
 Re: Метод конечных разностей для второй производной...
Сообщение02.11.2010, 11:25 
TOTAL в сообщении #369173 писал(а):
Схема получается не условно, а абсолютно устойчивой.

Это что, при больших шагах? Так там в любом варианте филькина грамота будет получаться, и неустойчивость в этом случае даже полезна -- сразу выявит, что шаг выбран неудачно.

 
 
 
 Re: Метод конечных разностей для второй производной...
Сообщение02.11.2010, 14:09 
Аватара пользователя
Вообще, можно свести к системе двух уравнений первого порядка, если ввести вторую неизвестную функцию $y=\dot x$:
$\begin{cases}\dot x=y\text{,}\\ \dot y=-\omega^2 x\end{cases}$
с начальными условиями $x(0)=A, y(0)=0$.
И уже к этой системе применять разностную схему.

Или задание требует применять разностную схему непосредственно к уравнению второго порядка?

 
 
 
 Re: Метод конечных разностей для второй производной...
Сообщение02.11.2010, 15:02 
Someone в сообщении #369220 писал(а):
Или задание требует применять разностную схему непосредственно к уравнению второго порядка?

Я так понимаю, главное, чтобы работало) Ну и научиться работать с разностями по отношению ко второму порядку. Если не получится со вторым - будем уменьшать) Спасибо за метод!


TOTAL в сообщении #369152 писал(а):
$x_2 = 2*x_1 - x_0 + h^2 * (-k2-k1)/m * x_0$ замените на $x_2 = 2*x_1 - x_0 + h^2 * (-k2-k1)/m * x_1$
У Вас в программе $(-k2+k1),$ а надо $(k2+k1).$

Кроме того, вместо $\displaystyle \frac{ x_{i+1} - 2x_{i} + x_{i-1}}{ h^2 }=-\frac{k2+k1}{m} \;\; x_{i}$
на всякий случай используйте $\displaystyle \frac{ x_{i+1} - 2x_{i} + x_{i-1}}{ h^2 }=-\frac{k2+k1}{m} \;\; \frac{ x_{i+1} + 2x_{i} + x_{i-1}}{ 4 }$

Спасибо! Проделал, пока что, до последней формулы. А этот случай, он сильно изменит ход вычисления?
У меня сейчас линия развернулась в обратную сторону и стала похожа на экспоненту: http://s010.radikal.ru/i314/1011/cb/a73290249569.gif
(там два графика - захватывается разное количество точек, во втором в два раза больше)
вот исходник: http://webfile.ru/4867642

Тут ведь получится синусоида должна? А у меня ерунда какая-то получается :) Не подскажите, почему такое получается?

 
 
 [ Сообщений: 21 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group