- •Московский институт электронной техники (Технический университет)
- •Курсовая работа
- •Постановка задачи и её физическая интерпретация.
- •Применение метода сеток при решении уравнения Пуассона.
- •Реализация метода сеток на эвм в среде Matlab.
- •Приложение. Текст основной программы pavel.M.
- •Подпрограммаpav_eps.M определения погрешности при заданном параметре сходимости.
- •Подпрограммаpav_p.M доказывающая сходимость разностной схемы.
- •Литература.
Подпрограммаpav_eps.M определения погрешности при заданном параметре сходимости.
M = 10; N = 10;
a = 1; b = 1;
h1 = a/M; h2 = b/N; q = h2/h1;
u = ones(M+1, N+1);
x = zeros(M+1,1);
y = zeros(N+1,1);
x = 0:h1:1;
y = 0:h2:1;
for i = 1:(M+1),
u(i,1) = 0;
u(i,N+1) = 0;
end
for j = 1:(N+1),
u(1,j) = 15*sin(pi*(j-1)*h2);
u(M+1,j) = 15*exp(pi)*sin(pi*(j-1)*h2);
end
k = 0;
MAX = 15;
A = 100;
a1 = 1/(2*(1+q^2));
a2 = q^2;
a3 = h2^2*a1;
for k = 1:MAX,
A = 0;
for i=2:M,
for j=2:N,
X = a1 * (u(i,j-1) + u(i,j+1) + a2*u(i-1,j) + a2*u(i+1,j)) - a3*30*(i/M*i/M+j/N*j/N-i/M-j/N);
X = mu*X + (1-mu)*u(i,j);
R = abs(X - u(i,j));
if (R > A) A = R; end
u(i,j) = X;
end
end
end
eps = A;
Подпрограммаpav_p.M доказывающая сходимость разностной схемы.
N=input('Input the size of matrix A: ');
q = 1;
a=4;
A=zeros(N*N,N*N);
for i=1:N,
A(N*(i-1) + 1,N*(i-1) + 1)=a;
A(N*(i-1) + 1,N*(i-1) + 2)=-q;
if (i~=N) A(N*(i-1) + 1,N*i + 1)=-1; end
if (i~=1) A(N*(i-1) + 1,N*(i-1) + 1 - N)=-1; end
for j=2:N-1,
A(N*(i-1) + j,N*(i-1) + j)=a;
A(N*(i-1) + j,N*(i-1) + j-1)=-q;
A(N*(i-1) + j,N*(i-1) + j+1)=-q;
if (i~=N) A(N*(i-1) + j,N*i + j)=-1; end
if (i~=1) A(N*(i-1) + j,N*(i-1) + j - N)=-1; end
end
A(N*i,N*i)=a;
if (i~=1) A(N*i,N*i-N)=-1; end
if (i~=N) A(N*i,N*i+N)=-1; end
A(N*i,N*i-1)=-q;
end
if(A==A') disp('OK:Matrix A is autocomplimentare'); end
for i=1:N^2,
B=A(1:i, 1:i);
if det(B)<=0
disp('ERROR: Matrix A is not positive definded!');
break;
end
end
B=A;
for i=1:N^2,
for j=i+1:N^2,
B(i,j) = 0;
end
end
C=B-0.5*A;
for i=1:N^2,
B=C(1:i, 1:i);
if det(B)<=0
disp('ERROR: Matrix B-1/2*A is not positive definded!');
break;
end
end
disp('If no ERROR occurs then system is good!');
Результат вычислений программы pavel.m при значенияхN=M=10, .
i \ j |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
0 |
0 |
4.6353 |
8.8168 |
12.135 |
14.265 |
15.000 |
14.265 |
12.135 |
8.8168 |
4.6353 |
0 |
1 |
0 |
6.292 |
11.932 |
16.453 |
19.365 |
20.376 |
19.385 |
16.490 |
11.976 |
6.292 |
0 |
2 |
0 |
8.6049 |
16.314 |
22.501 |
26.488 |
27.875 |
26.521 |
22.559 |
16.382 |
8.6049 |
0 |
3 |
0 |
11.808 |
22.399 |
30.885 |
36.351 |
38.250 |
36.390 |
30.953 |
22.479 |
11.808 |
0 |
4 |
0 |
16.219 |
30.786 |
42.432 |
49.929 |
52.529 |
49.971 |
42.506 |
30.872 |
16.219 |
0 |
5 |
0 |
22.273 |
42.297 |
58.275 |
68.553 |
72.112 |
68.596 |
58.350 |
42.385 |
22.273 |
0 |
6 |
0 |
30.559 |
58.057 |
79.962 |
94.044 |
98.913 |
94.086 |
80.035 |
58.142 |
30.559 |
0 |
7 |
0 |
41.825 |
79.600 |
109.60 |
128.88 |
135.54 |
128.92 |
109.67 |
79.680 |
41.886 |
0 |
8 |
0 |
57.301 |
109.02 |
150.09 |
176.47 |
185.57 |
176.50 |
150.15 |
109.09 |
57.354 |
0 |
9 |
0 |
78.428 |
149.19 |
205.37 |
241.44 |
253.88 |
241.46 |
205.40 |
149.24 |
78.464 |
0 |
10 |
0 |
107.26 |
204.02 |
280.81 |
330.12 |
347.11 |
330.12 |
280.81 |
204.02 |
107.26 |
0 |