Найти тему

Бушков А.А. Статья14. Решение систем линейных алгебраических уравнений (СЛАУ) на ЭВМ.

Оглавление

В прошлых 13 статьях мы рассмотрели устройство Центрального процессора, его главные блоки.

Делали сравнение работы ЭВМ ЕС-1020, ЕС-1035, ПК на основе i7 10700K.

Сейчас мы оценим работу ЦП i7 10700K на реальном примере - на Решении Систем Линейных Алгебраических Уравнений (СЛАУ) различного ранга и сравним скорость его работы с ЭВМ ЕС-1020 и ЕС-1035.

СЛАУ имеет следующий вид:

СЛАУ из 10 уравнений. Ранг 10.
СЛАУ из 10 уравнений. Ранг 10.
Лирическое отступление
Лирическое отступление
СЛАУ из 10 уравнений. Ранг 10. Другой вид для удобства.
СЛАУ из 10 уравнений. Ранг 10. Другой вид для удобства.

СЛАУ может иметь много уравнений. Будем рассматривать и решать СЛАУ с рангом до 7000. Т.е. систему из 7000 уравнений. Будем искать КОРНИ этой системы.

Предварительно была создана произвольная матрица коэффициентов A, которая представляет собой случайные числа двойной точности с плавающей точкой (8 байт). Нулей нет. Полная матрица A(i,j).

Были заданы заранее известные КОРНИ X(i) в диапазоне от 1 до 100.

Если Ранг матрицы равен 1000, то заранее известные корни строятся повторением диапазона (1-100) от 1 до 1000. После 100-го корня идёт 1,2,3...100. И так далее до 1000.

Потом мы вычислили свободные члены типа f(i)

f(i) = A(i,j) * X(i)

и получили готовую матрицу С(i,j) для решения СЛАУ на ЭВМ.

Матрица С получилась присоединением справа к матрице случайных чисел A столбца вычисленных свободных членов f :

C = A + f

Если ранг СЛАУ 1000, то матрица для решения СЛАУ Рангом 1000 будет иметь размерность С(1000, 1001).

Аналогично для СЛАУ Рангом 6000 матрица для решения будет иметь размерность С(6000, 6001) и тому подобное.

Это сделано для того, чтобы контролировать решение СЛАУ, контролировать правильность алгоритма и точность вычислений.

Т.е. в результате решения СЛАУ Рангом 1000 мы получаем 1000 корней в порядке от 1 до 1000. Мы можем визуально узнать эти корни, так как заранее их задали. А также можем оценить точность решения путём сравнения полученного корня и заранее заданного.

Для СЛАУ с другим Рангом поступаем так же.

Ниже идёт таблица времени решения СЛАУ с разными Рангами.

-4

Здесь вспомним, что ЕС-1020 решала СЛАУ с рангом 1000 за двое суток.

ЕС-1035 решала СЛАУ с рангом 1000 за 5 часов.

А ЦП i7 10700K решает СЛАУ рангом 1000 за 20 секунд!

Какой ПРОГРЕСС !

Оценим точность вычислений с представлением чисел в двойной точности с плавающей точкой Double ( 8 байт, смотрите соответствующую статью ранее).

-5

Здесь мы решали СЛАУ Рангом 6000. Из 6000 уравнений и получили 6000 корней. Как видно из таблицы мы получили приличное приближение вычисленных корней с заранее заданными. Отличие в 7 знаке после запятой!

А количество чисел в МАТРИЦЕ было 6000 х 6001 + 1000 =36 006 000, это более 36 миллионов чисел. Хороший результат! ЦП перемолол столько чисел и выдал результат с большой точностью всего за 81 минуту!

ЕС-1035 вычисляла бы 6000 корней приблизительно за 2000 часов, что не реально.

Оценим как влияет на точность вычислений КОРНЕЙ форма представления чисел. До этого мы брали двойную точность или Double.

Представляю результаты решения СЛАУ с точностью представления чисел типа Real, или одинарной точностью с плавающей точкой (4 байта).

-6

При решении СЛАУ Рангом 300 с числами одинарной точности мы получили КОРНИ, которые отличаются от контрольных уже в первом знаке после запятой. Уже неприемлемый результат...

-7

При решении СЛАУ Рангом 50 с числами одинарной точности мы получили КОРНИ, которые отличаются от контрольных в третьем знаке после запятой. Тоже плохо.

При увеличении Ранга СЛАУ с числами одинарной точности быстро падает точность вычисления корней.

Приведем еще некоторые сведения.

-8

Здесь показаны КОРНИ решения СЛАУ Рангом 100 с числами двойной точности.

Видим, что совпадение полученных корней и заданных корней составляет 9 знаков после запятой.
Вывод простой. Чем больше Ранг, тем больше вычислений и тем больше накапливается ошибка и точность Корней становится меньше.

-------------------------------

-9

В процессе вычислений мы проверяем Корни путем подстановки их в матрицу А и производим умножение для получения свободного члена:

А(i,j) х X(i) = f(i)

В приведенной таблице решалась СЛАУ 100 Рангов с двойной точностью. Время вычислений меньше секунды.

Отличие Свободного члнена и вычисленной Суммы строки наблюдается только в 11 знаке после запятой. Очень хороший результат!

-------------------------------

Матрица случайных чисел. Типичный вид.
Матрица случайных чисел. Типичный вид.

-----------------------------------

Конец работы программы. Типичный вид экрана.
Конец работы программы. Типичный вид экрана.

--------------------

Интерфейс программы создания матрицы случайных чисел с вычисленными уже свободными членами для работы основной программы по решению СЛАУ.
Интерфейс программы создания матрицы случайных чисел с вычисленными уже свободными членами для работы основной программы по решению СЛАУ.

Если Вам понравился материал статьи, подпишитесь пожалуйста на мой канал в целом.

Для этого пройдите по ссылке ниже и нажмите кнопку "Подписаться"

https://dzen.ru/profile/editor/id/62cd3cfc63f88417d7e74b79