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

Программная реализация:

1,1 Явная разностная схема:

function[U,u,result,error]=yavnaya(M,N)

close all

warning off

error=0;

h=1/M;

t=1/N;

if 2*t>h^2

error = 1;

end

U=zeros(M+1,N+1);

for i=1:M+1

for j=1:N+1

f(i,j)=-32*h*t*(i-1)*(j-1);

end

end

for j=1:N

U(1,j+1) = 2*t/h^2*(U(2,j)-U(1,j)) + U(1,j) + t*f(1,j) - 2*t/h*(16*t*j);

for i=2:M

U(i,j+1) = U(i,j) + t/h^2*(U(i-1,j) - 2*U(i,j) + U(i+1,j)) + t*f(i,j);

end;

U(M+1,j+1) = 2*t/h^2*(U(M,j)-U(M+1,j)) + t*f(M+1,j) + U(M+1,j)*(1-2*t*2/h);

end;

for i=1:M+1

U(i,1)=4*i^2*h^2;

end

m = 1;

n = 1;

for i=1:M/10:M+1

for j = 1:N/10:N+1

result(m,n)=U(i,j);

n=n+1;

end

n=1;

m=m+1;

end

u=zeros(M+1,6);

for i=1:M+1,

for j=0:5,

u(i,j+1)=U(i,1+j*N/5);

end

end

1,2 Неявная разностная схема:

unction[U,u,result,error]=neyavnaya(M,N)

close all

warning off

error = 0;

h = 1/M;

t = 1/N;

U = zeros(M+1,N+1);

for i = 1:M+1

for j = 1:N+1

fun(i,j) = -32*h*t*(i-1)*(j-1);

end

end

for i=1:M+1

U(i,1)=4*(i-1)*(i-1)*h*h;

end

A = zeros(M,1);

C = zeros(M+1,1);

B = A;

A1 = A;

F = zeros(M+1,N+1);

B1 = F;

for i = 1:M-1,

A(i) = 1;

B(i+1) = 1;

C(i+1) = 2 + h^2/t;

if abs(C(i+1)) < abs(A(i)) + abs(B(i+1))

error = 1;

end

end;

A(M) = 1;

B(1) = 1;

C(1) = 1 + h^2/(2*t);

C(M+1) = 1 + h^2/(2*t) - (-2)*h;

if abs(C(1)) < abs(B(1))

error = 1;

end

if abs(C(M+1)) < abs(A(M))

error = 1;

end

A1(1) = B(1)/C(1);

for i = 2:M

A1(i) = B(i)/(C(i) - A(i-1)*A1(i-1));

end;

for j = 2:N+1,

F(1,j) = (h*h/2*t)*U(1,j-1) + (h*h/2)*fun(1,j)-h*(16*(j-1)*t);

B1(1,j) = F(1,j)/C(1);

for i = 1:M-1,

F(i+1,j) = (h*h)*fun(i+1,j-1) + (h*h/t)*U(i+1,j-1);

end;

F(M+1,j) = (h*h/2*t)*U(M+1,j-1) + (h*h/2)*fun(M+1,j);

for i = 2:M+1,

B1(i,j) = (F(i,j) + A(i-1)*B1(i-1,j))/(C(i) - A(i-1)*A1(i-1));

end;

U(M+1,j) = B1(M+1,j);

for i = M:-1:1,

U(i,j) = A1(i)*U(i+1,j) + B1(i,j);

end;

end;

m = 1;

n = 1;

for i = 1:M/10:M+1

for j = 1:N/10:N+1

result(m,n) = U(i,j);

n = n+1;

end

n = 1;

m = m+1;

end

u = zeros(M+1.6);

for i = 1:M+1,

for j = 0:5,

u(i,j+1) = U(i,1+j*N/5);

end

end

1,3 Основная прграмма:

clear

clc

warning off

close all

format short

diary E:\Temp\main.txt

diary on

M=input('Vvedie razmernost'' setki po X:')

N=input('Vvedie razmernost'' setki po Y:')

[U,u,res,err] = yavnaya(M,N);

[UU,uu,result,error] = neyavnaya(M,N);

if err

disp('Ne podhodyajie parametri!!!')

end

if error

disp('Ne podhodyajie parametri!!!')

end

if ~err

if ~error

colormap(bone)

mesh(UU)

title('Ne Yavnaya Shema')

pause

colormap(pink)

mesh(U)

title('Yavnaya Shema')

pause

colormap('default')

contour(UU,50)

title('Ne Yavnaya Shema')

pause

contour(U,50)

title('Yavnaya Shema')

pause

i = 1:M+1;

plot((i-1).*1/M,uu)

title('Ne Yavnaya Shema')

grid

pause

plot((i-1).*1/M,u)

title('Yavnaya Shema')

grid

pause

plot((i-1).*1/M,uu,'b')

hold

plot((i-1).*1/M,u,'r')

title('Sovmejennay Diagramma Yavnoyi NeYavnoy Shem')

grid

end

end

res

result

err_matr = res - result

format long error

error = max(max(abs(res-result)))

diary off

Модельная задача:

Пусть . После подстановки в исходную систему получаем:

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

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