- •Постановка задач
- •Математическое описание методов
- •2.1. Метод хорд
- •2.2 Решение систем линейных уравнений методом Зейделя
- •2.3. Метод Рунге-Кутта
- •Блок-схема модуля hord1 (процедура hord)
- •3.3 Блок-схема модуля roonge1 (процедура roonge)
- •Описание стандартных функций
- •5 Описание нестандартных функций
- •6 Описание интерфейса
- •7 Численные примеры
АННОТАЦИЯ
Курсовая работа по информатике на тему объектно-ориентированное программирование на примере численных методов выполнена по заданию №16: приближенное вычисление алгебраических и трансцендентных уравнений методом хорд, решение системы линейных уравнений методом Зейделя, решения дифференциальных уравнений методом Рунге-Кутта; выполнена студентом группы СРС-11 Самойловым Д.О., под руководством Артёмовой С.В.
Содержит 27 листов основного текста, 6 листов приложений.
СОДЕРЖАНИЕ
ВВЕДЕНИЕ …………………….……………………………………...2
1 Постановка задачи …………...………..…………………………3
2 Математическое описание методов …..……………..………..4
2.1 Метод хорд при приближенном вычислении алгебраических и трансцендентных уравнений ……..…………..………………..……..…..4
2.2 Решение системных линейных уравнений методом Зейделя …………..6
2.3 Решение дифференциальных уравнений методом Рунге-Кутта………...10
3 Блок-схема программы GLAV………………...…….....……...12
3.1 Блок-схема процедуры mhord……………………………....….……..13
3.2 Блок-схема процедуры myzend……………….………….…….…......14
3.3 Блок-схема процедуры mykutt……….…………………....……….......16
4 Описание стандартных модулей….…….…..………………...18
5 Описание не стандартных модулей….…………..…………...21
6 Описание интерфейса…….……………………………………..22
7 Численные примеры …..………….…...………………………..23
Заключение…………………………….......………………………..26
Список используемой литературы…..………………………....27
Приложение…………………………………………..………….….28
ВВЕДЕНИЕ
Студентам, а также инженерам часто требуется решать задачи, которые связаны с численными методами: решением алгебраических и трансцендентных уравнений, нахождение корня алгебраического уравнения, нахождение решений дифференциальных уравнений.
Подобные задачи решаются с помощью численных методов, разработанных для решения математических задач при помощи вычислительной техники на таких языках программирования, как: QBASIC, TURBO PASCAL, C++, DELPHI, VISUAL BASIC и д.р. пакеты программ. В частности, математические пакеты MathCAD, Maple, MathLab также дают возможность решения аналогичных задач.
Необходимо учитывать, что вычислительная техника не способна без погрешности записывать такие величины как и т.д., погрешность может появляться и при вычислении, округлении и других операциях.
В некоторых случаях при вычислении необходимо предварительно математически преобразовать или переписать в другом виде функции, это может существенно снизить погрешность или в ряде случаев без преобразования не сходятся решения.
С помощью вычислительной техники можно решить и иные инженерные задачи, но с определенной погрешностью.
-
Постановка задач
Цель данного курсового проекта – научиться использовать методы структурного программирования на примере численных методов, в частности написание нескольких модулей и связь их в одну общую программу.
1.1. Составить программу приближённого вычисления алгебраических и трансцендентных уравнений методом хорд 2х-3sin(2x)-1=0 и описать выше указанный метод, составить блок-схему, описать стандартные и не стандартные функции, применяемые в задаче, описать интерфейс и привести пример.
1.2. Составить программу для решения системы линейный уравнений методом Зейделя. Описать выше указанный метод, составить блок-схему, описать стандартные и не стандартные функции, применяемые в задаче, описать интерфейс и привести пример.
1.3. Составить программу для решения дифференциальных ур-й методом Рунге-Кутта.
шаг 0.1
Описать выше указанный метод, составить блок-схему, описать стандартные и не стандартные функции, а так же интерфейс задачи.
-
Математическое описание методов
2.1. Метод хорд
Идея метода состоит в том, что по двум точкам и построить прямую (то есть хорду, соединяющую две точки графика ) и взять в качестве следующего приближения абсциссу точки пересечения этой прямой с осью . Иными словами, приближённо заменить на этом шаге функцию её линейной интерполяцией, найденной по двум значениям и . (Линейной интерполяцией функции назовём такую линейную функцию , значения которой совпадают со значениями в двух фиксированных точках, в данном случае -- в точках и ).
В зависимости от того, лежат ли точки и по разные стороны от корня или же по одну и ту же сторону, получаем такие чертежи:
Случай 1
рис 1
Случай 2
рис 2
Построение последовательного приближения по методу хорд
8
Итак, очередное последовательное приближение будет зависеть от двух предыдущих: . Найдём выражение для функции .
Интерполяционную линейную функцию будем искать как функцию с угловым коэффициентом, равным разностному отношению
построенному для отрезка между и , график которой проходит через точку :
Решая уравнение , находим
то есть
(1)
Заметим, что величина может рассматриваться как разностное приближение для производной в точке . Тем самым полученная формула (1) -- это разностный аналог итерационной формулы метода Ньютона.
Вычисление по формуле (1) гораздо предпочтительнее вычисления по другой полученной нами формуле
хотя
эти две формулы математически тождественны,
поскольку при использовании формулы
(1) в случае вычислений с округлениями
(например, на компьютере) достигается
меньшая потеря значащих цифр.
Имеются две разновидности применения формулы (1).
Первая разновидность: вычисления ведутся непосредственно по формуле (1) при , начиная с двух приближений и , взятых, по возможности, поближе к корню . При этом не предполагается, что лежит между и (и что значения функции в точках и имеют разные знаки). При этом не гарантируется, что корень попадёт на отрезок между и на каком-либо следующем шаге (хотя это и не исключено). В таком случае затруднительно дать оценку погрешности, с которой приближает истинное значение корня , и поэтому довольствуются таким эмпирическим правилом: вычисления прекращают, когда будет выполнено неравенство , где-- желаемая точность нахождения корня. При этом полагают приближённое значение корня равным[1].