Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.62/29: Рейтинг темы: голосов - 29, средняя оценка - 4.62
1 / 1 / 0
Регистрация: 26.10.2015
Сообщений: 59

Метод явных сеток для уравнения диффузии

26.10.2015, 17:45. Показов 6912. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Имеется решение параболического уравнения диффузии методом явных сеток в Matlab. Программа представлена ниже. Распределение концентрации выводится 2D-графиком. Помогите пожалуйста переделать код программы, чтобы в итоге распределение выводилось трехмерным графиком (добавить ось времени).
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
% Метод сеток для уравнения диффузии
c=[];x=[];
n=9;                                         % желаемое число кривых при разных t
q=2.^n;                                    %  число шагов по времени
h=1./20;                                   % шаг по x
d=.05;                                      % коэффициент диффузии 
t=.01;                                       % шаг по времени
a=d.*t./h.^2;                            % параметр
v=0;                                       % скорость конвективного переноса
w=v.*t./h;                                 % параметр
% Начальные условия (выберите, измените)
c(1,:)=[0 0 0 0 0 0 0 .2 .2 .2 .2 .2 .2 .2 0 0 0 0 0 0 0];
% c(1,:)=[0 .1 .2 .3 .4 .5 .6 .7 .8 .9 1 .9 .8 .7 .6 .5 .4 .3 .2 .1 0];
for j=1:21
x(j)=(j-1)./20;
end
for i=1:q                                 % время
for j=2:20                               % положение по х
% Варианты граничных условий - выберите
c(i,1)=0;c(i,21)=0;
% c(i,1)=c(i,2)./(1+v.*h./d);c(i,21)=c(i,20)./(1-v.*h./d);
% c(i,1)=0;c(i,21)=c(i,20)./(1-v.*h./d);
% c(i,21)=0;c(i,1)=c(i,2)./(1+v.*h./d);
% Введение внешнего источника в точку j=1
if j==11
m(i,j)=0;                                % введите 1, если есть
else m(i,j)=0;end
% Собственно процедура расчета
c(i+1,j)=-w.*(c(i,j+1)-c(i,j))+c(i,j)+a.*(c(i,j+1)-2.*c(i,j)+c(i,j-1))+m(i,j).*t;
end;end
% Графический вывод результатов
figure(1)
plot(x,c(1,:));hold on;axis([0 1 0 .25]);pause(2);
for k=1:n
p=2.^k;t1=t.*p;
plot(x,c(p,:),'r');axis([0 1 0 .25]);
pause(1);
% hold off                      % удалите  "%", если удаляем предыд. кривые
hold on                          % вставьте "%", если удаляем предыд. кривые
end
xlabel('position')
ylabel('concentration')
hold off
Добавлено через 6 часов 50 минут
Помогите пожалуйста!У самого никак не получается..
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.10.2015, 17:45
Ответы с готовыми решениями:

Метод сеток для решения уравнения колебания струны
Здравствуйте! Села разбираться с алгоритмом метода сеток. Вроде в голове что то отложилось, стала реализовывать в паскале и поняла, что...

Используя метод сеток, составить решение смешанной задачи для дифференциального уравнения параболического типа
Используя метод сеток, составить решение смешанной задачи для дифференциального уравнения параболического типа при заданных начальных...

Решение краевой задачи для дифференциального уравнения методом сеток
Мне в университете задали данную программу написать. но к сожалению на паре мы не успели пройти этот метод. не могу найти точный пример...

28
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
28.10.2015, 13:21
Студворк — интернет-сервис помощи студентам
Похоже на правду

Не по теме:

*посиди с мое на форуме - еще и не такое знать будешь :jokingly:

0
1 / 1 / 0
Регистрация: 26.10.2015
Сообщений: 59
28.10.2015, 14:10  [ТС]
понятно!
А вот еще вопрос:можно ли,добавив какой-нибудь код небольшой, оставив конечный правильный вариант не тронутым, выводить график вида,который вы мне в начале сделали(через surf)?То есть либо что-то убирать с помощью "%" и добавить часть другого кода,либо вообще чтобы одновременно выводились два таких разных графика?)
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
28.10.2015, 14:50
Если я правильно понял, просто добавь в конце:
Matlab M
1
2
3
4
5
6
7
8
[X,T] = meshgrid(x,t);
figure
surf(X,T,c,'facealpha',0.7)
grid on
shading interp
xlabel('position')
ylabel('time')
zlabel('concentration')
и оно будет рисовать как линии уровня так и поверхность
1
1 / 1 / 0
Регистрация: 26.10.2015
Сообщений: 59
28.10.2015, 18:07  [ТС]
да,все рисует)Спасибо.
0
1 / 1 / 0
Регистрация: 26.10.2015
Сообщений: 59
28.10.2015, 19:30  [ТС]
У меня опять вопрос!)Заметил не очень хорошую штуку,можно ли ее как-то исправить.

Вот ось "position", как сделать,чтобы на месте 1 был 0. То есть отсчет шел с 0 до 1,а не наоборот как на рисунке..?
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
28.10.2015, 20:08
хм... у меня поверхность получается чуть иначе, как тут (возможно это зависит от версии матлаба)
но добавь в конец, после surf:
view(-40,30)
0
1 / 1 / 0
Регистрация: 26.10.2015
Сообщений: 59
28.10.2015, 20:14  [ТС]
у меня так же,как у Вас получается..Только вот когда я начинаю вращать поверхность,чтобы с другой стороны рассмотреть, ось становится как на моем рисунке предыдущем..

Добавлено через 2 минуты
view на следующей строке после surf вставить?Просто ничего не изменилось вроде..
0
 Аватар для Зосима
5246 / 3574 / 379
Регистрация: 02.04.2012
Сообщений: 6,477
Записей в блоге: 18
28.10.2015, 20:22
view выставляет вид после расчета, т.е. у тебя изначально отображалось как у меня, то эффекта не заметно
а вот как сделать чтобы при вращении оно становилось как хочется - я не знаю

Не по теме:

хотя это верно, при развороте эта часть графика как была при х=1 так и осталась

0
1 / 1 / 0
Регистрация: 26.10.2015
Сообщений: 59
28.10.2015, 20:25  [ТС]
понятно,спасибо!Оставлю, значит, как есть!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.10.2015, 20:25

Применение конечно-разностной схемы для решения дифференциального уравнения турбулентной диффузии
Добрый день, форумчане! Помогите пожалуйста разобраться. Я программист. Сейчас занимаюсь разработкой программы для моделирования...

Найти методом сеток решение задачи Дирихле для уравнения Лапласса в квадрате со стороной, равной единице
Добрый день. Пытался разобраться в примере, данный в пособие по скайлабу "Алексеев Е.Р. и Чеснокова О.В." данный на 148 странице. ...

Дирихле (метод сеток)
Что то ничего не понял, сделал по образцу в классе. Нужна помощь, явно что то напутал. ...

Аппроксимация краевых условий гиперболического уравнения в методе сеток
Нужно решить гипер. уравнение методом сеток с помощью неявной схемы с весами. Вид уравнения: \dfrac{\partial^2u}{\partial...

Решение одномерного уравнения теплопроводности (методом сеток с помощью явной схемы)
по численным методам задали задачу, методом сеток с помощью явной схемы решить уравнение теплопроводности! как это сделать на фортране?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru