Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Лабораторная работа №2
по курсу «Методы вычислений»
Математический факультет, 5 семестр
Тема |
Численное решение начально-краевой задачи для уравнения теплопроводности |
Ф.И.О. |
Гуптор Александр Сергеевич |
Группа |
442(а) |
Вариант |
9 |
Дата сдачи |
В области D=( 0<x<1, 0<t<1 ) рассматривается следующая краевая задача для уравнения теплопроводности
ut=uxx+f(x,t), 0<x<1, 0<t<1,
u(x,0)=(x), 0x1,
u(0,t)=1(t), u(1,t)=2(t), 0t1. (1)
Построим в области D сетку
h={ (xm,tn): xm=mh, tn=n, m=0,...,M, n=0,...,N, h=1/M, =1/N },
где M, N -задаваемые положительные целые.
Задачу (1) аппроксимируем следующей конечноразностной задачей:
,
m=1,...,M-1, n=0,...,N-1. (2)
ym,0=(xm), y0,n=1(tn), yM,n=2(tn), m=0,...,M, n=0,...,N. (3)
Систему уравнений (2) можно записать в виде
ym-1,n+1-(2+h2/)ym,n+1+ym+1,n+=Fm,n, m=1,...,M-1, n=0,...,N-1, (4)
где Fm,n=-ym,nh2/-(1-)(ym-1,n-2ym,n+ym+1,n)-h2fm,n+1/2 .
Систему (4) совместно с начальными и краевыми условиями (3) решаем методом прогонки (полагаем =1/2 ).
Используя заданную функцию u(x,t) найти функции f(x,t), (x), 1(t),2(t).Затем, решив задачу (4)-(3), cравнить найденное решение с u(x,t) при t=1.
Вариант 9
u=t3+x
Для погрешности eps = 0.01:
N = 7 , M = 12 разбиение по x и по t соответственно.
Для погрешности eps = 0.00005:
N = 26, M=31 разбиение по x и по t .
Значения заданной функции u:
0 |
0.03333333333333 |
… |
0.96666666666667 |
1.00000000000000 |
0.00006400000000 |
0.03339733333333 |
… |
0.96673066666667 |
1.00006400000000 |
… |
… |
… |
… |
… |
0.88473600000000 |
0.91806933333333 |
… |
1.85140266666667 |
1.88473600000000 |
1.00000000000000 |
1.03333333333333 |
… |
1.96666666666667 |
2.00000000000000 |
Значения найденной функции y:
0 |
0.03333333333333 |
… |
0.96666666666667 |
1.00000000000000 |
0.00006400000000 |
0.03339398699326 |
… |
0.96672732032659 |
1.00006400000000 |
… |
… |
… |
… |
… |
0.88473600000000 |
0.91806291290120 |
… |
1.85139624623453 |
1.88473600000000 |
1.00000000000000 |
1.03332686705952 |
… |
1.96666020039286 |
2.00000000000000 |
Текст программы:
clear;
eps = 0.00005;
%--Находим функции f,fi,m1,m2 -- %
x=sym('x');
t=sym('t');
u=t.^3+x;
f=diff(u,t,1)-diff(u,x,2);
t=0;
fi=eval(u);
x=0;
t=sym('t');
m1=eval(u);
x=1;
t=sym('t');
m2=eval(u);
%--Строим сетку--%
tol=10;
par=10;
n=5;
while (tol>eps) & (par<100)
par=par+1;
n=n+1;
m=par;
sigma=1/2;
ax=0;
bx=1;
at=0;
bt=1;
hx=1/m;
ht=1/n;
xm=ax:hx:bx;
tn=at:ht:bt;
%--Используем граничные и краевые условия -- %
for i=1:m+1 %начальный момент времени
x=xm(i);
y(1,i)=eval(fi);
end;
for j=1:n+1 %начальная граница по x
if m1==1 y(j,1)=1;
else
t=tn(j);
y(j,1)=eval(m1);
end;
end;
for j=1:n+1 %конечная граница по x
t=tn(j);
y(j,m+1)=eval(m2);
end;
% коэффициенты разностной схемы
a=sigma;
b=2*sigma+(hx^2/ht);
c=sigma;
%нахождение решения методом прогонки
for i=2:n+1
t=tn(i-1);
s=eval(m1);
ff=eval(f);
t=tn(i-1)+ht/2;
for j=2:m
x=xm(j);
ff=eval(f);
fm(j)=-y(i-1,j)*(hx^2/ht)-(1-sigma)*(y(i-1,j-1)-2*y(i-1,j)+y(i-1,j+1))-(hx^2)*ff;
end;
alpha(2)=0;
beta(2)=y(i,1);
for j=3:m+1
alpha(j)=c/(b-a*alpha(j-1));
beta(j)=(c*beta(j-1)-fm(j-1))/(b-a*alpha(j-1));
end;
for j=m:-1:2
y(i,j)=alpha(j+1)*y(i,j+1)+beta(j+1);
end;
end;
%конец метода прогонки
for j=1:n+1
for i=1:m+1
t=tn(j);
x=xm(i);
u1(j,i)=eval(u);
end
end
tol=max(max(abs(y-u1)));
disp(tol);
end;
surfc(xm,tn,y);
hold on;
surfc(xm,tn,u1);
hold off;