Задачи №2 и 13

2019-05-12СтудИзба

Описание файла

Документ из архива "Задачи №2 и 13", который расположен в категории "". Всё это находится в предмете "основы математического моделирования (омм)" из 6 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Онлайн просмотр документа "Задачи №2 и 13"

Текст из документа "Задачи №2 и 13"

Первое задание

Задача №2

Постановка задачи:

Используя схему бегущего счета и итерационные методы решить задачу:

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

Построим характеристики для t0=0 и для различных x0 (сплошные линии) и для x0=0 и различных t0 (пунктирные линии). При этом уравнение примет вид

В результате получим следующее семейство характеристик :

Как видно, на интервале характеристики не пересекаются, следовательно нет опрокидывания волны. Решение будем строить на временном интервале от 0 до 2.

Перейдем теперь к построению разностной схемы. Введем разностную сетку:

Здесь N – число узлов по х, τ – шаг по времени.

Перепишем первое уравнение исходной системы в дивергентном виде:

Введем сеточную функцию yij=ũ(xi,yj). Разностная аппроксимация уравнения в точке (xi+hx/2,tj+τ/2) выглядит следующим образом:

Для граничных и начальных условий:

В данном случае используется четырехточечный шаблон:

Раскладывая u(x,t) в ряд Тейлора в центре ячейки можно получить, что невязка равна O(τ2+h2), то есть порядок аппроксимации данной схемы равен 2.

Устойчивость схемы доказывается с помощью принципа максимума. Запишем двуслойную разностную схему в виде

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

, C = const

И устойчива по правой части, если

Зафиксируем решение на исходном слое и внесём погрешность в правую часть. Тогда погрешность на новом слое

Отсюда

выбираем узел и заменяем все величины их максимумами

Отсюда с учётом второго неравенства следует, что , то есть схема устойчива по правой части.

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

при

при n = 0 и n = N

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

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

Введем функцию ):

Значение функции ŷi+1 находится методом последовательных приближений, при этом первым приближением считается значение ŷi. Значение же ŷi+1 находится по формуле

Решение строилось на интервалах:

Подсчеты велись до достижения точности 1%, либо до 1000 итераций.

В результате был получен следующий график:


Текст программы (MathLab):

function OMM1

%Основной m-файл

%Количество шагов

nx=100;

nt=200;

%Ограничение по времени

tmax=2;

%Шаг х

dx=-1/nx;

%Шаг t

dt=tmax/nt;

%Точность для решения уравнения на "y" методом касательных

precision=0.01;

%Для графика: оси x и t с делениями

x=0:dx:-1;

t=0:dt:tmax;

%Граничное условие

for k=0:1:nx

y(k+1,1)=2-4*atan(dx*k+2)/3.141592636;

gr(k+1)=y(k+1,1);

end;

%Начальное условие

for k=0:1:nt

y(1,k+1)=(2-4*atan(2)/3.141592636)*exp(-(dt*k));

nach(k+1)=y(1,k+1);

end;

%Поиск y(i+1, j+1):

for m=1:nt

for n=1:nx

y(n+1,m+1)=res(y(n,m),y(n+1,m),y(n,m+1),dx,dt,precision);

end;

end;

surf(t,x,y);

end

function u=res(u1,u2,u3,dx,dt,eps)

%Это чтобы хотябы один шаг был выполнен

deltaUp=eps+1;

%Начальное приближение

aproxy2=u2;

l=1;

while deltaUp>eps

l=l+1;

%aproxy2 - это y(i+1, j+1, s+1), a aproxy - это y(i+1, j+1, s)

%(см.описание)

aproxy=aproxy2;

%Схема метода касательных: y(s+1)=y(s)-f(y(s))/f'(y(s))

%u1 - это y(i,j)

%u2 - это y(i+1,j)

%u3 - это y(i,j+1)

f=-aproxy^2/(4*dx)+aproxy/(2*dt)+(u3-u1-u2)/(2*dt)-(u2^2-u1^2-u3^2)/(4*dx);

prf=-aproxy/(2*dx)+1/(2*dt);

aproxy2=aproxy-f/prf;

deltaU=abs(aproxy2-aproxy);

deltaUp = deltaU;

if(l>10000)

deltaUp = 0.001;

r = deltaU;

end

end;

u=aproxy2;

end

Второе задание

Задача13

Постановка задачи:

Решить краевую задачу методом переменных направлений.

Первым шагом вводится сетку в области :

Вторым шагом необходимо ввести разностную аппроксимацию оператора Лапласа.

При этом из значения функции на нулевом слое известно из начальных условий.

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

То есть мы вводим промежуточный слой k+1/2, в результате переход со слоя k на слой k+1 будет осуществляться в два этапа: сначала решается первое уравнение, неявное по направлению x и явное по направлению y, а затем второе, явное по направлению x и неявное по направлению y.

Невязка для данной схемы равна O(|h|2+τ2), то есть ее порядок аппроксимации равен 2. Кроме того, схема безусловно устойчива (см. Самарский А. А. «Теория разностных схем»). Следовательно, схема сходится.

