Автор работы: Пользователь скрыл имя, 12 Января 2015 в 17:13, курсовая работа
В настоящее время резко возрос интерес к языкам высокого уровня благодаря возможности использования в научных исследованиях, в технике и экономике вычислительных машин, выполняющих построение некоторых величин в точном соответствии с указанным алгоритмом. Эта возможность привлекательна по той причине, что явления процессы, которые изучают в рамках упомянутых исследований, часто удается описать с помощью понятий математики – функций, систем уравнений, неравенств и для получения конкретных сведений об изучаемых явлениях и процессах надо провести некоторые действия над математическими объектами
Введение
2
1 Постановка задачи
3
2 Математическое описание метода
4
2.1 Метод половинного деления
4
2.2 Метод Крамера
4
2.3 Метод прямоугольников
6
3 Блок-схема программы
7
3.1 Блок-схема модуля1 (процедура polovin )
8
3.2 Блок-схема модуля 2 (процедура kramer)
9
3.2.1 Блок-схема модуля 2 (функция det, op)
10
3.3 Блок-схема модуля 3 (процедура pr)
11
4 Описание стандартных функций
12
5 Описание не стандартных функций
14
5.1 Модуль 1 (процедура polovin)
14
5.2 Модуль 2 (процедура kramer)
14
5.2.1 Модуль 2 (функция op)
15
5.3 Модуль 3 (процедура pr)
16
6 Описание интерфейса
17
7 Численный пример
18
Заключение
27
Список используемых источников
Данная функция является универсальной для подсчета определителя матрицы любого размера при выполнении условия метода Крамера, что первый левый член матрицы не равен 0.
5.3 Модуль 3 (процедура pr)
Процедура pr является внешне самой простой из приведенных выше нестандартных процедур. Так как просто производит вычисление суммы всех значений в контрольных точках, и полученный результат умножается на h равной половине разности конечного значения и начального. Процедура имеет свои внутренние переменные (i,n-integer и x,s,a,b,h-real), три из которых получают свои значения, используя стандартные функции ввода-вывода. После чего начальному значению суммы присваивается значение 0, и вычисляется шаг вычисления h. Далее в цикле for производится вычисление значений аргумента и сумма значений функций в этих значениях.
Вычисленное значение суммы, умноженное на шаг вычислений, и будет значение интеграла по формуле прямоугольников. Выводимое значение процедуры на экран монитора имеет тип real. Далее процедура осуществляет проверку путем вычисления определенного интеграла методом Ньютона-Лейбница и сравнением его с полученным результатом. Процедура использует стандартные процедуры и функции (clrscr, write, read, writeln, readkey), стандартные операторы присвоения и цикл for.
6 ОПИСАНИЕ ИНТЕРФЕЙСА
Основная программа GLAV (использующая методы структурного программирования) работает следующим образом. Используя способ запроса, определяет дальнейший ход развития. При получении любого результата отличного от 1,2,3 вновь возвращается на начало программы. Тем самым, исключая возможность ошибочного ввода. При получении ответа соответствующего цифрам 1,2,3 передает управление одной из процедур описанных в не стандартных модулях пользователя. При этом выполнение главной программы практически заканчивается за исключением оператора выхода. Управление передается соответственно одному из модулей (модуль 1, модуль 2, модуль 3) или другими словами процедурам пользователя (polovin, kramer, pr)
Каждый из перечисленных
модулей по сути своей
При выборе 1 управление передается модулю 1 (процедура polovin ) выполнение которого приводит к выходу из программы.
Аналогично построены и два других модуля входящих в программу GLAV, за исключением того, что процедура kramer в ходe своего выполнения не однократно передает управление функции det, op являющейся неотъемлемой частью выше названной процедуры.
7. Численный пример
Все вышеперечисленное в данном курсовом проекте проиллюстрировано на конкретных примерах.
7.1 Задано алгебраическое уравнени
Для этого первоначально берем произвольные значения х и рассчитываем для них значения функции у, которые сводим в таблицу 1.
Таблица 1. Данные для построения графика функции у=x2-2ln(x+2)=0
x |
1 |
1,5 |
2 |
y |
-1,19722 |
-0,25552 |
1,22742 |
Из таблицы 1, что корень уравнения лежит на отрезке от 1 до 2 , т. к. функция меняет знак на противоположный (в соответствие с методом половинного деления). График функции у= x2-2ln(x+2) представлен на рисунке 1.
Рис. 1. График функции у= x2-2ln(x+2)
Результаты решения по методу половинного деления были полученные
с помощью программы Exсel и сведены в таблицу
2.
Таблица 2. Результаты расчета функции у= x2-2ln(x+2)по методу половинного деления.
Решением функции у= x2-2ln(x+2) по методу половинного деления являются значения х=1,6007 а данным значением ε=0,0001 и значением функции f(x)= - 0,000015 отрезке [1;2].
Результаты программного решения дают следующие значения.
a |
b |
c=(a+b)/2 |
f(a) |
f(b) |
f(c ) |
[a-b] |
1 |
2 |
1,5 |
-1,19722 |
1,227411 |
-0,25553 |
-1 |
1,5 |
2 |
1,75 |
-0,25553 |
1,227411 |
0,418988 |
-0,5 |
1,5 |
1,75 |
1,625 |
-0,25553 |
0,418988 |
0,064916 |
-0,25 |
1,5 |
1,625 |
1,5625 |
-0,25553 |
0,064916 |
-0,09952 |
-0,125 |
1,5625 |
1,625 |
1,59375 |
-0,09952 |
0,064916 |
-0,01835 |
-0,0625 |
1,59375 |
1,625 |
1,609375 |
-0,01835 |
0,064916 |
0,023019 |
-0,03125 |
1,59375 |
1,609375 |
1,601563 |
-0,01835 |
0,023019 |
0,002267 |
-0,01563 |
1,59375 |
1,601563 |
1,597656 |
-0,01835 |
0,002267 |
-0,00806 |
-0,00781 |
1,597656 |
1,601563 |
1,599609 |
-0,00806 |
0,002267 |
-0,0029 |
-0,00391 |
1,599609 |
1,601563 |
1,600586 |
-0,0029 |
0,002267 |
-0,00032 |
-0,00195 |
1,600586 |
1,601563 |
1,601074 |
-0,00032 |
0,002267 |
0,000974 |
-0,00098 |
1,600586 |
1,601074 |
1,60083 |
-0,00032 |
0,000974 |
0,000328 |
-0,00049 |
1,600586 |
1,60083 |
1,600708 |
-0,00032 |
0,000328 |
5,14E-06 |
-0,00024 |
1,600586 |
1,600708 |
1,600647 |
-0,00032 |
5,14E-06 |
-0,00016 |
-0,00012 |
1,600647 |
1,600708 |
1,600677 |
-0,00016 |
5,14E-06 |
-7,6E-05 |
-6,1E-05 |
1,600677 |
1,600708 |
1,600693 |
-7,6E-05 |
5,14E-06 |
-3,5E-05 |
-3,1E-05 |
1,600693 |
1,600708 |
1,6007 |
-3,5E-05 |
5,14E-06 |
-1,5E-05 |
-1,5E-05 |
Таким образом, результаты расчета функции у= x2-2ln(x+2) по методу половинного деления полученные с помощью программы Exсel дают более точный результат.
7.2 Необходимо решить систему уравнений методом Крамера.
Для этого считает основной определитель матрицы:
Аналогично считаются определители матриц, которые получаются из А заменой 1-ого, 2-ого, …, n-ого столбца соответственно на столбец свободных членов. После этого решение системы линейных алгебраических уравнений методом Крамера осуществляется по следующим формулам .
..
Определитель матрицы, полученный заменой столбца х на столбец свободных членов, считается по формуле:
Определитель матрицы, полученный заменой столбца у на столбец свободных членов, считается по формуле:
Определитель матрицы, полученный заменой столбца z на столбец свободных членов, считается по формуле:
Находим значения х, у и z по формулам:
Проверка результатов расчета осуществляются подстановкой данных в систему уравнений:
Что дает абсолютно точный результат.
Результаты программного решения показывают также абсолютно точный результат.
7.3 Необходимо вычислить определенный интеграл на отрезке [1,2] методом прямоугольников c заданным количеством шагов n=20 и точностью ε =10-4.
Для этого находим шаг изменения аргумента .
Отсюда x=n+(i+0,5)*h и считается для всех шагов n=20
X1=1+(1+0,5)*0,05=1,075
X2=1+(2+0,5)*0,05=1,125
X3=1+(3+0,5)*0,05=1,175
X4=1+(4+0,5)*0,05=1,225
X5=1+(5+0,5)*0,05=1,275
X6=1+(6+0,5)*0,05=1,325
X7=1+(7+0,5)*0,05=1,375
X8=1+(8+0,5)*0,05=1,425
X9=1+(9+0,5)*0,05=1,475
X10=1+(10+0,5)*0,05=1,525
X11=1+(11+0,5)*0,05=1,575
X12=1+(12+0,5)*0,05=1,625
X13=1+(13+0,5)*0,05=1,675
X14=1+(14+0,5)*0,05=1,725
X15=1+(15+0,5)*0,05=1,775
X16=1+(16+0,5)*0,05=1,825
X17=1+(17+0,5)*0,05=1,875
X18=1+(18+0,5)*0,05=1,925
X19=1+(19+0,5)*0,05=1,975
X20=1+(20+0,5)*0,05=2,025
Результаты расчетов представлены в таблице 3 полученной с помощью программы Excel
Таблица 3. Результаты расчетов по методу прямоугольников
n |
h |
f(x) |
S |
1 |
1,075 |
-1,09098 |
-1,17281 |
2 |
1,125 |
-1,01324 |
-1,1399 |
3 |
1,175 |
-0,92999 |
-1,09274 |
4 |
1,225 |
-0,84124 |
-1,03052 |
5 |
1,275 |
-0,74701 |
-0,95244 |
6 |
1,325 |
-0,64731 |
-0,85769 |
7 |
1,375 |
-0,54217 |
-0,74548 |
8 |
1,425 |
-0,43158 |
-0,615 |
9 |
1,475 |
-0,31556 |
-0,46546 |
10 |
1,525 |
-0,19414 |
-0,29606 |
11 |
1,575 |
-0,06731 |
-0,10601 |
12 |
1,625 |
0,064916 |
0,105489 |
13 |
1,675 |
0,202519 |
0,339219 |
14 |
1,725 |
0,345491 |
0,595972 |
15 |
1,775 |
0,493824 |
0,876538 |
16 |
1,825 |
0,647508 |
1,181702 |
17 |
1,875 |
0,806534 |
1,512251 |
18 |
1,925 |
0,970892 |
1,868968 |
1,975 |
1,140576 |
2,252637 | |
20 |
2,025 |
1,315575 |
2,66404 |
-1,38629 |
0 |
Значения функции f(x) определяются по формуле f(x)= x*x-2ln(x+2) отсюда:
f(x1)= 1,075*1,075-2ln(1,075+2)= -1,17281
f(x2)= 1,125*1,125-2ln(1,125+2)= -1,1399
f(x3)= 1,175*1,175-2ln(1,175+2)= -1,09274
f(x4)= 1,225*1,225-2ln(1,225+2)= -1,03052
f(x5)= 1,275*1,275-2ln(1,275+2)= -0,95244
f(x6)= 1,325*1,325-2ln(1,325+2)= -0,85769
f(x7)= 1,375*1,375-2ln(1,375+2)= -0,74548
f(x8)= 1,425*1,425-2ln(1,425+2)= -0,615
f(x9)= 1,475*1,475-2ln(1,475+2)= -0,46546
f(x10)= 1,525*1,525-2ln(1,525+2)= -0,29606
f(x11)= 1,575*1,575-2ln(1,575+2)= -0,10601
f(x12)= 1,625*1,625-2ln(1,625+2)= 0,105489
f(x13)= 1,675*1,675-2ln(1,675+2)= 0,339219
f(x14)= 1,725*1,725-2ln(1,725+2)= 0,595972
f(x15)= 1,775*1,775-2ln(1,775+2)= 0,876538
f(x16)= 1,825*1,825-2ln(1,825+2)= 1,181702
f(x17)= 1,875*1,875-2ln(1,875+2)= 1,512251
f(x18)= 1,925*1,925-2ln(1,925+2)= 1,868968
f(x19)= 1,975*1,975-2ln(1,975+2)= 2,252637
f(x20)= 2,025*2,025-2ln(2,025+2)= 2,66404
Находим суммарное значение полученных функций:
-1,09098-1,01324-0,92999-0,
0,806534+0,970892+1,315575+1,
Нахождение определенного интеграла по формуле прямоугольников сводится к нахождению произведения суммы значений функции в изменение значений аргумента с шагом равным частному от деления разности конечного и начального значений аргумента на заданное количество шагов
А также по формуле S=h*f(x) определяем значение интегралов на каждом из отрезков:
S1=0,05*(-1,09098)= -0,0461
S2=0,05*(-1,01324)= -0,04333
S3=0,05*(-0,92999)= -0,04041
S4=0,05*(-0,84124)= -0,03732
S5=0,05*(-0,74701)= -0,03407
S6=0,05*(-0,64731)= -0,03065
S7=0,05*(-0,54217)= -0,02705
S8=0,05*(-0,43158)= -0,02326
S9=0,05*(-0,31556)= -0,01929
S10=0,05*(-0,19414)= -0,01512
S11=0,05*(-0,06731)=-0,01076
S12=0,05*(0,064916)= -0,00619
S13=0,05*(0,202519)= -0,00143
S14=0,05*(0,345491)= 0,003543
S15=0,05*(0,493824)= 0,008721
S16=0,05*(0,647508)= 0,01411
S17=0,05*(0,806534)= 0,019712
S18=0,05*(0,970892)= 0,025528
S19=0,05*(1,315575)= 0,03156
S20=0,05*(1,140576)= 0,03781
Суммарное значение интегралов равно:
-1,17281-1,1399-1,09274-1,
2,2526372,66404=0
Погрешность метода находим по формуле .
Для метода прямоугольников формула примет вид .
0,05*(-3,87969)=-0,1938
=
Правая часть формулы прямоугольников является интегральной суммой и при h 0 стремится к данному интегралу. Однако при фиксированном h отличается от соответствующего интеграла на величину Rn(f). По заданной абсолютной погрешности ε подбирается параметр n, при котором выполняется равенство < ε.
0<0,0001, что соответствует условию задачи.
Рис. 2. График функции построенной по методу прямоугольников
.
функции вида. дает следующий результат: определенный интеграл равен 0,99959.Rn(f)<E, где Rn(f)= Sn(f)= n x*f(xk)
В заключение хотелось бы отметить, что применение языка программирования Turbo Pascal 7.0 значительно упрощает работу по вычислению значений функций, нахождения корней уравнений и вычисления программы. Достаточно усовершенствовать отдельный модуль откомпилировать его и появляется возможность решать различные варианты задач с использованием данных методов. Более того, текст главной программы более читаем, и занимает меньше места. Имеющиеся наработки в отдельных модулях можно использовать в других программах. Четко выраженная структура программы позволяет более ясно представить цели и задачи стоящие перед программистом.
Список используемЫХ ИСТОЧНИКОВ
ПРИЛОЖЕНИЕ
program glav;
uses crt, modul1, modul2, modul3; {объявление модулей}
var
Информация о работе Программирование алгоритмов на примере численных методов