2014 dxdy logo

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

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




 
 Неявная схема для уравнения теплопроводности(метод прогонки)
Сообщение05.11.2019, 00:04 
Здравствуйте,
необходимо решить задачу теплопроводности используя метод прогонки.
Условия задачи:
$$\frac{\partial u}{\partial t} - \frac{\partial^{2} u}{\partial x^{2}} = sinx$$
Граничные условия:
$$ 0 < x < 1$$
$$ u(x,0) = cosx$$
$$ u(0,t) = 1$$
$$\frac{\partial u}{\partial x} (1, t) = 1$$.

Код:
Код:
N = 10 # максимальное число шагов по х
K = 500 # максимальное число шагов по t
l = 1 # значение х на правой границе
h = l / N # шаг сетки по х
T = 1 # максимальное значение времени t на правой границе
t = T / K # шаг сетки по времени

# зададим сетку
x_i = np.arange(0, 1, h) # значения в узлах по х
t_j = np.arange(0, 1, t) # значение в узлах по t

hi_1 = 0
mu_1 = 1
hi_2 = 1
mu_2 = h * t_j
A_i = t / h**2
B_i = t / h**2
C_i = 1 + (2 * t/h**2)
F_i = t * np.sin(x_i)

alpha_i = []
beta_i = []
y_i = []

for i in range(len(x_i)):
    alpha_i.append(0)
    beta_i.append(0) 
    y_i.append(0)

alpha_i[0] = hi_1
beta_i[0] = mu_1

for i in range(1, len(x_i)):
    alpha_i[i] = B_i / (C_i - alpha_i[i-1] * A_i)
    beta_i[i] = (A_i * beta_i[i-1] + F_i[i]) / (C_i - alpha_i[i - 1] * A_i)
   

for j in range(len(t_j)):
    y_i[len(x_i)-1] = (mu_2[j] + hi_2 *beta_i[2])/ (1 - hi_2 * alpha_i[len(x_i)-1])


for i in range(len(x_i) - 1, 1, -1):
    y_i[i - 1] = alpha_i[i - 1] * y_i[i] + beta_i[i - 1]


Мне не совсем понятно правильно ли я вообще подхожу к решению, ведь я не учитываю временной шаг при расчетах. Помогите, пожалуйста, разобраться или может есть какая-то методичка где похожая задача подробно рассмотрена, так как в сети ничего подходящего не нашла.

 
 
 
 Re: Неявная схема для уравнения теплопроводности(метод прогонки)
Сообщение05.11.2019, 00:34 
Вообще-то будет существенно полезнее, если вы вместо кода (или в дополнение к коду) в формульном виде запишете, что именно вы пытаетесь запрограммировать.

 
 
 
 Re: Неявная схема для уравнения теплопроводности(метод прогонки)
Сообщение05.11.2019, 01:25 
Система, которую нужно решить методом прогонки

Изображение

Прогоночные коэффициенты
$\alpha_{0}=\chi_{1}$
$\beta_{0}=\mu_{1}$
$\beta_{i+1}=\frac{A_{i}\beta_{i}+F_{i}}{C_{i}-\alpha_{i}A_{i}}$
$\alpha_{i+1}=\frac{B_{i}}{C_{i}-\alpha_{i}A_{i}}$
$y_{N}=\frac{\mu_{2}+\chi_{2}\beta_{N}}{1-\chi_{2}\alpha_{N}}$
$y_{i}=\alpha_{i}y_{i+1}+\beta_{i+1}$

Еще раз про, то что мне не понятно:
1. Как быть с тем, что в $F_{i}$ входит неизвестное $y_{i}^{j}$ ?
2. Как вообще реализовать проход по сетке? Какая она должна быть одномерная? Двумерная (время и шаг по икс)? Если одномерная, то время не учитывается и это странно.
3. Если сетка двумерная, то куда записывать $\beta_{i}$ и $\alpha_{i}$ в отдельный массив? Тогда программа будет слишком громоздкой.

Заранее благодарю за помощь!

 
 
 
 Re: Неявная схема для уравнения теплопроводности(метод прогонки)
Сообщение05.11.2019, 01:59 
Э, нет, это не вариант. Стащить текст из учебника/методички - это не то, что требуется. Перепишите это сами, и заодно подставьте вашу конкретную задачу, иначе на эти формулы можно будет смотреть бесконечно долго и так ничего и не понять.

 
 
 
 Posted automatically
Сообщение05.11.2019, 01:59 
 i  Тема перемещена из форума «Программирование» в форум «Карантин»
по следующим причинам:

- неправильно набраны формулы (краткие инструкции: «Краткий FAQ по тегу [math]» и видеоролик Как записывать формулы).

Исправьте все Ваши ошибки и сообщите об этом в теме Сообщение в карантине исправлено.
Настоятельно рекомендуется ознакомиться с темами Что такое карантин и что нужно делать, чтобы там оказаться и Правила научного форума.

 
 
 [ Сообщений: 5 ] 


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