Используя явный вид разностных операторов, приходим к задаче:

Эта задача состоит из двух подзадач: переход со слоя k на слой k+1/2 и переход со слоя k+1/2 на слой k+1. Каждая из этих задач решается методом прогонки. Первая задача решается для всех j=1…N2‑1, а вторая – для всех i=1…N1‑1. Рассмотрим этот метод поподробнее. Обе наши задачи имеют следующий общий вид:

,

причем из граничных условий получаем

Будем искать решение этой задачи в виде ωi=Ai+1ωi+1+Bi+1. Подставляя данный вид в общий вид задачи и исключая ωi, получим рекуррентное соотношение для коэффициентов прогонки:

Вычисление ωn:

Выразим ωn-1 через ωn

в результате подстановки получим:

Далее задача решается в два этапа:

  • Сначала определяются все коэффициенты прогонки, счет идет от 2 до N1,2,

  • Зная коэффициенты прогонки определяем значения функции в узлах, счет идет от N1,2-1 до 1.

Метод прогонки устойчив при |Сi|≥|Ai|+|Bi| , в нашем случае всегда выполняется строгое равенство.

В результате были получен следующий набор графиков:

t = 1 t=2


y =0.2


y=0.5


x =0.3


x=0.5



Текст программы (MathLab):

function nomm2

global pi;

pi=3.141592636;

% node

N1=101;

N2=101;

J=201;

% initial intervals and steps

T=2;

h1=1/(N1-1);

h2=1/(N2-1);

tau=T/(J-1);

x=0:h1:1;

y=0:h2:1;

t=0:tau:T;

% initial time layer

for i=1:N1;

for j=1:N2;

u(1,i,j)=0;

end

end

for k=2:J;

% boundary conditions

for i=1:N1;

w(i,1)=0;

w(i,N2)=0;

u(k,i,1)=0;

u(k,i,N2)=0;

end

for j = 1:N2;

w(1,j)=0;

w(N1,j)=0;

u(k,1,j)=0;

u(k,N1,j)=0;

end

% layer k-1+tau/2

for j=2:N2-1;

for i=2:N1-1;

a(i-1)=0.5*tau/(h1^2);

b(i-1)=-(1+tau/(h1^2));

c(i-1)=a(i-1);

d(i-1)=-(0.5*tau/(h2^2)*(u(k-1,i, j-1)+u(k-1,i,j+1))+
(1-tau/(h2^2))*u(k-1,i,j)+0.5*tau*sin(pi*h1*(i-1))
*h2*(j-1)*(h2*(j-1)-1)*tau*(k-1));

end

v=sweep(a,b,c,d,N1-2);

for i=2:N1-1;

w(i,j)=v(i-1);

end

end

% layer k

for i=2:N1-1;

for j=2:N2-1;

aa(j-1)=0.5*tau/(h2^2);

bb(j-1)=-(1+tau/(h2^2));

cc(j-1)=aa(j-1);

dd(j-1)=-(0.5*tau/(h1^2)*(w(i-1,j)+w(i+1,j))+(1-tau/
(h1^2))*w(i,j)+0.5*tau*sin(pi*h1*(i-1))*h2*
(j-1)*(h2*(j-1)-1)*tau*(k-0.5));

end

vv=sweep(aa,bb,cc,dd,N2-2);

for j=2:N2-1;

u(k,i,j)=vv(j-1);

end

end

end

% Вывод результатов

k = 101;

for j=1:N2;

for i=1:N1;

v(i,j)=u(k,i,j);

end

end

surf(x,y,v);

pause;

k = 201;

for j=1:N2;

for i=1:N1;

v(i,j)=u(k,i,j);

end

end

surf(x,y,v);

pause;

j=21;

for k=1:J;

for i=1:N1;

f(k,i)=u(k,i,j);

end

end

surf(x,t,f);

pause;

j=51;

for k=1:J;

for i=1:N1;

f(k,i)=u(k,i,j);

end

end

surf(x,t,f);

pause;

i=31;

for j=1:N2;

for k=1:J;

r(k,j)=u(k,i,j);

end

end

surf(y,t,r);

pause;

i=51;

for j=1:N2;

for k=1:J;

r(k,j)=u(k,i,j);

end

end

surf(y,t,r);

end

function sweep = sweep(a, b, c, d, N)

% Метод прогонки

A(1)=-c(1)/b(1);

B(1)=d(1)/b(1);

% direct sweep

for i=2:N-1;

A(i)=-c(i)/(a(i)*A(i-1)+b(i));

B(i)=(d(i)-a(i)*B(i-1))/(a(i)*A(i-1)+b(i));

end

x(N)=(d(N)-a(N)*B(N-1))/(b(N)+a(N)*A(N-1));

% back sweep

for i=N-1:(-1):1;

x(i)=A(i)*x(i+1)+B(i);

end

sweep=x;

end

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5259
Авторов
на СтудИзбе
421
Средний доход
с одного платного файла
Обучение Подробнее