2014 dxdy logo

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

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


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему
 
 Метод конечных разностей, граничные условия
Сообщение19.03.2021, 23:17 
Аватара пользователя


05/05/11
511
МВТУ
Знакомлюсь с методом конечных разностей. Для примера решал задачку типа уравнения колебаний типа $x'' + ax' + bx = c$ с нулевыми начальными условиями, с ним все получилось хорошо. Но вот для уравнения порядком выше уже так просто не получается.
Для примера взял уравнение:
$x(t)'''' - kx(t)' = C$


с начальными условиями:
$x(0) = x''(0) = x'''(0) = x''''(0) = 0$

$x'(0) = K$


Задаю конечные разности, индекс вверху около $x$ не путать с показателем степени, не знаю почему, но видимо так принято - шаг по времени писать вверху:
$x'^i = \cfrac{x^{i+1} - x^{i-1}}{2h_t}$

$x''^i = \cfrac{x^{i+1} - 2x^{i} + x^{i-1}}{h_t^2}$

$x''''^i = \cfrac{x^{i+2} - 4x^{i+1} + 6x^{i} - 4x^{i-1} + x^{i-2}}{h_t^4}$


Дальше составляю систему уравнений.

Вот тут первый вопрос. Когда решал уравнение колебаний, я составлял систему от $i = 0...(n-1)$ (где $n$ есмь количество точек, для конкретного примера взял $n=5$). Для определения "отрицательных" иксов (которые возникают при $i = 0$, когда $x^{i-1} = x^{-1}$) я использовал приём, описанный тут (формула 11, страница 148), а именно $x^{-1} = x^1$. На основании чего такое допустимо мне не понятно, но это прокатило, и значения сеточной функции попали пуля-в-пулю на аналитическое решение. И по количеству уравнений получилось все как и должно быть - в нулевой точке я значение знаю из начальных условий, а в остальных точка $x^1...x^5$ значения я нашел решив систему уравнений, которая получилась для $i = 0...4$ (пять уравнений - пять неизвестных).

А вот для уравнения четвертого порядка у меня уже такой "красоты" не получилось. Если начинать систему с нуля и писать такие же пять уравнений для $i = 0...(n-1)$, то я ухожу в отрицательную область уже на два шага в первом уравнении ($i = 0$):

$\cfrac{x^{2} - 4x^{1} + 6x^{0} - 4x^{-1} + x^{-2}}{h_t^4} -\cfrac{x^{1} - 2x^{0} + x^{-1}}{2h_t/k} = C$

и на шаг во втором уравнении ($i = 1$):
$\cfrac{x^{3} - 4x^{2} + 6x^{1} - 4x^{0} + x^{-1}}{h_t^4} -\cfrac{x^{2} - 2x^{1} + x^{0}}{2h_t/k} = C$


Можно ли тут использовать такой же приём типа $x^{-2} = x^{2}$? Я так делать не рискнул :-) потому что правомерность такой подстановки мне не понятна. Решил сделать так - написать систему уравнений для $i = 1...(n-1)$.
Тогда для $i=1$ в первом уравнении я уйду в отрицательном направлении по сетке только на единицу, где я уже уверен, что $x^{-1} = x^1$ прокатывает. Для $n-1$ шага, т.е. для шага номер $4$ я получу:

$\cfrac{x^{6} - 4x^{5} + 6x^{4} - 4x^{3} + x^{2}}{h_t^4} -\cfrac{x^{5} - 2x^{4} + x^{3}}{2h_t/k} = C$


Число точек у меня $n = 5$, так что $x^6$ мне не в кассу. Тут пользуюсь тем же приёмом, который описан тут в том же месте, а именно $x^{n+1} = x^{n-1}$, таким образом $x^6$ исключаю.
Почти всё хорошо, кроме того что у меня пять переменных $(x^1 ... x^5)$, а уравнений всего $4$, ведь составлять я их начал с $i = 1$ и до $i = 4$. Чтобы получить недостающее уравнение, я беру граничное условие $x'(0) = \operatorname{const}$ и записываю его в следующей форме:

$x'(0) = \cfrac{x^1 - x^0}{h_t} = \cfrac{x^1 - 0}{h_t} = K \ \ \ \to \ \ \ x^1 = h_tK$

Вот и пятое уравнение.

Решаю систему (в последнем обратить внимание что $x^6$ отсуствует, его заменило $x^4$, а во втором отсуствует $x^{-1}$, его заменило $x^1$):
$\begin{cases}
(i = ?) \ \  x^1 = h_tK \\
\\
(i = 1) \ \cfrac{x^{3} - 4x^{2} + 6x^{1} - 4x^{0} + x^{1}}{h_t^4} -\cfrac{x^{2} - 2x^{1} + x^{0}}{2h_t/k} = C \\
\\
(i = ...) ... \\ 
\\
(i = 4) \  \cfrac{x^{4} - 4x^{5} + 6x^{4} - 4x^{3} + x^{2}}{h_t^4} -\cfrac{x^{5} - 2x^{4} + x^{3}}{2h_t/k} = C
\end{cases}$

Вроде бы 5 уравнений, 5 неизвестных, но не решается. Вернее решается, но на аналитическое решение не ложится. Я конечно подозреваю, что я мог просто налажать при написании программы в матлабе, но честно говоря все эти подстановки типа $x^{n+1} = x^{n-1}$ меня наводят на мысль, что я чего-то не понимаю.
Спасибо за внимание, не дайте умереть дураком :D

 Профиль  
                  
 
 Re: Метод конечных разностей, граничные условия
Сообщение19.03.2021, 23:41 
Заслуженный участник


