Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Расчетное задание / КМ1 / Отчет КМ1 Долгов Р. ТФ-12-20 (неисправленный)

.pdf
Скачиваний:
4
Добавлен:
16.05.2024
Размер:
2.16 Mб
Скачать

Национальный Исследовательский Университет «МЭИ»

кафедра «АЭС»

Отчет по типовому расчету по курсу «Информационные и сетевые технологии ядерной энергетики»

Группа: ТФ-12-20 Студент: Долгов Р.Н.

Преподаватель: Воробьев Ю.Б. Дата выполнения отчета: 04.03.24

Москва 2024

Цель работы

Развитие у студентов навыков использования современных информационных технологий применительно к задачам ядерной энергетики.

Если рассматривать задачи связанные с научно-исследовательской и конструкторской деятельностью в данной области, то основная их специфика в настоящее время характеризуется следующим:

1.Существенным требованием к компьютерным ресурсам: RAM, жесткий диск, CPU.

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

3.Широкое использование методов параллельных расчетов.

4.Использование языков высокого уровня Fortran, C/C++.

5.Использование готовых библиотек математических процедур.

6.Требования к повышенной точности расчетов.

Тема подпрограмм: Factor (разложение на множители).

Вариант №14:

Подпрограмма №1: Solve a linear system after factoring (Решение линейной системы после размножения на множители).

Задача: Решите сложную Эрмитову систему линейных уравнений с учетом

разложения коэффициентов матрицы вида U·DUH.

Для этого используем: CALL LFSHF (N, FAC, LDFAC, IPVT, B, X)

Входные параметры подпрограммы:

1.N — Число уравнений.

2.FAC — Комплексная матрица размерностью NxN, содержащая разложение на множители матрицы коэффициентов A в качестве выходных данных процедуры LFCHF/DLFCHF или LFTHF/DLFTHTHF. Используется только верхний треугольник FAC.

3.LDFAC — ведущее измерение FAC в точности так, как указано в инструкции измерения вызывающей программы.

4.IPVT — вектор длины N, содержащий сводную информацию для факторизации A в качестве выходных данных из процедуры

LFCHF/DLFCHF или LFTHF/DLFTHTHF.

5.B — комплексный вектор длины N, содержащий правую часть линейной системы.

Выходные параметры подпрограммы:

1.X — комплексный вектор длины N, содержащий решение линейной системы. Если B не требуется, B и X могут совместно использовать одни и те же места хранения.

Алгоритм.

Процедура LFSHF вычисляет решение системы линейных алгебраических уравнений, имеющих сложную Эрмитову матрицу неопределенных коэффициентов. Чтобы вычислить решение, матрица коэффициентов должна сначала подвергнуться разложению на множители вида U·DUH. Это можно сделать, вызвав либо LFCHF, либо LFTHF. LFSHF и LFIHF оба решают линейную систему с учетом ее разложения вида U·DUH. LFIHF обычно занимает больше времени и дает более точный ответ, чем FSHF. Каждая итерация алгоритма итерационного уточнения, используемого LFIHF, вызывает LFSHF.

LFSHF основан на процедуре LINPACK CSISL.

Пример решения.

Перенесем пример из библиотеки IMSL в систему программирования Fortran и сравним результаты описанные в IMSL и полученные в программе.

Последовательно решается набор линейных систем. Вызывается функция LF HF для разложения матрицы коэффициентов. Вызывается функция FSHF для вычисления трех решений для трех правых частей. В этом случае предполагается, что матрица коэффициентов хорошо подготовлена и правильно масштабирована. В противном случае было бы лучше вызвать LCHF для выполнения факторизации и LFIHF для вычисления решений.

Линкинг – 0 ошибок, 0 предупреждений.

Компиляция – 0 ошибок, 0 предупреждений.

Для наглядности сравним результаты из программы и примера в IMSL.

Результаты совпадают.

Подпрограмма №2: High accuracy linear system solution after factoring (Высокоточное линейное системное решение после разложения).

Задача: Используйте итерационное уточнение для улучшения решения сложной Эрмитовой системы линейных уравнений.

Для этого используем: CALL LFIHF (N, A, LDA, FAC, LDFAC, IPVT, B, X, RES)

Входные параметры подпрограммы:

1.N — Число уравнений.

2.A — комплексная матрица размерностью NxN, содержащая матрицу коэффициентов Эрмитовой линейной системы. Указана ссылка только на

