- •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. Формат выходных данных
- •Литература
Федеральное агентство по образованию
Томский государственный университет систем управления и радиоэлектроники (ТУСУР)
Кафедра автоматизированных систем управления (АСУ)
Романенко В.В.
ВЫЧИСЛИТЕЛЬНАЯ МАТЕМАТИКА Практические работы
Методические указания по выполнению практических работ по дисциплине «Вычислительная математика»
Томск – 2010
Содержание
Введение 6
1. Общие положения 10
1.1.1. Рейтинговая система 11
1.1.2. Языки программирования 12
1.2.1. Формат чисел и строк 14
1.2.2. Работа с функциями, заданными в аналитическом виде 19
1.2.3. Использование стандартных потоков ввода-вывода 20
1.2.4. Размещение файлов практической работы 22
2. Практические работы 29
2.1. Практическая работа №1 «Решение уравнений с одной переменной» 29
2.1.1. Методы решения 31
2.1.1.1. Интервальные методы 31
2.1.1.2. Итерационные методы 33
2.1.1.2. Комбинированный метод 35
2.1.2. Формат входных данных 36
2.1.3. Формат выходных данных 37
2.2.1. Методы решения 39
2.2.1.1. Метод Гаусса 41
2.2.1.2. Метод декомпозиции 42
2.2.1.3. Метод ортогонализации 44
2.2.1.4. Метод простой итерации 45
2.2.1.5. Метод Зейделя 46
2.2.1.6. Вычисление обратных матриц 47
2.2.2. Формат входных данных 48
2.2.3. Формат выходных данных 48
2.3.1. Методы решения 51
2.3.1.1. Вычисление собственных чисел методом Данилевского 51
2.3.1.2. Вычисление собственных векторов методом Данилевского 52
2.3.1.3. Определение кратности собственных чисел и векторов 53
2.3.2. Формат входных данных 55
2.3.3. Формат выходных данных 55
2.4.1. Методы решения 57
2.4.1.1. Метод Ньютона 58
2.4.1.2. Метод итераций 58
2.4.1.3. Метод наискорейшего спуска 58
2.4.2. Формат входных данных 60
2.4.3. Формат выходных данных 60
2.5.1. Методы решения 66
2.5.1.1. Полином Ньютона 68
2.5.1.2. Полином Лагранжа 69
2.5.2. Формат входных данных 70
2.5.3. Формат выходных данных 71
2.6.1. Методы решения 74
2.6.1.1. Линейные сплайны 74
2.6.1.2. Параболические сплайны 75
2.6.1.3. Кубические сплайны 75
2.6.1.4. Метод прогонки 78
2.6.2. Формат входных данных 78
2.6.3. Формат выходных данных 79
2.7.1. Методы решения 82
2.7.1.1. Формулы прямоугольников 82
2.7.1.2. Формула трапеций 84
2.7.1.3. Формула Симпсона 86
2.7.1.4. Формула Чебышева 87
2.7.1.5. Формула Гаусса 88
2.7.1.6. Вычисление интеграла с заданной точностью 89
2.7.2. Формат входных данных 90
2.7.3. Формат выходных данных 91
2.8.1. Методы решения 93
2.8.1.1. Решение ОДУ первого порядка 93
2.8.1.2. Решение систем ОДУ 95
2.8.1.3. Решение ОДУ n-го порядка 96
2.8.2. Формат входных данных 96
2.8.3. Формат выходных данных 97
2.9.1. Методы решения 99
2.9.1.1. Метод последовательных приближений 99
2.9.1.2. Метод дискретизации 100
2.9.1.3. Решение ЛИУ первого рода 100
2.9.2. Формат входных данных 101
2.9.3. Формат выходных данных 102
Литература 103
Введение
Численные методы – это методы, позволяющие при помощи алгоритмов, имеющих конечное число итераций, решать различные математические задачи (заданные в аналитическом виде). При этом набор инструкций, использующийся для написания алгоритма, ограничен и включает только такие инструкции, которые элементарно реализуются на ЭВМ (в данном случае, применительно к языкам высокого уровня). Таким образом, ограниченность набора инструкций и конечность алгоритма делает возможной его реализацию в виде программы. Решение же задач на ЭВМ в аналитическом виде затруднено.
Например, пусть нам требуется решить уравнение f (x) = 0 (т.е. найти нули функции). Очевидно, что аналитическое решение этого уравнения зависит от вида функции f (x). Если это линейная функция, то уравнение решается одним методом, если это квадратный полином – другим. Существует множество методов для решения такого уравнения, если функция является полиномиальной, тригонометрической, экспоненциальной, содержит дифференциалы, интегралы и т.д. Однако, ЭВМ не может провести анализ функции (в чем и заключается смысл аналитического решения), и поэтому численные методы поиска нуля функции построены так, что не зависят от ее вида.
Численное решение априори является неточным, т.к. погрешности возникают как из-за использования приближенного алгоритма [1], так и по причине конечности разрядной сетки ЭВМ. Конечность разрядной сетки подразумевает, что не все числа ЭВМ может хранить без погрешности. Например, самый длинный тип данных, поддерживаемый математическим сопроцессором (FPU) и распространенными компиляторами, имеет размер 10 байт. При этом самое большое по модулю число, которое может уместиться в эти рамки, составляет ~104900, а самое маленькое – ~10–4900. Но это не означает, что точность такого числа составляет 4900 знаков после запятой. Если у числа есть целая часть, то количество двоичных разрядов, остающихся для кодирования дробной части, уменьшается. Кроме того, в виду двоичности представления чисел в FPU, точно кодируются только те числа, которые являются целой степенью числа 2 (или суммой таких степеней). Например,
210 = 102 (1·21 + 0·20),
1310 = 11012 (1·23 + 1·22 + 0·21 + 1·20),
0.510 = 0.12 (1·2–1),
0.312510 = 0.01012 (0·2–1 + 1·2–2 + 0·2–3 + 1·2–4).
В противном случае число представляется в ЭВМ только с определенной погрешностью. Например, рассмотрим представление числа 0.1 с точностью до нескольких двоичных разрядов (количество разрядов указано в скобках):
0.110 = 0.0002 = 010 (3);
0.110 = 0.00012 = 0.06310 (4);
0.110 = 0.000112 = 0.0937510 (5);
0.110 = 0.0001102 = 0.0937510 (6);
0.110 = 0.00011002 = 0.0937510 (7);
0.110 = 0.000110012 = 0.0976562510 (8) и т.д.
Как видно, точно это число представить двоичными разрядами невозможно. К сказанному можно еще добавить, что дополнительные погрешности появляются при вычислении блоком FPU различных функций – тригонометрических, логарифмических, степенных и т.п. Все эти функции вычисляются либо при помощи каких-либо алгоритмов (разложение в ряды и т.д.), либо при помощи таблиц (все мы пользовались во время обучения в школе похожими таблицами). В первом случае погрешность возникает по причине неточности алгоритма, невозможности вычисления бесконечного ряда и т.п. Во втором случае происходит округление аргумента до ближайшего узла сетки таблицы, поэтому и значение функции получается неточным.
Следует также отметить, что не все задачи имеют аналитическое решение. Например, известно, что существуют неберущиеся интегралы. Если такой интеграл входит в интегральное уравнение, то решить его аналитически не удастся. Можно привести и более простые примеры функций, найти нули которых аналитическим способом (в общем виде) невозможно:
f (x) = ax3 + bx2 + сx + d,
f (x) = ax + cos(bx).
Здесь a, b, c, d – произвольные константы.
Проведение сложных математических расчетов требуется во многих отраслях науки и техники. При этом объем этих расчетов таков, что вручную за разумное время их выполнить невозможно. Примеры – распределение нагрузки между подключенными к электростанции объектами (оно должно происходить практически мгновенно при изменении потребляемой мощности), вычисление траектории космических тел, расчет движений земной коры в геоинформационных системах (а это задачи нефтяной, газовой и других отраслей) и многое другое. Для этого и внедряются в промышленность и науку вычислительные системы и пишутся специализированные пакеты для проведения численных расчетов. Распространение же ЭВМ ставит, в свою очередь, новые математические задачи, не существовавшие ранее – распределение Internet-трафика, обсчет трехмерных моделей в графических редакторах и играх и т.п.
Таким образом, знание численных методов необходимо инженеру, область деятельности которого связана с программным обеспечением вычислительной техники и, в особенности, автоматизированных систем.