ЧМ (ЭКТ-3) / Лабы / Лаба 6 / odu
.docЛабораторная работа N6
Решение краевой задачи для ОДУ
Краткие теоретические сведения.
Обыкновенными дифференциальными уравнениями (ОДУ) описывается множество физических явлений: задачи движения системы взаимодействующих материальных точек, химической кинетики, электрических цепей, сопротивления материалов и многие другие. Некоторые важные задачи также сводятся к уравнениям в частных производных. Таким образом, решение ОДУ занимает важное место среди прикладных задач физики, химии и техники.
Конкретная прикладная задача может
приводить к дифференциальному уравнению
любого порядка, однако ОДУ
-го
порядка
(1)
можно привести к эквивалентной системе
дифференциальных уравнений первого
порядка путем введения новых переменных
:
(2)
где
.
Поэтому очень важно уметь решать ОДУ
первого порядка.
Различают три основных типа задач для обыкновенных дифференциальных уравнений: задачи Коши (задача с начальными условиями), краевые задачи и задачи на собственные значения. Ограничимся рассмотрением методов только первых двух задач. При этом будем предполагать, что решение существует, единственно и обладает необходимым свойством гладкости, т.е. искомая функция столько раз может быть продифференцирована, сколько это необходимо.
Пусть требуется найти решение дифференциального уравнения
, (3)
на отрезке
,
которое удовлетворяет краевым условиям:
(4)
Построим сетку
на отрезке
,
на которой определим сеточные функции
,
и
,
приближенное решение в виде сеточной
функции будем, как и прежде, обозначать
через
.
Аппроксимируем производные, входящие
в уравнения (3)-(4), со вторым порядком
точности в результате получим разностную
схему для краевой задачи:
, (5)
с краевыми условиями
(6)
где
.
Отметим без доказательства тот факт,
что данная схема является устойчивой.
Введем обозначения
,
,
,
для
и

для
и
.
Тогда система линейных алгебраических
уравнений (5) – (6) запишется в виде:
(7)
или в матричном виде:
, (8)
где
– трехдиагональная матрица, а
и
– вектор столбцы. Решение этой системы
осуществляется, как правило, методом
прогонки. Численная реализация метода
полностью основывается на решении СЛАУ
с трехдиагональной матрицей коэффициентов.
Вариант N7.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
–0,4 |
|
0,5 |
1,5 |
1 |
0,3 |
0 |
1 |
0,6 |
1,8 |
Текст программы.
clear
a=0.5
b=1.5
c=0.6
d=1.8
k1=1
k2=0.3
k3=0
k4=1
tau=0.05
t=a:tau:b
p=t.^(-1)
q=(-0.4)*(t.^0)
r=2*t
n=(b-a)/tau
m=n+1
A=zeros(n,1)
B=zeros(m,1)
C=zeros(n,1)
F=zeros(m,1)
for i=1:m
F(i)=r(i)
end
F(1)=c
F(m)=d
B(1)=k1-k2/tau
C(1)=k2/tau
B(m)=k3-k4/tau
A(n)=-k4/tau
for i=2:n
B(i)=q(i)-2/tau.^2;
C(i)=1/tau.^2+p(i)/(2*tau);
A(i-1)=1/tau.^2-p(i)/(2*tau);
end
al=zeros(n,1)
be=zeros(n,1)
alfa=-C(1)/B(1)
beta=F(1)/B(1)
al(1)=alfa
be(1)=beta
for i=2:n
del=A(i)*alfa+B(i)
alfa=-C(i)/del
beta=(F(i)-A(i)*beta)/del
al(i)=alfa
be(i)=beta
end
y(m)=(F(m)-A(n)*be(n))/(A(n)*al(n)+B(m))
for i=1:n
y(m-i)=y(m+1-i)*al(m-i)+be(m-i)
end
clc
plot(t,y)
eps1=k1*y(1)+k2*(y(2)-y(1))/tau-c
eps2=k3*y(m)+k4*(y(m)-y(m-1))/tau-d
После выполнения программы получим:

eps1 = 1.6653e-015
eps2 = -1.3020
