Реализация метода квадратного корня для решения линейных систем. Тестирование программы
В данном пункте описано тестирование программы, посвященной методу квадратного корня решения линейных систем. Код программы составлен на языке 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’);{процедура проверки};;.
Популярное: Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной... Почему стероиды повышают давление?: Основных причин три... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (384)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |