Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
89
Добавлен:
17.04.2013
Размер:
304.64 Кб
Скачать

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

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 ');

Соседние файлы в папке mpm_24a