- •1. Общие положения 10
- •2. Практические работы 29
- •2.1. Практическая работа №1 «Решение уравнений с одной переменной» 29
- •Введение
- •1. Общие положения
- •1.1. Выполнение и сдача работы
- •1.1.1. Рейтинговая система
- •1.1.2. Языки программирования
- •1.2. Входные и выходные данные
- •1.2.1. Формат чисел и строк
- •1.2.2. Работа с функциями, заданными в аналитическом виде
- •1.2.3. Использование стандартных потоков ввода-вывода
- •1.2.4. Размещение файлов практической работы
- •1.3. Результаты вычислений. Погрешность
- •2. Практические работы
- •2.1. Практическая работа №1 «Решение уравнений с одной переменной»
- •2.1.1. Методы решения
- •2.1.1.1. Интервальные методы
- •2.1.1.2. Итерационные методы
- •2.1.1.2. Комбинированный метод
- •2.1.2. Формат входных данных
- •2.1.3. Формат выходных данных
- •2.2. Практическая работа №2 «Решение задач линейной алгебры»
- •2.2.1. Методы решения
- •1. Метод Гаусса;
- •2. Метод декомпозиции;
- •2.2.1.1. Метод Гаусса
- •2.2.1.2. Метод декомпозиции
- •2.2.1.3. Метод ортогонализации
- •2.2.1.4. Метод простой итерации
- •2.2.1.5. Метод Зейделя
- •2.2.1.6. Вычисление обратных матриц
- •2.2.2. Формат входных данных
- •2.2.3. Формат выходных данных
- •2.3. Практическая работа №3 «Вычисление собственных чисел и собственных векторов»
- •2.3.1. Методы решения
- •2.3.1.1. Вычисление собственных чисел методом Данилевского
- •2.3.1.2. Вычисление собственных векторов методом Данилевского
- •2.3.1.3. Определение кратности собственных чисел и векторов
- •2.3.2. Формат входных данных
- •2.3.3. Формат выходных данных
- •2.4. Практическая работа №4 «Решение систем нелинейных уравнений»
- •2.4.1. Методы решения
- •2.4.1.1. Метод Ньютона
- •2.4.1.2. Метод итераций
- •2.4.1.3. Метод наискорейшего спуска
- •2.4.2. Формат входных данных
- •2.4.3. Формат выходных данных
- •2.5. Практическая работа №5 «Интерполирование и численное дифференцирование функций»
- •2.5.1. Методы решения
- •2.5.1.1. Полином Ньютона
- •2.5.1.2. Полином Лагранжа
- •2.5.2. Формат входных данных
- •2.5.3. Формат выходных данных
- •2.6. Практическая работа №6 «Приближение сплайнами»
- •2.6.1. Методы решения
- •2.6.1.1. Линейные сплайны
- •2.6.1.2. Параболические сплайны
- •2.6.1.3. Кубические сплайны
- •2.6.1.4. Метод прогонки
- •2.6.2. Формат входных данных
- •2.6.3. Формат выходных данных
- •2.7. Практическая работа №7 «Численное интегрирование функций»
- •2.7.1. Методы решения
- •2.7.1.1. Формулы прямоугольников
- •2.7.1.2. Формула трапеций
- •2.7.1.3. Формула Симпсона
- •2.7.1.4. Формула Чебышева
- •2.7.1.5. Формула Гаусса
- •2.7.1.6. Вычисление интеграла с заданной точностью
- •2.7.2. Формат входных данных
- •2.7.3. Формат выходных данных
- •2.8. Практическая работа №8 «Решение обыкновенных дифференциальных уравнений»
- •2.8.1. Методы решения
- •2.8.1.1. Решение оду первого порядка
- •2.8.1.2. Решение систем оду
- •2.8.1.3. Решение оду n-го порядка
- •2.8.2. Формат входных данных
- •2.8.3. Формат выходных данных
- •2.9. Практическая работа №9 «Решение линейных интегральных уравнений»
- •2.9.1. Методы решения
- •2.9.1.1. Метод последовательных приближений
- •2.9.1.2. Метод дискретизации
- •2.9.1.3. Решение лиу первого рода
- •2.9.2. Формат входных данных
- •2.9.3. Формат выходных данных
- •Литература
2.6.1. Методы решения
Для выполнения практической работы необходимо реализовать в программе интерполяцию табличной функции линейными, кубическими и параболическими сплайнами.
Сплайны, как и все интерполирующие полиномы, имеют вид (2.5.1), но количество узлов n не равно порядку сплайна m. Однако, следует учесть, что количество самих сплайнов равно n–1, т.е.
(2.6.1)
Чтобы не использовать константы c с двумя индексами, вводят коэффициенты сплайна ai = c0i, bi = c1i, ci = c2i, di = c3i.
2.6.1.1. Линейные сплайны
Согласно (2.6.1), линейный сплайн имеет вид
(2.6.2)
При этом
(2.6.3)
Здесь ∆xi = xi+1 – xi, ∆yi = yi+1 – yi.
2.6.1.2. Параболические сплайны
Из (2.6.1) получаем выражение для параболического сплайна:
(2.6.4)
Для коэффициентов ai и ci имеем
(2.6.5)
Граничным условием для параболического сплайна является значение первой производной функции в первой либо последней точке отрезка, т.е. Ai = f (xi), где i = 0 или n. Во входном файле задается точка (0 или n) и значение производной в ней.
Если задано число A0, то коэффициенты bi ищутся, начиная с b0:
(2.6.6)
Если задано число An, то коэффициенты bi ищутся, начиная с bn:
(2.6.7)
2.6.1.3. Кубические сплайны
По аналогии, из (2.6.1) получаем для кубического сплайна
(2.6.8)
Коэффициенты ищутся следующим образом:
(2.6.9)
Для коэффициентов bi
(2.6.10)
или
(2.6.11)
Неизвестные Mi находятся из решения СЛАУ
AM = g, (2.6.12)
где
(2.6.13)
(2.6.14)
M = (M1, M2, …, Mn–1).
Для кубического сплайна можно выбрать любой тип граничных условий (либо по первой, либо по второй производной). Соответственно, во входном файле будут находиться значения первой (A0 и An) или второй (B0 и Bn) производной в первой и последней точке отрезка.
Если граничные условия заданы по второй производной, то M0 = B0, Mn = Bn, а остальные неизвестные Mi находятся решением СЛАУ (2.6.12).
Если граничные условия заданы по первой производной, то b0 = A0, bn = An. Тогда к системе можно добавить еще два уравнения, используя (2.6.10) при i = 0 и (2.6.11) при i = n, а также перенести в левую часть СЛАУ слагаемые с неизвестными коэффициентами из выражений для g1 и gn–1. Получим модифицированную СЛАУ
(2.6.15)
где
(2.6.16)
(2.6.17)
M = (M0, M1, M2, …, Mn).
Трехдиагональные СЛАУ (2.6.12) и (2.6.15) можно решать любым методом решения СЛАУ. Однако, учитывая их структуру, оптимальным будет использование метода прогонки.
2.6.1.4. Метод прогонки
Пусть имеется трехдиагональная СЛАУ Ax = b размера nn. Ее решение методом прогонки строится следующим образом:
(2.6.18)
(2.6.19)
При этом полагаем, что
(2.6.20)
2.6.2. Формат входных данных
Формат входного файла:
k |
– порядок сплайна (1 – линейный, 2 – параболический, 3 – кубический); |
n |
– количество сплайнов; |
x0…xn |
– узлы сетки; |
y0…yn |
– значения функции в узлах сетки; |
i Ai |
– граничные условия (для k = 2); |
B0 Bn |
– граничные условия (для k = 3); |
m |
– количество интервалов в результирующей сетке (т.е. количество узлов – m + 1, что сделано для унификации с узлами исходной сетки); |
x0…xm |
– узлы результирующей сетки; |
t |
– любой символ или строка, сообщающая, известно или нет аналитическое выражение для функции f (x); |
f(x) |
– аналитическое выражение для функции (если оно известно). |