- •Курсовая работа
- •Порядок выполнения работы.
- •Классификация краевой задачи и её физический смысл
- •2. Выбор сеточного шаблона и составление системы уравнений для неявной разностной схемы
- •2. Выбор сеточного шаблона и составление системы уравнений для явной разностной схемы
- •Для применения данной системы для решения поставленной задачи необходимо выполнение условия
- •4. Текст программы для неявной схемы.
- •5. Текст программы для явной схемы.
- •6. Анализ полученных данных
Для применения данной системы для решения поставленной задачи необходимо выполнение условия
4. Текст программы для неявной схемы.
disp('Neyavnaya skhema');
min_kol_uzlov = 5;
max_kol_uzlov = 100;
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;
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;
h=1.0/M;
r=1.0/(8*N);
U = zeros(M+1,N+1);
c0 = zeros(1,1);
b0 = zeros(1,1);
f0 = zeros(1,1);
ai = zeros(1,1);
ci = zeros(1,1);
bi = zeros(1,1);
fi = zeros(1,1);
am = zeros(1,1);
cm = zeros(1,1);
fm = zeros(1,1);
alfa = zeros(M+1,1);
beta = zeros(M+1,1);
i = zeros(1,1);
j = zeros(1,1);
k = zeros(1,1);
for i=1:1:M+1
U(i,1)=naus_Ux0(h*(i-1));
end;
c0 = -(1+(h^2)/(2*r));
b0 = -1;
ai = 1;
ci = 2+(h^2)/r;
bi = 1;
am = -1;
cm = -1-h-(h^2)/(2*r);
if (c0*cm)==0
pause
exit;
end;
if abs(c0)<abs(b0)
pause
exit;
end;
if abs(cm)<abs(am)
pause
exit;
end;
k = 1;
if abs(c0)>abs(b0)
if abs(cm)>abs(am)
k=0;
end;
end;
if k==0
if abs(ci)<abs(ai)+abs(bi)
pause
exit;
end;
else
if abs(ci)<=abs(ai)+abs(bi)
pause
exit;
end;
end;
alfa(1) = b0/c0;
for i=2:1:M
alfa(i) = bi/(ci-ai*alfa(i-1));
end;
for j=2:1:N+1
beta(1)=(-((h^2)/(2*r))*U(1,j-1)+8*h*(j-2)*r)/c0;
for i=2:1:M
fi = (h^2)*func_f((i-1)*h,(j-1)*r) + (h^2)*U(i,j-1)/r;
beta(i) = (fi + ai*beta(i-1))/(ci - ai*alfa(i-1));
end;
fm = -(h^2)*U(M+1,j-1)/(2*r) + ((h^2)/2)*func_f(1,(j-2)*r);
U(M+1,j) = (fm + am*beta(M))/(cm - am*alfa(M));
for i=M:-1:1
U(i,j) = alfa(i)*U(i+1,j) + beta(i);
end;
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 ');