верхний треугольник A.

3.LDA — начальное измерение A в точности так, как указано в инструкции измерения вызывающей программы.

4.FAC — Комплексная матрица размерностью NxN, содержащая разложение матрицы коэффициентов A в качестве выходных данных процедуры LFCHF/DLFCHF или LFTHF/DLFTHTHF. Используется только верхний треугольник FAC.

5.LDFAC — ведущее измерение FAC в точности так, как указано в инструкции измерения вызывающей программы.

6.IPVT — вектор длины N, содержащий сводную информацию для факторизации A в качестве выходных данных из процедуры

LFCHF/DLFCHF или LFTHF/DLFTHTHF.

7.B — комплексный вектор длины N, содержащий правую часть линейной системы.

Выходные параметры подпрограммы:

1.X — комплексный вектор длины N, содержащий решение.

2.RES — комплексный вектор длины N, содержащий остаточный вектор при улучшенном решении.

Алгоритм.

Процедура LFIHF вычисляет решение системы линейных алгебраических уравнений, имеющих сложную Эрмитову матрицу неопределенных коэффициентов. Для повышения точности выполняется итерационное уточнение вектора решения. Обычно почти все значения в решении точны, даже если матрица несколько некорректна. Чтобы вычислить решение, матрица коэффициентов должна сначала подвергнуться разложению на множители вида U·DUH. Это можно сделать, вызвав либо LFCHF, либо LFTHF. Итерационное уточнение завершается неудачей только в том случае, если матрица плохо обусловлена. LFIHF и LFSHF оба решают линейную систему с учетом ее U·DUH факторизации. LFIHF обычно занимает больше времени и дает более точный

ответ, чем FSHF. Каждая итерация алгоритма итеративного уточнения, используемого LFIHF, вызывает LFSHF.

Пример решения.

Перенесем пример из библиотеки IMSL в систему программирования Fortran и сравним результаты описанные в IMSL и полученные в программе.

Последовательно решается набор линейных систем. Вектор правой части возмущается после решения системы каждый из первых двух раз путем добавления 0,2 + 0,2i ко второму элементу.

Линкинг – 0 ошибок, 0 предупреждений.

Компиляция – 0 ошибок, 0 предупреждений.

Для наглядности сравним результаты из программы и примера в IMSL.

Результаты совпадают.

Подпрограмма №3: Compute determinant after factoring (Вычислить определитель после разложения на множители).

Задача: Вычислить определитель комплексной Эрмитовой матрицы с учетом разложения вида U·DUH.

Для этого используем: CALL LFDHF (N, FAC, LDFAC, IPVT, DET1, DET2)

Входные параметры подпрограммы:

1.N — Число уравнений.

2.FAC — Комплексная матрица размерностью NxN, содержащая разложение матрицы коэффициентов A в качестве выходных данных процедуры LFCHF/DLFCHF или LFTHF/DLFTHTHF. Используется только верхний треугольник FAC.

3.LDFAC — ведущее измерение FAC в точности так, как указано в инструкции измерения вызывающей программы.

4.IPVT — вектор длины N, содержащий сводную информацию для факторизации A в качестве выходных данных из процедуры

LFCHF/DLFCHF или LFTHF/DLFTHTHF.

Выходные параметры подпрограммы:

1.DET1 — скалярный параметр, содержащий мантиссу определителя. Значение, установленное в 1, нормализуется таким образом, что 1.0 = |DET1| < 10.0 или DET 1 = 0.0.

2.DET2 — скалярный параметр, содержащий показатель степени определителя. Определитель возвращается в виде det(A) = DET1∙10DET2.

Алгоритм.

Процедура LFDHF вычисляет определитель комплексной Эрмитовой матрицы неопределенных коэффициентов. Чтобы вычислить определитель, матрица коэффициентов должна сначала подвергнуться разложению вида U·DUH. Это можно сделать, вызвав либо LFCHF, либо LFТHF. Поскольку det U = ±1, для вычисления определителя используется формула det A = det U det D det UH = det D. Det D вычисляется как произведение определителей его блоков.

Пример решения.

Перенесем пример из библиотеки IMSL в систему программирования Fortran и сравним результаты описанные в IMSL и полученные в программе.

Компиляция – 0 ошибок, 0 предупреждений.

Линкинг – 0 ошибок, о предупреждений.

Для наглядности сравним результаты из программы и примера в IMSL.

Результаты совпадают.