Мегаобучалка Главная | О нас | Обратная связь


Реализация метода квадратного корня для решения линейных систем. Тестирование программы



2020-03-19 384 Обсуждений (0)
Реализация метода квадратного корня для решения линейных систем. Тестирование программы 0.00 из 5.00 0 оценок




В данном пункте описано тестирование программы, посвященной методу квадратного корня решения линейных систем. Код программы составлен на языке Pascal и находится в приложении.

Для того, чтобы удостовериться, что программа работает правильно, решим конкретный пример вручную, а затем сравним полученный результат с результатом программы.

Задача 1.Пусть дана система линейных уравнений:

 

 

Этой системе соответствуют: матрица коэффициентов А и столбец свободных членов b:


А= b=

 

В коде программы прописано, что пользователь может ввести матрицу размерности не более, чем 10×10, но, вводя коэффициенты, необходимо помнить о том, что матрица должна быть симметричной. В противном случае программа сработает неправильно.

Найдем элементы матрицы Т. Это действие оформлено в коде программы в качестве процедуры PROCEDURE Tij, которая вычисляет коэффициенты матрицы Т из разложения (2.3.1) по формулам (2.3.2). Таким образом, получим:

 

t211 = 1  t11 = 1, t12 =2  t12 = 2,t13 = 4  t13 = 4,+ t222= 13  t22 = 3,t13 + t22 t23= 23  t23 =5,+ t223 +t233 = 77  t33 =6

 

Таким образом, матрица А раскладывается в произведение матриц T’ и Т (2.3.1):

 

А= *

 

Решим систему T’y=b. В коде программы данному действию соответствует процедура PROCEDURE Yi , которая описывает процесс вычисления вспомогательного столбца у по формулам (2.3.6) из нижней треугольной матрицы (2.3.4).

 

 

Решим систему Тх=у. Данное действие представлено в коде программы в виде процедуры PROCEDURE Хi, которая считает искомый столбец х по формулам (2.3.7) из верхней треугольной матрицы (2.3.5). По завершении этого этапа программа выводит на экран значения х1…xn, а также выполняется проверка правильности найденного решения. Суть её состоит в том, что полученные значения х подставляются в исходную матрицу и высчитывается значение столбца свободных членов b. Если оно совпадает с исходным, то решение найдено верно.

 

 

Результаты, которые вывела на экран программа при вводе тех же самых значений элементов матрицы А и столбца b, совпадают с результатами, полученными в данном пункте и находятся на рис.1.

Программа отлажена и готова к работе.


Рис. 1 - Реализация задачи

 

Задача 2. Протестируем эту же программу для других значений. Зададим очень маленькое значение Е. Входные данные, а также результат, полученный в ходе программы отражен на рисунке 2. По полученным результатам можно сделать вывод: значение Е не влияет на результат. И это не случайно. Ведь метод квадратного корня относится к группе точных методов.

 

Рис. 2


Заключение

 

В данной работе были рассмотрены прямые методы решения линейных систем: метод Гаусса, метод LU-разложения, метод прогонки, метод вращений и метод квадратного корня. К основным результатам курсовой работы можно отнести:

обзор литературы, связанной с прямыми методами решения линейных систем.

Реализация метода квадратного корня средствами системы программирования Turbo Pascal.

Более подробно был проанализирован один из методов решения систем линейных алгебраических уравнений: метод квадратных корней. Метод был предложен для решения системы Ax=b, где матрица A - симметрическая.

Также в данной системе были проанализированы разного рода матрицы, и их влияние на точность полученного решения. Основываясь на полученных выводах, можно контролировать в каких конкретно моментах удобно решать систему линейных алгебраических уравнений методом квадратных, а когда лучше использовать другой метод.


Список используемой литературы

1.  Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы. М.: Наука, 2001.

2. Вержбицкий В.М. Основы численных методов. М.: Высшая школа. 2002.

.   Крылов В.И. и др. Вычислительные методы, т.I. М.: Наука, 1976.

.   Трубников С.В Численные методы. Часть 1: Теория погрешностей. Решение алгебраических и трансцендентных уравнений и систем: Учебное пособие для студентов вузов. - Брянск: Изд-во БГУ, 2005.

.   Фаддеев Д.К., Фаддеева В.Н. Вычислительные методы линейной алгебры. М., Л.: изд-во физ.-мат. лит-ры, 1963.

.   Лапчик М.П., рагулина М.И., Хернер Е.К. Численные методы.- М.: Наука, 2007.

.   Заварыкин В.М., Житомирский Г.В. Численные методы.- М.: Просвещение 1990.

.   Березин И.С., Жидков Н.П. Методы вычислений, том 1. М.: Наука, 1966.

.   Березин И.С., Жидков Н.П. Методы вычислений, том 2. М.: Наука, 1966.

.   Воеводин В.В., Кузнецов Ю.А., Матрицы и вычисления.- М.: Наука, 2007.

.   Программирование в среде Turbo Pascal 7.0: А. М. Епанешников, В. А. Епанешников - Москва, Диалог-МИФИ, 2004 г.- 368 с.


Приложение

линейный система матрица программа

