Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Romanenko_metodichka.doc
Скачиваний:
3
Добавлен:
18.11.2019
Размер:
1.11 Mб
Скачать

103

Федеральное агентство по образованию

Томский государственный университет систем управления и радиоэлектроники (ТУСУР)

Кафедра автоматизированных систем управления (АСУ)

Романенко В.В.

ВЫЧИСЛИТЕЛЬНАЯ МАТЕМАТИКА Практические работы

Методические указания по выполнению практических работ по дисциплине «Вычислительная математика»

Томск – 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-трафика, обсчет трехмерных моделей в графических редакторах и играх и т.п.

Таким образом, знание численных методов необходимо инженеру, область деятельности которого связана с программным обеспечением вычислительной техники и, в особенности, автоматизированных систем.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]