Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Informatics.doc
Скачиваний:
6
Добавлен:
21.08.2019
Размер:
1.33 Mб
Скачать

Iter(a, b, e) n  Last (b)

for i 0 . . n

r (A i, i ) -1, x i b i r

s i x i , y i 0

for j 0 . . n

T i, j if (i = j, 0, A i, j r)

while |x - y| > e

y x, x s - Ty

x

C. Во многих задачах матрицы линейных систем уравнений ока-зываются сильно разреженными (бóльшая часть элементов – нули). Эту специфику также можно "употребить во благо". Например, в слу-чае 3-диагональных систем уравнений (А i,j = 0 при | i - j | > 1), очень эффективен метод "прогонки", использующий лишь эти три диагона-ли матрицы данных. Будем считать, что система линейных уравнений

имеет вид:

Из первого уравнения имеем: x 0 = b 0 / a 01 , x 1 = u 0 - v 0 x 1 . Если уже

найдено представление

x i - 1= u i - 1 - v i - 1 x i ( i > 1), (1)

то из уравнения a i 0 (u i - 1 - v i - 1 x i ) + a i 1 x i + a i 2 x i + 1 = b i получаем

x i = u i - v i x i + 1 , где теперь

u i = v i = (i = 1, 2, ...) . (2)

Тогда из последнего уравнения x n - 1 = и по форму-ле (1) получаем x i для всех i = n - 2, n - 3, ... , 1, 0 (обратный ход про-гонки, формулы (2) определяют прямой ход). Очевидно, что для хра-нения значений u i , v i можно использовать измененные x i , b i . Поэ-тому программа, реализующая процесс прогонки, может быть записа-на достаточно компактно и просто. С вычислительной точки зрения метод прогонки имеет много очевидных преимуществ перед методом итераций (например, программа легко справляется с системой уравне-ний с более чем 10000 неизвестных). В MathCad метод можно офор-мить в виде функции:

P rog(A, b) n Last(b)

x 0 b 0 (A 0, 1) -1, b 0 A 0, 2 (A 0, 1) -1

for i 1 . . n

p (A i, 1 - A i, 0 b i - 1) -1

x i (b i - A i, 0 x i - 1) p, b i A i, 2 p

for i n - 1 . . 0

x i x i - b i x i + 1

x

D. Переопределенные системы линейных уравнений удобно ре-

шать методом обобщенной обратной матрицы A+, возвращаемой функ-цией Geninv. Матрица A+ = (ATA)-1AT обладает свойством аналогич-ным свойству настоящей обратной матрицы: A+AA+ = A+, AA+A = A. Полученное "решение" не является решением системы уравнений в обычном смысле, оно минимизирует скалярный квадрат разности меж-ду левой и правой частями системы (метод наименьших квадратов). Пусть, например, через точки (x i , y i ), i = 0, ... ,n - 1, плоскости нужно провести параболу вида у = ах2 + bх + с, наименее уклоняющуюся (в смысле наименьших квадратов) от исходных данных. Составим матри-цу для i = 0 ... n - 1, j = 0 ... 2, A i, j . Тогда решение за-дачи, т. е. вектор коэффициентов (a, b, c), возвращает Geninv(A) y.

Аналогично можно решать любую линейную задачу среднеквадратич-

ного приближения (см. также функции Slope, Intercept, Regress). Для простейшей ситуации y = a x + b (линейная регрессия) коэффициенты

получаются стандартно как a = Slope(x, y), b = Intercept(x, y).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]