Листинг программы, реализующей метод квадратного корня для решения линейных систем

 

Program KvadrKoren;crt;= record

d: real;

y: real;

end;= array [1..10] of complex; {массив для задания вектор-столбцов }= array [1..10, 1..10] of complex; {массив для задания матриц}

Y, X, B: Vector;{вектор-столбцы: вспомогательный, искомый и свободных членов}, T: Massiv;{матрицы: исходная и матрица из разложения (2.3.1)}, j, n: integer; {индексы}, s, f: complex; {вспомогательные переменные}: array [1..10] of real; {вспомогательный вектор-столбец}: real; {погрешность}SUM (a,b: complex; var c: complex); {процедуры SUM-KOR - это заранее описанные математические операции, .d :=a.d+b.d; используемые в программе}

c.y:=a.y+b.y;;RAZ (a,b: complex; var c: complex);.d :=a.d-b.d;.y:=a.y-b.y;;UMN (a,b: complex; var c: complex);.d :=a.d*b.d - a.y*b.y;.y:=a.d*b.y + a.y*b.d;;DIL (a,b: complex; var c: complex);.d :=(a.d*b.d + a.y*b.y)/(b.d*b.d + b.y*b.y);.y:= (b.d*a.y - a.d*b.y)/(b.d*b.d + b.y*b.y);;KOR (a: complex; var c: complex);r, f: real;:= sqrt (a.d*a.d + a.y*a.y);.d :=sqrt(r)*sqrt((a.d/r+1)/2);.y:= sqrt(r)*sqrt((1-a.d/r)/2)

END;Tij; {нахождение матрицы Т из разложения (2.3.1) по формулам (2.3.2)}

var k, i, j: integer;

BEGIN(A[1,1], T[1,1]); {нахождение 1 элемента по 1 формуле из (2.3.2)}i:= 1 to n do {нахождение элементов1 строки и главной диагонали по 3 формуле из (2.3.2)}

for j:=1 to n do(i=j) and (i<>j) then

begin.d:= 0;{вспомогательные переменные}

s.y:= 0;

for k:=1 to i-1 do

begin(T[k, i], T[k, i], p);(s, p, s);;(A[i, j], s, p);(p, T[i, j]); i<j then {нахождение оставшихся элементов}

begin.d:= 0;.y:= 0;k:= 1 to i-1 do(T[k, i], T[k, i], p);(s, p, s);;(A[i, j], s, p);

DIL(p, T[i, j], T[i, j]);

endi>j then {так как матрица Т - верхняя треугольная, то все элементы под главной диагональю - нулевые}[i, j].d := 0;

T[i, j].y := 0;;;

PROCEDURE Yi {нахождение столбца у по формулам (2.3.6) из k, i: integer; из нижней треугольной системы (2.3.4)}

BEGIN(b[1], T[1, 1], y[1]);{находим у1}

for i:= 2 to n do{находим все остальные у}.d:= 0;{вспомогательные переменные}

s.y:= 0;k:= 1 to i-1 do(T[k, i], y[k], p);(s, p, s);;(b[i], s, p);(p, T[i, i], y[i]);;

END;Xi {нахождение искомого вектор-столбца х k, i: integer; по формулам (2.3.7) из верхней треугольной матрицы (2.3.5)}(y[n], T[n,n], x[n]); {нахождение хn}i:= n-1 downto 1 do {нахождение остальных х} .d:= 0;{вспомогательные переменные}

s.y:= 0;k:= i+1 to n do(T[i,k], x[k], p);(s, p, s);;(y[i], s, p);(p, T[i, i], x[i]);;

END;PROVERKA;{подставляем полученные значения в исходную i, j: integer; систему и считаем столбец свободных членов заново. Эти значения заносим во вспомогательный вектор- i:=1 to n do столбец свободных членов z. Сравниваем этот столбец с исходным столбцом b. Если они совпали, [i]:= 0; то система решена правильно. }

for j:=1 to n do[i]:=z[i] + a[i,j].d*x[j].d;(‘b’, i, ’=’, z[i]:7:7);;;; {очистить экран}(‘vvedite razmernost matritsy n=’);

readln(n); {ввод размерности матрицы}

write(‘vvedite pogreshnost vychislenia e=’);(e); {ввод погрешности}(‘vvedite koefficienty matritsy’);

for i:=1 to n do{ввод коэффициентов матрицы}

for j:=1 to n do(‘a[’, I, ‘,’, j, ‘]=’);(a[i,j].d);;(‘vvedite stolbets svobodnyh chlenov’);

for i:=1 to n do {ввод столбца свободных членов}

begin(‘b[’, i, ‘]=’);(b[i].d);;

Tij; {нахождение матрицы Т}; {нахождение вектор-столбца y}; {нахождение решения x}i:=1 to n do(‘proverka pravilnosty’);{процедура проверки};;.



2020-03-19 384 Обсуждений (0)
Реализация метода квадратного корня для решения линейных систем. Тестирование программы 0.00 из 5.00 0 оценок









Обсуждение в статье: Реализация метода квадратного корня для решения линейных систем. Тестирование программы

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (384)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.007 сек.)