- •Московский Государственный Институт Электронной Техники
- •Теоретические сведения.
- •§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
Таблицы результатов:
При M = 10, N = 200, т.е. при h = 1/10, t = 1/200 получены следующие результаты:
U(x,t) = X^2+Y^2:
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;
![]()
0 0.0100 0.0400 0.0900 0.1600 0.2500 0.3600 0.4900 0.6400 0.8100 1.0000
0.0100 0.0200 0.0500 0.1000 0.1700 0.2600 0.3700 0.5000 0.6500 0.8200 1.0100
0.0400 0.0500 0.0800 0.1300 0.2000 0.2900 0.4000 0.5300 0.6800 0.8500 1.0400
0.0900 0.1000 0.1300 0.1800 0.2500 0.3400 0.4500 0.5800 0.7300 0.9000 1.0900
0.1600 0.1700 0.2000 0.2500 0.3200 0.4100 0.5200 0.6500 0.8000 0.9700 1.1600
0.2500 0.2600 0.2900 0.3400 0.4100 0.5000 0.6100 0.7400 0.8900 1.0600 1.2500
0.3600 0.3700 0.4000 0.4500 0.5200 0.6100 0.7200 0.8500 1.0000 1.1700 1.3600
0.4900 0.5000 0.5300 0.5800 0.6500 0.7400 0.8500 0.9800 1.1300 1.3000 1.4900
0.6400 0.6500 0.6800 0.7300 0.8000 0.8900 1.0000 1.1300 1.2800 1.4500 1.6400
0.8100 0.8200 0.8500 0.9000 0.9700 1.0600 1.1700 1.3000 1.4500 1.6200 1.8100
1.0000 1.0100 1.0400 1.0900 1.1600 1.2500 1.3600 1.4900 1.6400 1.8100 2.0000
Явная разностная схема:
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;
![]()
0 0.0095 0.0390 0.0886 0.1582 0.2478 0.3575 0.4873 0.6370 0.8068 0.9966
0.0100 0.0195 0.0490 0.0986 0.1682 0.2578 0.3675 0.4973 0.6470 0.8168 1.0066
0.0400 0.0495 0.0790 0.1286 0.1982 0.2879 0.3976 0.5273 0.6771 0.8468 1.0367
0.0900 0.0995 0.1290 0.1786 0.2483 0.3379 0.4476 0.5774 0.7271 0.8969 1.0867
0.1600 0.1695 0.1991 0.2487 0.3183 0.4080 0.5177 0.6474 0.7972 0.9670 1.1568
0.2500 0.2595 0.2891 0.3387 0.4084 0.4981 0.6078 0.7376 0.8873 1.0572 1.2470
0.3600 0.3695 0.3991 0.4488 0.5184 0.6082 0.7179 0.8477 0.9975 1.1673 1.3572
0.4900 0.4995 0.5292 0.5788 0.6486 0.7383 0.8481 0.9779 1.1277 1.2975 1.4874
0.6400 0.6496 0.6792 0.7289 0.7987 0.8885 0.9982 1.1281 1.2779 1.4478 1.6376
0.8100 0.8196 0.8493 0.8991 0.9688 1.0586 1.1685 1.2983 1.4482 1.6180 1.8079
1.0000 1.0097 1.0394 1.0892 1.1590 1.2488 1.3587 1.4886 1.6385 1.8084 1.9983
Матрица ошибок:
0 0.0005 0.0010 0.0014 0.0018 0.0022 0.0025 0.0027 0.0030 0.0032 0.0034
0 0.0005 0.0010 0.0014 0.0018 0.0022 0.0025 0.0027 0.0030 0.0032 0.0034
0 0.0005 0.0010 0.0014 0.0018 0.0021 0.0024 0.0027 0.0029 0.0032 0.0033
0 0.0005 0.0010 0.0014 0.0017 0.0021 0.0024 0.0026 0.0029 0.0031 0.0033
0 0.0005 0.0009 0.0013 0.0017 0.0020 0.0023 0.0026 0.0028 0.0030 0.0032
0 0.0005 0.0009 0.0013 0.0016 0.0019 0.0022 0.0024 0.0027 0.0028 0.0030
0 0.0005 0.0009 0.0012 0.0016 0.0018 0.0021 0.0023 0.0025 0.0027 0.0028
0 0.0005 0.0008 0.0012 0.0014 0.0017 0.0019 0.0021 0.0023 0.0025 0.0026
0 0.0004 0.0008 0.0011 0.0013 0.0015 0.0018 0.0019 0.0021 0.0022 0.0024
0 0.0004 0.0007 0.0009 0.0012 0.0014 0.0015 0.0017 0.0018 0.0020 0.0021
0 0.0003 0.0006 0.0008 0.0010 0.0012 0.0013 0.0014 0.0015 0.0016 0.0017
Значение нормы:
0.0034
При M = 10, N = 1000, т.е. при h = 1/10, t = 1/200 получены следующие результаты
Матрица ошибок:
1.0e-003 *
0 0.0998 0.1954 0.2828 0.3612 0.4311 0.4934 0.5489 0.5983 0.6423 0.6815
0 0.0997 0.1950 0.2819 0.3599 0.4294 0.4914 0.5465 0.5957 0.6394 0.6784
0 0.0995 0.1937 0.2793 0.3559 0.4243 0.4851 0.5394 0.5876 0.6306 0.6689
0 0.0991 0.1915 0.2748 0.3492 0.4156 0.4747 0.5273 0.5741 0.6159 0.6530
0 0.0983 0.1880 0.2681 0.3395 0.4031 0.4597 0.5102 0.5551 0.5951 0.6307
0 0.0970 0.1830 0.2590 0.3265 0.3867 0.4402 0.4878 0.5302 0.5680 0.6016
0 0.0949 0.1760 0.2471 0.3099 0.3659 0.4156 0.4599 0.4994 0.5345 0.5658
0 0.0914 0.1666 0.2318 0.2893 0.3403 0.3858 0.4262 0.4623 0.4943 0.5229
0 0.0862 0.1542 0.2126 0.2640 0.3096 0.3502 0.3864 0.4185 0.4472 0.4727
0 0.0784 0.1380 0.1889 0.2336 0.2732 0.3085 0.3399 0.3678 0.3927 0.4149
0 0.0672 0.1173 0.1599 0.1973 0.2306 0.2601 0.2864 0.3098 0.3306 0.3492
Значение нормы:
6.8154e-004
При M = 100, N = 20000, т.е. при h = 1/10, t = 1/200 получены следующие результаты
Матрица ошибок:
1.0e-004 *
0 0.0499 0.0977 0.1414 0.1805 0.2155 0.2466 0.2744 0.2991 0.3211 0.3407
0 0.0498 0.0975 0.1409 0.1799 0.2146 0.2456 0.2732 0.2977 0.3196 0.3391
0 0.0497 0.0969 0.1396 0.1779 0.2121 0.2425 0.2696 0.2937 0.3152 0.3343
0 0.0495 0.0957 0.1373 0.1745 0.2077 0.2372 0.2635 0.2870 0.3078 0.3264
0 0.0491 0.0940 0.1340 0.1697 0.2015 0.2298 0.2550 0.2774 0.2974 0.3152
0 0.0485 0.0914 0.1294 0.1632 0.1932 0.2200 0.2438 0.2650 0.2839 0.3007
0 0.0474 0.0879 0.1234 0.1549 0.1828 0.2077 0.2299 0.2496 0.2671 0.2828
0 0.0457 0.0832 0.1158 0.1445 0.1700 0.1928 0.2130 0.2310 0.2470 0.2613
0 0.0430 0.0770 0.1061 0.1319 0.1547 0.1750 0.1930 0.2091 0.2235 0.2362
0 0.0391 0.0688 0.0943 0.1166 0.1365 0.1541 0.1698 0.1838 0.1962 0.2073
0 0.0334 0.0584 0.0798 0.0985 0.1151 0.1299 0.1430 0.1547 0.1652 0.1745
Значение нормы:
3.4067e-005
Программная реализация модельной задачи:
Основная программа
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] = mod(M,N);
if err
disp('Ne podhodyajie parametri!!!')
end
if ~err
colormap(pink)
mesh(U)
title('Yavnaya Shema')
pause
colormap('default')
contour(U,50)
title('Yavnaya Shema')
pause
end
pause
T=zeros(11,201);
h= 1/M;
t= 1/N;
%i = 1:M+1;
%j = 1:N+1;
for i = 1:M+1
for j = 1:N+1
T(i,j) = ((i-1)*h)^2 + ((j-1)*t)^2;
end
end
mesh(T)
title('X^2 + Y^2')
pause
colormap('default')
contour(T,50)
title('X^2 + Y^2')
m = 1;
n = 1;
for i=1:M/10:M+1
for j = 1:N/10:N+1
result(m,n)=T(i,j);
n=n+1;
end
n=1;
m=m+1;
end
uu=zeros(M+1,6);
for i=1:M+1,
for j=0:5,
u(i,j+1)=T(i,1+j*N/5);
end
end
result
res
err_matr = res - result
diary off
Реализация явной разностной схемы:
function[U,u,result,error]=mod(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)=2*t*(j-1) - 2;
end
end
for i=1:M+1
U(i,1)=((i-1)*h)^2;
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);
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)+2*h*(2+((j-1)*t)^2-U(M+1,j)))+U(M+1,j)+t*f(M+1,j) ;
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
