
num-meth
.pdf

152 Глава 4. Численные методы решения обыкновенных дифференциальных уравнений
где |
|
|
|
|
|
|
|
|
F (x) = f(x) |
− |
p(x)v′(x) |
− |
q(x)v(x), v(x) = A = |
B − A |
(x |
− |
a), |
|
|
|
b a |
|
|
−
с однородными условиями
u(a) = 0, u(b) = 0.
Найдя МКЭ ее приближенное решение
∑n
un(x) = ciϕi(x),
i=1
получаем
y(x) ≈ yn(x) := un(x) + v(x).
154 Глава 4. Численные методы решения обыкновенных дифференциальных уравнений
проблемы собственных значений.
Программа должна содержать реализацию каждого из методов, указанных в варианте. Программа должна формировать серию из 10 квадратных матриц, порядка от 3 до 13, причем каждая последующая матрица должна быть порядка, на единицу большего, чем предыдущая: первая матрица должна быть порядка 3, вторая – 4, третья – 5, и т.д. Используя каждую из этих матриц в качестве исходных данных, программа должна решить СЛАУ или задачу собственных значений (соответственно тому, что указано в конкретном варианте) – каждым из методов, указанных в варианте. Результаты должны быть выведены на экран или/и в файл. При решении задачи программа должна замерять параметры алгоритма: общее время вычислений (исключая время, затрачиваемое на ввод/вывод результатов), кол-во выполненных шагов алгоритма, погрешность полученного результата решения задачи (для итерационных методов). Эти результаты должны быть представлены в виде таблицы и графика как зависимости от порядка исходной матрицы – для каждого из реализованных методов. Студент должен сделать вывод о характере зависимостей и сопоставить их с аналитическими данными. Также на основании этих данных необходимо сделать вывод о сравнительной эффективности методов, реализованных в программе.
Желательно выполнить проверку работы программы для двух-трех матриц порядка 103 −104. Сделать выводы относительно эффективности реализаций алгоритмов для задач такого порядка. Также сравнить эффективность реализаций относительно друг друга.
Ниже приводятся варианты заданий. Номер пункта соответствует номеру варианта.
1.Метод Гаусса решения СЛАУ и его модификации
2.Применение QR-разложения и LU-разложения к решению СЛАУ
3.Комбинация использования полярного разложения и метода квадратного корня (сначала подвергнуть матрицу коэффициентов полярному разложения, а потом применить метод квадратного корня) и метод Холецкого в решении СЛАУ
4.Метод Гаусса и метод простой итерации решения СЛАУ
5.Метод простой итерации и метод Гаусса-Зейделя решения СЛАУ
6.Метод квадратного корня (матрицу привести к симметрической посредством домножения обеих частей уравнения на транспонированную матрицу) и модифицированный метод простой итерации (для решения СЛАУ)
7.Явный и неявный методы простой итерации (для решения СЛАУ)
8.Метод верхней релаксации и явный итерационный метод метод с чебышевским набором параметров для решения СЛАУ
9.Выполнить реализацию общего неявного метода простой итерации для решения СЛАУ; обеспечить возможность ввода вручную матрицы параметра и реализовать несколько способов автоматической генерации
10.Явный и неявный методы решения СЛАУ с чебышевским набором параметров
11.Метод минимальных невязок и метод минимальных поправок (решение СЛАУ)
12.Метод Крылова и метод Данилевского (решение проблемы собственных значений)
13.Метод Данилевского и метод вращений (метод Якоби)
14.Метод Крылова и QR-алгоритм решения проблемы собственных значений
4.5.Методы приближенного решения краевых задач для обыкновенных дифференциальных уравнен
15.Явный метод с чебышевским набором параметров и метод простой итерации
16.Неявный метод с чебышевским набором параметров и метод Зейделя
17.Модифицированный метод простой итерации и метод верхней релаксации (решения СЛАУ)
18.Явный метод скорейшего спуска и явный метод простой итерации решения СЛАУ
19.Неявный метод скорейшего спуска и неявный метод простой итерации решения СЛАУ
20.Метод вращений (метод Якоби) и QR-алгоритм решения проблемы собственных значений
21.Метод Гаусса и применение QR-разложение в решении СЛАУ
22.Метод Гаусса и применение LU-разложение в решении СЛАУ
23.Применение QR-разложение в решении СЛАУ и метод минимальных невязок
24.Явный метод скорейшего спуска и явный метод с чебышевским набором параметров
25.Неявный метод скорейшего спуска и неявный метод с чебышевским набором параметров
26.Явный и неявный методы скорейшего спуска
Варианты заданий для второй лабораторной работы
Варианты второй лабораторной работы покрывают тему «методы интерполяции». В работе требуется реализовать метода решения задачи интерполяции сеточной функции, или численного интегрирования или дифференцирования – в зависимости от варианта.
В программе должны быть реализованы указанные в варианте методы. Для аналитически заданной на отрезке функции (некоторые примеры приведены после списка вариантов) составить серию сеток из 100, 150, . . . , 600 узлов. Каждая сетка должна быть с равноотстоящими или неравноотстоящими узлами узлами – в зависимости от специфики метода, указанного в варианте. Если в задании указано два (или более) метода, либо семейство методов (в частности, стандартные формулы например, формулы Ньютона, Стирлинга или Бесселя задают семейство однотипных методов различного порядка), необходимо выполнить сравнение эффективности этих методов. Для этого программа должна последовательно использовать каждую сетку для решения соответствующей задачи каждым из методов, указанных в варианте задания.
Каждая сетка и полученные результаты должны быть выведены на экран или/и в файл в виде таблиц и графиков. В задачах дифференцирования и интегрирования полученные сеточные представления функций и их графики необходимо сравнить с данными, полученными с помощью аналитических выражений. При решении задачи программа должна замерять параметры алгоритма: общее время вычислений (исключая время, затрачиваемое на ввод/вывод результатов), кол-во выполненных шагов алгоритма, погрешность полученного результата решения задачи. Эти результаты должны быть представлены в виде таблицы и графика как зависимости от порядка исходной матрицы – для каждого из реализованных методов. Студент должен сделать вывод о характере зависимостей и сопоставить их с аналитическими данными. Также на основании этих данных необходимо сделать вывод о сравнительной эффективности методов, реализованных в программе.

