Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.fds-net.ru/showflat.php?Number=8348624&src=arc&showlite=
Дата изменения: Unknown
Дата индексирования: Tue Apr 12 11:52:34 2016
Кодировка: Windows-1251
[closed] Уравнение теплопроводности - Public forum of MSU united student networks
Root | Google | Yandex | Mail.ru | Kommersant | Afisha | LAN Support
  
General Discussion >> Study (Archive)

Страницы: 1
udav
enthusiast

Рег.: 11.06.2004
Сообщений: 267
Рейтинг: 0
  [closed] Уравнение теплопроводности
      12.02.2009 18:59
 

Надо численно решить простейшее уравнение теплопроводности:
code:
u(x, t); 0 < x < 1 du / dt = d2u / dx2 u(0, t) = u(1, t) = 0; u(x, 0) = x(1 - x);


Я составил разностную схему и написал код.
На каждой итерации по времени вычисляю
max |du / dt - d2u / dx2|.

Оказывается, что на первой итерации это выражение равно 0,5!!!!
Правда, эта величина потом убывает и она не зависит от шага.
Шаг по пространству h = 0.01, а шаг по времени равен 0.25 * h * h

Почему у меня такая большая ошибка?



Редактировал udav (13.02.2009 00:54)
udav
enthusiast

Рег.: 11.06.2004
Сообщений: 267
Рейтинг: 0
  Re: Уравнение теплопроводности [re: udav]
      12.02.2009 19:00
1

Вот код на матлабе
code:
clear; h = 0.01; tau = 0.25 * h * h; x0 = 0.0; x1 = 1.0; n = fix((x1 - x0) / h) + 1; grid = [x0 : h : x1]; prevU = zeros(n, 1); for i = 1 : n x = (i - 1) * h; prevU(i) = x * (1.0 - x); end u = zeros(n, 1); figure; hold on; plot(grid, prevU); iteration = 1; while 1 u(1) = 0; u(n) = 0; for i = 2 : n - 1 laplace = (prevU(i - 1) - 2 * prevU(i) + prevU(i + 1)) / (h * h); u(i) = prevU(i) + tau * laplace; end error = 0; for i = 2 : n - 1 dudt = (u(i) - prevU(i)) / tau; d2udx2 = (u(i - 1) - 2 * u(i) + u(i + 1)) / (h * h); error = max(error, abs(dudt - d2udx2)); end if mod(iteration, 100) == 0 plot(grid, u); pause(0.025); end prevU = u; iteration = iteration + 1; end



_Seti
Добрые руки

Рег.: 18.10.2003
Сообщений: 3164
Рейтинг: 2131
  Re: Уравнение теплопроводности [re: udav]
      12.02.2009 20:44
 

сделай замену переменных du/dx = v и решай систему уравнений первого порядка

Страницы: 1

General Discussion >> Study (Archive)

Дополнительная информация
0 зарегистрированных и 0 анонимных пользователей просматривают этот форум.

Модераторы:  Basilio, The_Nameless_One 

Печать темы

Права
      Вы можете создавать новые темы
      Вы можете отвечать на сообщения
      HTML отключен
      UBBCode включен

Рейтинг:
Просмотров темы:

Переход в