гх(ж,0) = г>(я), 0 < х < I.
Д
dyi
dt
к
Ух-1 - 2j/i + Vi+1
h?
+ /(z/n£), г = 1,2, ...,7V - 1,
0 < £ < Т,
ля численного решения этой краевой задачи будем использовать метод прямых. Дискретизацию по пространству проведем на равномерной сетке с h (Nh = I). Решение y^i = 0,1,...,N в узлах ж*, г = 0,1,...,7V определяется из следующей задачи Коши для системы обыкновенных дифференциальных уравнений:
Vo(t)=g0(t), yN(t)=g1{t), 0
Vi(0)=у(х{), i = 1,2,...,N - 1.
Правую часть зададим в виде
/(it, t) = su( 1 — it), s = const.
В
1, 0 < x < /0, 0, l0 < x < 1.
этом случае рассматриваемое нелинейное уравнение диффузии-реакции известно как уравнение Фишера (Колмогорова—Петровского—Пискунова). Пусть
Поставленная задача характеризуются параметрами ft, s, /, N, Т. Эти параметры (а также число временных слоев для вывода графика решения) будем вводить с использованием диалога, который реализуется модулем Form Layout (функция f edit О) на основе списка параметров.
import numpy as np import matplotlib.pyplot as pit import scipy.integrate as integrate from foralayout import fedit datalist = [(None, ,Physical’),
d
(’diffusion’, 0.2),
(’souce’, 5.),
(None, ’Geometric9), (’lenth’, 10.),
(’10’, 1.),
(None, ’Calculated9), (’nodes*, 51),
(* tmax *, 4.),
(’ntime*, 5) ]
, s, 1, 10, m, tmax, ntime = fedit(datalist, title="Parameters") h = 1 / m def f(x):
return s*x*(l-x) def ff(y, t):
r = np.zeros((m+1), ’float’) for i in ranged, m):
r [i] = d*(y[i+l] - 2*y [i] + у [i-1]) / h**2 + f (y [i]) return r
t = np.linspace(0, tmax, ntime) x = np.linspace(0, 1, m+1)
v = np.zeros((m+1), ’float’) for i in range(0, m+1):
Рис. 3.58 Диалог ввода данных
if х[i] < 10: v[i] = 1.
Y, infodict = integrate.odeintCff, v, t, full_output=True) sglist = \ ’.’]
for n in range(0, ntime):
> r = Y[n, :] .T
st = ’time =’ + str(n*tmax/(ntime-l)) pit.plot(x, r, sglist[n], label=st) pit.Iegend(loc=0) pit.xlabel(’$x$’) pit.grid(True) pit. showO
Помимо реализованного здесь (см. рис. 3.58) ввода числовых параметров (виджеты QDateEdit и QSpinBox из PyQt) и надписей (QLabel) обеспечивается интерактивный ввод текстовой информации, распознается ввод списков (реализация на основе виджета QComboBox), логических переменных — селекторная кнопка (QCheckBox), информация о цвете и шрифтах. Параметры также можно группировать на отдельных вкладках.
|
N
\
\
\
|
1
|
|
т:— *
♦
*
*
|
time =2.0
|
|
Г
\
|
\
|
|
|
* ♦ *
|
time =3.0 time =4.0
|
|
|
1
\
\
\
\
\
|
|
0
|
*
|
|
|
\
\
\
\
\
|
|
*
|
*
|
|
|
\
\
\
\
\
|
|
|
0
0
♦
|
х
Рис. 3.59 Решение задачи для уравнения Фишера
На рис. 3.59 представлены графики решения задачи при параметрах по умолчанию. Само решение имеет вид бегущей волны со скоростью равной (Колмогоров, Петровский, Пискунов) 2y/ks = 2. Для решения задачи Коши используется модуль integrate пакета SciPy.
Прямые методы линейной алгебры
Одной из основных задач вычислительной математики является проблема решения систем линейных алгебраических уравнений с вещественными коэффициентами. Для нахождения приближенного решения систем уравнений используются прямые и итерационные методы. Математический аппарат линейной алгебры базируется на понятиях нормы вектора и матрицы, числа обусловленности. Рассматриваются классические методы исключения неизвестных, отмечаются особенности решения задач с симметричной вещественной матрицей.
Основные обозначения
|
X = {Xi} = {хих2,...,хп}
|
— n-мерный вектор
|
А = {ay}
|
— матрица с элементами
|
Е
|
— единичная матрица
|
D = diag{dx, d2, • • •, dn]
|
— диагональная матрица
|
INI
|
— норма вектора х
|
N1
|
— норма матрицы А
|
det(^)
|
— определитель матрицы А
|
cond(A)
|
— число обусловленности матрицы А
|
Задачи решения систем линейных уравнений
Рассматривается задача нахождения решения системы линейных алгебраических уравнений
Ах = /. (4.1)
Здесь А — квадратная матрица п х п с вещественными коэффициентами hj — 1,2, ...,n, / — заданный вектор с вещественными компонентами, х — искомый вектор. Будем считать, что определитель матрицы А отличен от нуля и поэтому система уравнений (4.1) имеет единственное решение. Для
его нахождения будем использовать прямые (точные) методы, в которых решение находится за конечное число арифметических действий.
Входные данные (коэффициенты матрицы А и компоненты вектора/) заданы с погрешностью, т.е. вместо (4.1) решается система уравнений
Ах = /. (4.2)
Необходимо оценить влияние погрешностей в задании коэффициентов и правой части па решение задачи. Близость решения задачи к решению задачи с точными входными данными связывается с числом обусловленности матрицы.
Алгоритмы решения систем линейных уравнений
Рассматриваются основные понятия линейной алгебры: норма вектора, согласованная норма матрицы. Дается оценка погрешности решения системы линейных уравнений при возмущении правой части и коэффициентов матрицы на основе привлечения понятия числа обусловленности. Среди прямых методов выделяется метод Гаусса с и без выбора главного элемента, который связан с разложением матрицы на произведение треугольных матриц. Для задач с симметричными вещественными матрицами выделяется метод квадратного корня (метод Холецкого).
*
Обусловленность матрицы и оценки точности
Среди норм векторов наиболее употребительны нормы:
п
Nli = XNI>
4
1/2
Nb =
хы2
=1
=
Мао
max I
1<г<п 1
Матричная норма ||А|| подчинена векторной норме ЦяЦ, если
P
ЕМ 11*11'
II = max
х^О
Для квадратной невырожденной матрицы А существует единственная матрица А-1, называемая обратной, для которой AA~l — A~lA = Е. Число обусловленности матрицы А есть
cond(^) = |И||||Л_1||.
При рассмотрении близости решений уравнений (4.1), (4.2) для погрешности в задании матрицы, решения и правой части используем обозначения
5А = А - А, дх = х - х, 5f = / - /.
Если матрица А имеет обратную и выполнено условие
1ИНИ|<1,
тогда для относительной погрешности справедлива оценка lifall . cond(A) n\SA\\ ||g/||\
INI -1-сопс1(А)||М||||Л||-ЧМ1 ll/ll / 1 j
Оценка (4.3) выражает устойчивость решения при возмущении правой части и коэффициентов уравнения (4.1) (корректность задачи).
Метод Гаусса для решения систем линейных уравнений
Классический алгоритм исключения неизвестных (метод Гаусса) связывается с использованием представления исходной матрицы А в виде произведения треугольных матриц. Матрица А называется нижней (левой) треугольной матрицей, если ее элементы ац = 0 при г < j, для верхней (правой) треугольной матрицы А — aij = 0, если г > j.
Е
Ф 0, det \А\ ф О,
ап ф О,
ап а\2 (221 &22
сли все главные миноры матрицы А отличны от нуля, т.е.
тогда матрица А представима в виде
A
(4.4)
= LU,
где L — нижняя треугольная матрица с единичной диагональю и U — верхняя треугольная матрица с ненулевыми диагональными элементами.
Приведем рекуррентные формулы для определения треугольных матриц L и U:
ии — &1Ь aj 1
^1 j 5 Ijl 5 3 2,3,..., 72,
Un
i— 1
иц — ац ^ ^ i — 2,3,..., n,
k=1
Do'stlaringiz bilan baham: |