09/05/12
25179
phys в сообщении #1510106 писал(а):
Для примера взял уравнение:
$x(t)'''' - kx(t)' = C$

с начальными условиями:

$x(0) = x''(0) = x'''(0) = x''''(0) = 0$

$x'(0) = K$
Во-первых, вы явно перестарались с начальными условиями, их слишком много. Во-вторых, откройте для себя сведение ОДУ высших порядков к системе уравнений первого порядка, это существенно проще. Формально действовать так, как вы пытаетесь, тоже можно, но тогда нужно писать разностные формулы для производных высших порядков не "как получится", понадобятся в том числе и несимметричные варианты, в итоге проблем в виде потенциальных источников ошибок будет много, а толку - никакого.

Ну и хотелось бы понять, при чем тут заявленные в заголовке "граничные условия". Мне их в тексте сообщения найти не удалось. :-)

 Профиль  
                  
 
 Re: Метод конечных разностей, граничные условия
Сообщение20.03.2021, 13:47 
Аватара пользователя


05/05/11
511
МВТУ
Да, я имел ввиду начальные условия, за много лет без практики забыл терминологию.
$x''''$ это конечно лишнее, просто опечатка.

 Профиль  
                  
 
 Re: Метод конечных разностей, граничные условия
Сообщение20.03.2021, 15:33 
Аватара пользователя


05/05/11
511
МВТУ
А что скажете на счет условий $x^{i-1} = x^{-1}$ и $x^{n+1} = x^{n-1}$, им есть какое-то обьяснение?

 Профиль  
                  
 
 Re: Метод конечных разностей, граничные условия
Сообщение20.03.2021, 15:38 
Заслуженный участник
Аватара пользователя


23/08/07
5501
Нов-ск
phys в сообщении #1510106 писал(а):
Знакомлюсь с методом конечных разностей. Для примера решал задачку типа уравнения колебаний типа $x'' + ax' + bx = c$ с нулевыми начальными условиями, с ним все получилось хорошо.

Попробуйте менять знаки у коэффициентов уравнения, возьмите побольше число узлов $n$. Всегда хорошо?

 Профиль  
                  
 
 Re: Метод конечных разностей, граничные условия
Сообщение20.03.2021, 15:54 
Заслуженный участник


09/05/12
25179
phys в сообщении #1510182 писал(а):
А что скажете на счет условий $x^{i-1} = x^{-1}$ и $x^{n+1} = x^{n-1}$, им есть какое-то обьяснение?
Так там это именно граничные условия, которых у вас нет. В данном случае - утверждения, что на границах балки первые координатные производные нулевые, приспособленные под конкретную вычислительную схему (см. первое уравнение во второй строке в (7)).

Только в данной статье решается дифференциальное уравнение в частных производных с начальными и граничными условиями, а вы пытаетесь решать задачу Коши для обыкновенного дифференциального уравнения. Соответственно, идея использовать первое как руководство для второго... мягко говоря, неразумна (это даже если отвлечься от того, что осваивать что-то лучше по учебникам, а не по статьям в "мусорных сборниках").

В общем, если не быть слишком политкорректным... пока что вы откровенно валяете дурака, тщательно пытаясь решать свою задачу, пожалуй, наименее пригодными для ее решения способами. Соответственно, наиболее разумная линия поведения - выкинуть все это и начать сначала, но нормально (как вариант - сменить задачу на ту, которую имеет смысл решать желаемым вами способом).

 Профиль  
                  
 
 Re: Метод конечных разностей, граничные условия
Сообщение21.03.2021, 17:03 
Аватара пользователя


05/05/11
511
МВТУ
Pphantom в сообщении #1510108 писал(а):
Во-вторых, откройте для себя сведение ОДУ высших порядков к системе уравнений первого порядка, это существенно проще. Формально действовать так, как вы пытаетесь, тоже можно, но тогда нужно писать разностные формулы для производных высших порядков не "как получится", понадобятся в том числе и несимметричные варианты, в итоге проблем в виде потенциальных источников ошибок будет много, а толку - никакого.

Ну и хотелось бы понять, при чем тут заявленные в заголовке "граничные условия". Мне их в тексте сообщения найти не удалось. :-)

Да, спасибо, это действительно значительно проще, и матрица получается менее мудрёная.

(Ура, получилось)

Синяя это реперное решение решателем ode45, а оранжевая это решение системы уравнений первого порядка.
100 точек
Изображение
500 точек
Изображение


Pphantom в сообщении #1510185 писал(а):
приспособленные под конкретную вычислительную схему (см. первое уравнение во второй строке в (7))

Так я и предполагал. Будет считать что это опыт, теперь я знаю как делать не нужно :D

Pphantom в сообщении #1510185 писал(а):
идея использовать первое как руководство для второго... мягко говоря, неразумна

В конечном итоге мне хотелось бы решить уравнение в частных производных, с начальными и граничными условиями, чертвертого порядка (уравнение колебаний балки). Впрцинипе, МКР для этого можно и не знать - сейчас есть MATLAB, встроенные в него решатели, есть partial differential equation toolbox и куча справки к нему, и тд. Но браться за задачу, не понимая её основ это неправильный подход. Для начала хочу разобратся в самом простом - решить уравнение колебаний, т.е. уравнение второго порядка с начальными условиями, прям по полной пограмме - со составлением всех разностей и матрицы в рукопашную. Потом попробовать поднять порядок (по идее, при сведении к системе уравнений первого порядка разницы не будет, на сколько я вижу). А дальше переходить к частным производным.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: Mikhail_2000, Mikhail_K


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group