4.5. Методы приближенного решения краевых задач для обыкновенных дифференциальных уравнен
Таблица 2 (продолжение)
№Тема задания
19Интегрирование с помощью квадратурной формулы средних прямоугольников и простейшей формулы трапеций
20Интегрирование с помощью составных квадратурных формул НьютонаКотеса 1-го и 2-го порядков
21Интегрирование с помощью алгоритма прямоугольников-трапеций
22Интегрирование с помощью алгоритма Ромберга
23Интегрирование с помощью формулы Чебышева порядков 1-5
24Интегрирование с помощью формулы Гаусса порядков 1-5
25Реализовать процедуру подсчета производной порядка n на основе последовательного применения конечноразностых формул численного дифференцирования (порядок используемой формулы вынести как параметр алгоритма). Для расчета погрешностей использовать простейшую симметрическую аппроксимацию
26Реализовать процедуру подсчета производной порядка n на основе последовательного применения конечноразностых формул численного дифференцирования (порядок используемой формулы вынести как параметр алгоритма). Для расчета погрешностей использовать простейшую несимметрическую аппроксимацию
Варианты заданий повышенной сложности
Варианты заданий повышенной сложности представляют собой задания, выдаваемые студентам в индивидуальном порядке для выполнения в течение семестра. При выполнении данных заданий от студента требуется проявить повышенные навыки при принятии инженерных и оптимизационных решений, продемонстрировать навыки владения современными техниками и технологиями проектирования и программирования. По своей формулировке задания являются поисковыми и требуют изучения и анализа литературы, поиска наиболее подходящих для задания методов и решений.
Основное требование к реализации – обеспечение (эффективной) работы с задачами большой размерности. Также, реализация должна обеспечивать средства визуализации всех входных и выходных данных, а также режим визуализации по требованию пользователя промежуточных результатов. Кроме того, от студента требуется выполнить самостоятельный поиск конкретных численных методов решения их соответствующих задач, наиболее адекватных поставленным условиям. Если в задании требуется реализовать несколько методов, необходимо выполнить их сравнение по эффективности (см. условия задач для 1-й и 2-й л/р).
Для тестирования и отладки рекомендуется применять UNIT-тестирование.
1.Выполните реализацию средства решения разреженных СЛАУ с поддержкой решения систем размерности 107 (и выше). Выберите и реализуйте не менее трех ите-
158 Глава 4. Численные методы решения обыкновенных дифференциальных уравнений
рационных методов решения СЛАУ. Программа должна включать реализацию матричной арифметики (по крайней мере, операции сложения/вычитания, умножения на матрицу и умножения на число, возведение в целую положительную степень).
2.Выполните реализацию средства решения СЛАУ с поддержкой решения систем размерности 105 (и выше). Программная реализация должна автоматически определять разреженные системы (уведомляя об этом пользователя и спрашивая его согласие!) и для таких систем использовать разреженные матрицы. Программа должна включать реализацию матричной арифметики (по крайней мере, операции сложения/вычитания, умножения на матрицу и умножения на число, возведение в целую положительную степень). Выполните реализацию, по крайней мере, двух методов численного решения СЛАУ, при чем, по крайней мере, один из них должен быть прямым, и, по крайней мере, один – итерационным.
3.Выполните реализацию средства решения СЛАУ с поддержкой решения систем размерности 105 (и выше). Программная реализация должна автоматически определять вид системы: общий, треугольный, (трех)диагональный и т.д. Для каждого типа должен быть выбран и реализован наиболее эффективный метод численного решения СЛАУ (не менее четырех различных методов). Программа должна включать реализацию матричной арифметики (по крайней мере, операции сложения/вычитания, умножения на матрицу и умножения на число, возведение в целую положительную степень).
4.Выполните реализацию средства решения СЛАУ с поддержкой систем размерности 105 (и выше). Программа должна включать реализацию матричной арифметики: операции сложения/вычитания, умножения и деления на матрицу и умножения на число, возведение в вещественную степень. Выберите и реализуйте метод определения собственных значений матрицы, необходимых для вычисления ее канонического разложения. Реализуйте не менее двух различных методов решения СЛАУ, основанных на мультипликативных разложениях матриц.
5.Выполните реализацию «матричного калькулятора» с поддержкой систем размерности 105 (и выше). Программа должна включать реализацию матричной арифметики: операции сложения/вычитания, умножения и деления на матрицу и умножения на число, возведение в вещественную степень. Программа должна предоставлять средства вычисления собственных чисел матрицы, а также собственных векторов. Для отыскания собственных значений (всех или некоторых – по выбору пользователя), выберите и реализуйте не менее двух различных (прямых или итерационных) методов численного решения полной/частичной проблемы собственных значений.
6.Выполните реализацию средства решения СЛАУ с поддержкой систем размерности 105 (и выше). Программа должна включать реализацию матричной арифметики: операции сложения/вычитания, умножения и деления на матрицу и умножения на число, возведение в целую степень. Выберите и реализуйте метод определения собственных максимального и минимального собственных значений матрицы. Реализуйте явный и неявный Чебышевские методы решения СЛАУ. Реализуйте поддержку как матриц относительно малой размерности (до 103 – 104, включительно), так и матриц большой размерности. Выберите оптимальные структуры данных, реализуйте автоматическую систему переключения между ними.
7.Выполните реализацию средства анализа сеточных функций. Входными данными для такой системы является функция, заданная сеткой значений. Средство должно
4.5. Методы приближенного решения краевых задач для обыкновенных дифференциальных уравнен
обеспечивать численное определение производной и первообразной, нулей и экстремумов функции. Реализуйте средства вывода всех этих результатов в виде графиков. При интерполяции использовать формулы, по крайней мере, второго порядка. Предоставить возможность автоматического заполнения сетки на основе:
(a)аналитического выражения функции (вводимого с клавиатуры, либо выбираемого из заранее определенного списка);
(b)шаг разбиения
(c)исследуемый отрезок;
(d)вводимого пользователем разброса значений ∆y, так что если f(x) – выбранная пользователем функция, а x0 некоторая точка из исследуемого интервала, то программа для каждой точки x0 будет вычислять «значения с шумом», т.е. случайно выбирать из отрезка [f(x0) − ∆y; f(x0) + ∆y].
8.(Задача для двух исполнителей.) Выполните реализацию средства анализа функций. Входными данными для такой системы являются:
(a)аналитическое выражение функции (вводится с клавиатуры в виде выражения, либо выбирается один из нескольких шаблонов, для которых задаются параметры-коэффициенты; в случае использования шаблонов предусмотреть, по крайней мере, шаблоны для полиномов, тригонометрических функций, экспонент и логарифмов; предоставить возможность задания функций-сумм);
(b)исследуемый отрезок;
(c)вводимого пользователем разброса значений ∆y, так что если f(x) – выбранная пользователем функция, а x0 некоторая точка из исследуемого интервала, то программа для каждой точки x0 будет вычислять «значения с шумом», т.е. случайно выбирать из отрезка [f(x0) − ∆y; f(x0) + ∆y].
Средство должно обеспечивать численное определение производной и первообразной, нулей, экстремумов и точек разрыва функции. Реализуйте средства вывода всех этих результатов в виде графиков. При интерполяции использовать сплайны (по крайней мере, второго порядка), выбрать и реализовать процедуру оптимальной расстановки узлов.
Варианты заданий повышенной сложности
Варианты заданий повышенной сложности представляют собой задания, выдаваемые студентам в индивидуальном порядке для выполнения в течение семестра. При выполнении данных заданий от студента требуется проявить повышенные навыки при принятии инженерных и оптимизационных решений, продемонстрировать навыки владения современными техниками и технологиями проектирования и программирования. По своей формулировке задания являются поисковыми и требуют изучения и анализа литературы, поиска наиболее подходящих для задания методов и решений.
Основное требование к реализации – обеспечение (эффективной) работы с задачами большой размерности. Также, реализация должна обеспечивать средства визуализации всех входных и выходных данных, а также режим визуализации по требованию пользователя промежуточных результатов. Кроме того, от студента требуется выполнить самостоятельный поиск конкретных численных методов решения их соответствующих задач, наиболее адекватных поставленным условиям. Если в задании требуется реализовать
160 Глава 4. Численные методы решения обыкновенных дифференциальных уравнений
несколько методов, необходимо выполнить их сравнение по эффективности (см. условия задач для 1-й и 2-й л/р).
Для тестирования и отладки рекомендуется применять UNIT-тестирование.
1.Выполните реализацию средства решения разреженных СЛАУ с поддержкой решения систем размерности 107 (и выше). Выберите и реализуйте не менее трех итерационных методов решения СЛАУ. Программа должна включать реализацию матричной арифметики (по крайней мере, операции сложения/вычитания, умножения на матрицу и умножения на число, возведение в целую положительную степень).
2.Выполните реализацию средства решения СЛАУ с поддержкой решения систем размерности 105 (и выше). Программная реализация должна автоматически определять разреженные системы (уведомляя об этом пользователя и спрашивая его согласие!) и для таких систем использовать разреженные матрицы. Программа должна включать реализацию матричной арифметики (по крайней мере, операции сложения/вычитания, умножения на матрицу и умножения на число, возведение в целую положительную степень). Выполните реализацию, по крайней мере, двух методов численного решения СЛАУ, при чем, по крайней мере, один из них должен быть прямым, и, по крайней мере, один – итерационным.
3.Выполните реализацию средства решения СЛАУ с поддержкой решения систем размерности 105 (и выше). Программная реализация должна автоматически определять вид системы: общий, треугольный, (трех)диагональный и т.д. Для каждого типа должен быть выбран и реализован наиболее эффективный метод численного решения СЛАУ (не менее четырех различных методов). Программа должна включать реализацию матричной арифметики (по крайней мере, операции сложения/вычитания, умножения на матрицу и умножения на число, возведение в целую положительную степень).
4.Выполните реализацию средства решения СЛАУ с поддержкой систем размерности 105 (и выше). Программа должна включать реализацию матричной арифметики: операции сложения/вычитания, умножения и деления на матрицу и умножения на число, возведение в вещественную степень. Выберите и реализуйте метод определения собственных значений матрицы, необходимых для вычисления ее канонического разложения. Реализуйте не менее двух различных методов решения СЛАУ, основанных на мультипликативных разложениях матриц.
5.Выполните реализацию «матричного калькулятора» с поддержкой систем размерности 105 (и выше). Программа должна включать реализацию матричной арифметики: операции сложения/вычитания, умножения и деления на матрицу и умножения на число, возведение в вещественную степень. Программа должна предоставлять средства вычисления собственных чисел матрицы, а также собственных векторов. Для отыскания собственных значений (всех или некоторых – по выбору пользователя), выберите и реализуйте не менее двух различных (прямых или итерационных) методов численного решения полной/частичной проблемы собственных значений.
6.Выполните реализацию средства решения СЛАУ с поддержкой систем размерности 105 (и выше). Программа должна включать реализацию матричной арифметики: операции сложения/вычитания, умножения и деления на матрицу и умножения на число, возведение в целую степень. Выберите и реализуйте метод определения собственных максимального и минимального собственных значений матрицы. Реализуйте явный и неявный Чебышевские методы решения СЛАУ. Реализуйте поддержку