- •Курсовая работа
- •Порядок выполнения работы.
- •Классификация краевой задачи и её физический смысл
- •2. Выбор сеточного шаблона и составление системы уравнений для неявной разностной схемы
- •2. Выбор сеточного шаблона и составление системы уравнений для явной разностной схемы
- •Для применения данной системы для решения поставленной задачи необходимо выполнение условия
- •4. Текст программы для неявной схемы.
- •5. Текст программы для явной схемы.
- •6. Анализ полученных данных
5. Текст программы для явной схемы.
disp('Yavnaya skhema');
clear;
min_kol_uzlov = 4;
max_kol_uzlov = 150;
M = zeros(1,1);
N = zeros(1,1);
h = zeros(1,1);
r = zeros(1,1);
vspomog = zeros(1,1);
vspomog=0;
while vspomog==0
disp('интервал :')
disp('от')
disp(min_kol_uzlov)
disp('до')
disp(max_kol_uzlov)
M=input('Задайте число узлов по оси OX (не выходите за интервал):');
if min_kol_uzlov<=M
if M<=max_kol_uzlov
vspomog=1;
end;
end;
if vspomog==0
disp('Заданый параметр не входит в установленый интервал,')
disp(' попробуем еще раз...')
end;
end;
h=1.0/M;
min_kol_uzlov = ceil(2.0/((h^2)*8));
max_kol_uzlov = min_kol_uzlov+95;
vspomog=0;
while vspomog==0
disp('интервал :')
disp('от')
disp(min_kol_uzlov)
disp('до')
disp(max_kol_uzlov)
N=input('Задайте число узлов по оси OT (не выходите за интервал):');
if min_kol_uzlov<=N
if N<=max_kol_uzlov
vspomog=1;
end;
end;
if vspomog==0
disp('Заданый параметр не входит в установленый интервал,')
disp(' попробуем еще раз...')
end;
end;
r=1.0/(8*N);
U=zeros(M+1,N+1);
for i=1:1:M+1
U(i,1)=naus_Ux0(h*(i-1));
end;
for j=2:1:N+1
for i=2:1:M
U(i,j) = U(i,j-1) + r*(U(i-1,j-1)-2*U(i,j-1)+U(i+1,j-1))/(h^2) + r*func_f((i-1)*h,(j-2)*r);
end;
U(1,j)=(U(2,j)+((h^2)/(2*r))*U(1,j-1)-8*(j-1)*r*h)/(1+(h^2)/(2*r));
U(M+1,j)=(U(M,j)+(h^2)/(2*r)*U(M+1,j-1)-(h^2)*func_f(1,(j-2)*r))/(1+(h^2)/(2*r)+h);
end;
max = U(1,1);
min = U(1,1);
x = 0:h:1;
y = 0:r:1/8;
z = zeros(21,1);
for i=1:1:M+1
for j=1:1:N+1
if max<U(i,j)
max = U(i,j);
end;
if min>U(i,j)
min = U(i,j);
end;
end;
end;
z = min:(max-min)/20:max;
contour(y,x,U,z)
grid;
xlabel('Ось T ');
ylabel('Ось X ');
disp(U)
pause;
mesh(U)
xlabel('Ось T ');
ylabel('Ось X ');
6. Анализ полученных данных
Рассмотрим теперь численные данные, полученные с применением приведённых выше программ. Для оценки сходимости при увеличении числа узлов сетки был применён следующий метод. Матричная норма для матриц различной размерности бралась по обычным формулам для матрицы Q размерности NxM:
Q(i,j)=| U1(i,j)-U2(i/op1,j/op2) |
где U1 и U2 матрицы размерности NxM и N1xM1, op1=N/N1, op2=M/M1, N<N1, M<M1
Т.е. элементами матрицы Q(i,j) были разности значений функции для близких узлов различных матриц.
В результате была получена следующая таблица:
Таблица 1. Значение элемента Q для матриц различного размера.
Размерности Матриц |
10x10 20x20 |
20x20 30x30 |
30x30 40x40 |
40x40 50x50 |
Норма |
0.3023 |
0.1467 |
0.0864 |
0.0755 |
Полученные данные говорят о том, что при уменьшении шага сетки норма матрицы Q уменьшается, что, в свою очередь ,говорит о том, что задача решаемая этим методом корректна и устойчива.
На рисунках 3 и 4 представлены результаты расчёта программы по явной разностной схеме. Значения M = 6 N = 80, поверхности уровня проведены равномерно, с интервалом 0,8.
На рисунках 5 и 6 представлены результаты расчета программы по неявной разностной схеме. Значения M=6 N=80 поверхности уровня проведены равномерно с шагом 0,8.
РИС.3
РИС.4
РИС.5
РИС.6