- •Московский Государственный Институт Электронной Техники
- •Теоретические сведения.
- •§1 Классификация задач.
- •Постановка задач.
- •Первая краевая задача для уравнения теплопроводности.
- •§2 Сеточные функции и сеточные пространства.
- •§3 Разностная аппроксимация простейших
- •§4 Метод сеток.
- •Решение задачи.
- •Решение задачи с помощью явной разностной схемы
- •Решение задачи с помощью неявной разностной схемы
- •Программная реализация:
- •Таблицы результатов:
- •0 0.0095 0.0390 0.0886 0.1582 0.2478 0.3575 0.4873 0.6370 0.8068 0.9966
Программная реализация:
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
Модельная задача:
Пусть . После подстановки в исходную систему получаем:
Расчеты проведем с помочью неявной схемы, аналогично выше приведенным. Результаты вычислений оформлены в программной реализации данной схемы для полученной системы.