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
5494
Нов-ск
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 ] 

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



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

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


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

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