- •3. Порядок работы.
- •Теоретические сведения.
- •§1 Классификация задач.
- •Постановка задач.
- •Первая краевая задача для уравнения теплопроводности.
- •§2 Сеточные функции и сеточные пространства.
- •§3 Разностная аппроксимация простейших
- •§4 Метод сеток.
- •Решение задачи.
- •Решение задачи с помощью явной разностной схемы
- •Решение задачи с помощью неявной разностной схемы
- •Практическая реализация:
- •Программная реализация:
Практическая реализация:
Таблицы результатов:
При M = 100, N = 20000, т.е. при h = 1/100, t = 1/20000 получены следующие результаты:
X
= 0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1;
T
= 0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1;
Явная разностная схема:
U(x,t)
0 0.3922 0.4308 0.3191 0.1833 0.1233 0.2409 0.6642 1.5742 3.2396 6.0679
0.0400 0.5637 0.7513 0.7962 0.8224 0.9292 1.2191 1.8223 2.9230 4.7957 7.8563
0.1600 0.7696 1.0874 1.2848 1.4794 1.7692 2.2590 3.0847 4.4413 6.6199 10.0625
0.3600 1.0246 1.4597 1.8105 2.1848 2.6785 3.4007 4.4976 6.1823 8.7748 12.7619
0.6400 1.3413 1.8884 2.3997 2.9706 3.6949 4.6885 6.1132 8.2084 11.3365 16.0496
1.0000 1.7310 2.3940 3.0802 3.8708 4.8592 6.1712 7.9901 10.5917 14.3956 20.0431
1.4400 2.2047 2.9979 3.8813 4.9226 6.2165 7.9033 10.1953 13.4158 18.0599 24.8852
1.9600 2.7746 3.7233 4.8352 6.1664 7.8165 9.9460 12.8048 16.7781 22.4571 30.7481
2.5600 3.4548 4.5962 5.9776 7.6472 9.7147 12.3681 15.9060 20.7918 27.7383 37.8396
3.2400 4.2633 5.6465 7.3485 9.4154 11.9738 15.2483 19.5995 25.5893 34.0829 46.4088
4.0000 5.2231 6.9090 8.9934 11.5279 14.6646 18.6762 24.0018 31.3260 41.7040 56.7558
1.2 Неявная разностная схема:
U(x,t)
0 0.3922 0.4308 0.3191 0.1834 0.1235 0.2412 0.6647 1.5749 3.2409 6.0699
0.0400 0.5637 0.7513 0.7963 0.8225 0.9293 1.2194 1.8228 2.9238 4.7970 7.8583
0.1600 0.7696 1.0874 1.2848 1.4795 1.7694 2.2593 3.0852 4.4421 6.6212 10.0646
0.3600 1.0246 1.4597 1.8105 2.1849 2.6787 3.4010 4.4982 6.1833 8.7763 12.7642
0.6400 1.3413 1.8884 2.3998 2.9707 3.6951 4.6888 6.1138 8.2095 11.3382 16.0523
1.0000 1.7310 2.3941 3.0802 3.8709 4.8595 6.1716 7.9909 10.5929 14.3976 20.0463
1.4400 2.2047 2.9979 3.8814 4.9227 6.2168 7.9039 10.1962 13.4173 18.0623 24.8889
1.9600 2.7746 3.7233 4.8353 6.1665 7.8168 9.9466 12.8059 16.7799 22.4599 30.7526
2.5600 3.4548 4.5962 5.9777 7.6474 9.7152 12.3689 15.9073 20.7939 27.7417 37.8450
3.2400 4.2633 5.6465 7.3486 9.4157 11.9743 15.2492 19.6011 25.5918 34.0870 46.4154
4.0000 5.2231 6.9091 8.9935 11.5282 14.6653 18.6774 24.0037 31.3292 41.7091 56.7638
1.4 Значение Нормы
0.00800219828546
График поверхности
Графики слоев t = 0 : 0.2 : 1.
1.1 Неявная схема:
1.2 Явная схема
Программная реализация:
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
