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

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