Расчетки / Расчотка Лига Veg@SAR / Лига6
.docxЗадание №6
Используя метод сеток, составить решение смешанной задачи для уравнения колебания струны . Решение
выполнить с шагом h=0.1.
С начальными условиями:
U(x,0)=f(x)=x*(2x-0.5)
Ut(x,0)=Ф(x)=cos(2x)
0<x<1
И краевыми условиями:
U(0,t)=Q(t)=t2
U(10,t)=G(t)=1.5
0<t<1
Решение:
Сначала подсчитаем значения в граничных узлах:
при k=0: , где
при i=0: , где
при i=10: , где .
Для k=1 значения можно посчитать по формуле:
, где
Дальнейший расчет производим по формуле:
Листинг 1. Файл: prog6.pas
Program struna_zad6;
const h=0.1;
x_a=0; x_b=1;
n=round((x_b-x_a)/h);
t_a=0; t_b=1;
var fout: text;
u: array [0..n, 0..n] of real;
i,k:integer;
x,t:real;
function f(x_:real):real;
begin
f:=x_*(2*x_+0.5);
end;
function p(x_:real):real;
begin
p:=cos(2*x_);
end;
function q(t_:real):real;
begin
q:=sqr(t_);
end;
function g(t_:real):real;
begin
g:=1.5;
end;
{----------------------------------------------}
begin
assign(fout, 'out.txt');
rewrite(fout);
{подсчет значений в граничных узлах}
{k=0}
for i:=0 to n do
begin
x:=x_a+i*h;
u[i,0]:=f(x);
end;
{i=0}
for k:=0 to n do
begin
t:=t_a+k*h;
u[0,k]:=q(t);
end;
{i=10}
for k:=0 to n do
begin
t:=t_a+k*h;
u[10,k]:=g(t);
end;
{подсчет значений функции в строках - k=1..9}
{для k=1 - посчитаем из начального условия}
for i:=1 to 9 do
begin
x:=x_a+i*h;
u[i,1]:=u[i,0]+p(x);
end;
{для k=2..10}
for k:=2 to 10 do
for i:=1 to 9 do u[i,k]:=u[i+1,k-1]+u[i-1,k-1]-u[i,k-2];
{вывод в файл}
writeln(fout, 'U[i,k]','i':40);
write(fout, ' ');
for i:=0 to 10 do write(fout, i:8); writeln(fout);
for k:=0 to 10 do
begin
if k=5 then write(fout,'k ')
else write(fout,' ');
write(fout, k:2);
for i:=0 to 10 do write(fout, u[i,k]:8:3);
writeln(fout);
end;
close(fout);
end.
Ответ:
Листинг 2 Файл: out.txt
U[i,k] i
0 1 2 3 4 5 6 7 8 9 10
0 0.000 0.070 0.180 0.330 0.520 0.750 1.020 1.330 1.680 2.070 1.500
1 0.010 1.050 1.101 1.155 1.217 1.290 1.382 1.500 1.651 1.843 1.500
2 0.040 1.041 2.025 1.988 1.926 1.849 1.770 1.703 1.663 1.081 1.500
3 0.090 1.015 1.928 2.796 2.620 2.406 2.170 1.933 1.133 1.320 1.500
4 0.160 0.977 1.786 2.560 3.276 2.941 2.568 1.600 1.590 1.552 1.500
k 5 0.250 0.930 1.609 2.266 2.881 3.438 2.371 2.226 2.019 1.770 1.500
6 0.360 0.882 1.410 1.930 2.428 2.311 3.096 2.790 2.406 1.967 1.500
7 0.490 0.840 1.203 1.573 1.360 2.086 2.730 3.276 2.738 2.135 1.500
8 0.640 0.811 1.003 0.633 1.230 1.779 2.266 2.678 3.005 2.271 1.500
9 0.810 0.803 0.241 0.660 1.052 1.410 1.727 1.995 2.211 2.370 1.500
10 1.000 0.240 0.460 0.660 0.840 1.000 1.140 1.260 1.360 1.440 1.500