Главная » Статьи » Рефераты » Точные науки: Математика

Метод касательных. Решения нелинейных уравнений. Паскаль 7.0


Введение
   Процедура подготовки и решения задачи на ЭВМ достаточно сложный и трудоемкий процесс, состоящий из следующих этапов:
1.   Постановка задачи (задача, которую предстоит решать на ЭВМ, формулируется пользователем или получается им в виде задания).
2.   Математическая формулировка задачи.
3.   Разработка алгоритма решения задачи.
4.   Написание программы на языке программирования. 
5.   Подготовка исходных данных.
6.   Ввод программы и исходных данных в ЭВМ.
7.   Отладка программы.
8.   Тестирование программы.
9.   Решение задачи на ЭВМ и обработка результатов.
   В настоящей курсовой работе условие задачи дано в математической формулировке, поэтому необходимость в выполнении этапов 1 и 2 
отпадает и сразу можно приступить к разработке алгоритма решения задачи на ЭВМ.
   Под алгоритмом понимается последовательность арифметических и логических действий над числовыми значениями переменных, приводящих 
к вычислению результата решения задачи при изменении исходных данных в достаточно широких пределах.
   Таким образом, при разработке алгоритма решения задачи математическая формулировка преобразуется в процедуру решения, 
представляющую собой последовательность арифметических действий и логических связей между ними. При этом алгоритм обладает следующими 
свойствами:
·      детерминированностью, означающей, что применение алгоритма к одним и тем же исходным данным должно приводить к одному и том уже 
результату;
·      массовостью, позволяющей получать результат при различных исходных данных;
·      результативностью, обеспечивающей получение результата через конечное число шагов.
   Наиболее наглядным способом описания алгоритмов является описание его в виде схем. При этом алгоритм представляется 
последовательность блоков, выполняющих определенные функции, и связей между ними. Внутри блоков указывается информация, характеризующая 
выполняемые ими функции. Блоки схемы имеют сквозную нумерацию.
   Конфигурация и размеры блоков, а также порядок построения схем определяются ГОСТ 19.002-80 и ГОСТ 19.003-80.
   На этапе 4 составляется программа на языке Турбо-Паскаль. При описании программы необходимо использовать характерные приемы 
программирования и учитывать специфику языка. В качестве языка программирования выбран язык Паскаль ввиду его наглядности и облегченного 
понимания для начинающих программистов, а также возможности в дальнейшем использовать для решения более трудных задач.
   Этапы алгоритмизации и программирования являются наиболее трудоемкими, поэтому им уделяется большое внимание.
   В процессе выполнения курсовой работы студент готовит исходные данные, вводит программу и исходные данные. При работе ввод 
программы и исходных данных осуществляется с клавиатуры дисплея.
   Отладка программы состоит в обнаружении и исправлении ошибок, допущенных на всех этапах подготовки задач к решению на ПЭВМ. 
Синтаксис ошибки обнаруживается компилятором, который выдает сообщение, указывающее место и тип ошибки. Обнаружение семантических 
ошибок осуществляется на этапе тестирования программы, в котором проверяется правильность выполнения программы на упрощенном варианте 
исходных данных или с помощью контрольных точек или в режиме пошагового исполнения.
   Задание при обработке на ЭВМ проходит ряд шагов: компиляцию, редактирование (компоновку) и выполнение.
   Обработка результатов решения задачи осуществляется с помощью ЭВМ. Выводимые результаты оформлены в виде, удобном для 
восприятия.
Краткое описание сущности метода касательных 
(метода секущих Ньютона)
   Пусть на отрезке [a; b] отделен корень с уравнения f (x) = 0 и f — функция непрерывна на отрезке [a; b], а на интервале ]a; b[ существуют 
отличные от нуля производные f’ и f”.
   Так как f’(x) № 0, то запишем уравнение f (x) = 0 в виде: x = x – (f (x) / f’(x)) (1).
   Решая его методом итераций, можем записать: xn+1 = xn – (f (xn) / f’(xn)) (2).
   Если на отрезке [a;b] f’(x) * f“(x) > 0, то нулевое приближение выбираем x0 = a. Рассмотрим геометрический смысл метода. Рассмотрим график 
функции y = f (x).
   Пусть для определенности f‘(x) > 0 и f“(x) > 0. Проведем касательную к графику функции в точке B (b, f (b)).
   Ее уравнение будет иметь вид: y = f (b) + f’(b) * (x – b).
   Полагая в уравнении y = 0 и учитывая, что f’ (x) № 0, решаем его относительно x. Получим: x = b – (f (b) / f‘(b)).
   Нашли абсциссу x1 точки c1 пересечения касательной с осью ox:
   x1 = b – (f (b) – f’ (b)).
   
   Проведем касательную к графику функции в точке b1 (x1; f (x1)).
   Найдем абсциссу x2 точки с2 пересечения касательной с осью оx:
   x2 = x1 – (f (x1) / (f’ (x1)).
   Вообще:
   xk+1 = xk – (f (xk) / f’(xk)) (3).
   Таким образом, формула (3) дает последовательные приближения (xk) корня, получаемые из уравнения касательной, проведенной к графику 
функции в точке bk (xk; f (xk0). Метод уточнения корня c [a;b] уравнения f (x) = 0 с помощью формулы (3) называется методом касательной или 
методом Ньютона.
   Геометрический смысл метода касательных состоит в замене дуги y = f (x) касательной, одной к одной из крайних точек. Начальное приближение 
x0 = a или x0 = b брать таким, чтобы вся последовательность приближения хk принадлежала интервалу ]a;b[.
   В случае существования производных f’, f”, сохраняющих свои знаки в интервале, за х0 берется тот конец отрезка [a;b], для которого 
выполняется условие f’(х0) * f (х0) > 0.
   Для оценки приближения используется общая формула:
   |c-xk-1| Ј |f (xk+1) / m|, где m = min f’(x) на отрезке [a;b].
   На практике проще пользоваться другим правилом. Если на отрезке [a;b] выполняется условие 0 < m < |f (x)| и e — заданная точность решения, 
то неравенство |xk+1 - xk| Јe влечет выполнение неравенства |c-xk-1| Јe.
   В этом случае процесс последовательного приближения продолжают до тех пор, пока не выполнится неравенство:
   |c-xk-1| Јe.
Решение нелинейного уравнения аналитически
   Определим корни уравнения х3 + 0,1х2 + 0,4х – 1,2 = 0 аналитически. Находим: f (x) = х3 + 0,1х2 + 0,4х – 1,2.
   f‘ (x) = 3х2 + 0,1х + 0,4.
   f (–1) = –2,5 < 0 f (0) = –1,2 < 0 f (+1) = 0,3 > 0.
   x
- Ґ
-1
0
+1
+ Ґ
sign f (x)
-
-
-
+
+
    
   Следовательно, уравнение имеет действительный корень, лежащий в промежутке [0; +1].
   Приведем уравнение к виду x = j (x) так, чтобы |j‘ (x) | <1 при 0 Ј x Ј +1.
   Так как max |f’ (x)| = f’(+1) = 3 + 0,1 + 0,4 = 3,5, то можно взять R = 2.
   Тогда j (x) = x – (f (x) / R) = x – 0,5 х3 – 0,05 х2 – 0,2 х + 0,6 = –0,5 х3 – 0,05 х2 + 0,8 х + 0,6.
   Пусть х0 = 0, тогда хn+1 = j (хn).
Вычисления расположим в таблице
n
   х n
   х 2 n
х 3 n
   j (х n)
f (x)
1
   1
   1
   1
   0,85
-0,17363
2
0,85
0,7225
0,614125
0,9368125
0,08465
3
0,9368125
0,87761766
0,822163194
0,89448752
-0,04651
4
0,89448752
0,800107923
0,715686552
0,917741344
0,
024288
5
   0,
917741344
0,842249174
0,772966889
0,905597172
-0,01306
6
   0,
905597172
0,820106238
0,74268589
0,912129481
0,
006923
7
   0,
912129481
0,83198019
0,758873659
0,908667746
-0,0037
8
   0,
908667746
0,825677072
0,750266124
0,910517281
0,
001968
9
   0,
910517281
0,829041719
0,754856812
0,909533333
-0,00105
10
   0,
909533333
0,827250884
0,752412253
0,910057995
0,
000559
11
   0,
910057995
0,828205555
0,753715087
0,909778575
-0,0003
12
   0,
909778575
0,827697055
0,753021048
0,909927483
0,
000159
13
   0,
909927483
0,827968025
0,753390861
0,909848155
-8,5E-05
14
   0,
909848155
0,827823665
0,753193834
0,909890424
4,5E-05
15
   0,
909890424
0,827900583
0,753298812
0,909867904
-2,4E-05
16
   0,
909867904
0,827859602
0,753242881
0,909879902
1,28E-05
17
   0,
909879902
0,827881437
0,753272681
0,90987351
-6,8E-06
18
0,90987351
0,827869803
0,753256804
0,909876916
3,63E-06
19
   0,
909876916
0,827876002
0,753265263
0,909875101
-1,9E-06
20
   0,
909875101
0,827872699
0,753260756
0,909876068
1,03E-06
    
   График функции y = х3 + 0,1х2 + 0,4х – 1,2
   .
Блок схема программы
Программа на языке PASCAL 7.0
   program metod_kasatel;{Название программы} 
   uses Crt; {Модуль дисплейных функций}
   var {Блок описаний переменных}
   xn,xn1,a,b,c,mx,y0,x0: real;
   function f1(x1: Real): Real; {Основная функция}
   begin
   f1:= x1*x1*x1*(-0.5)-0.05*x1*x1+0.8*x1+0.6;
   end;
   function f2(x4:Real): Real; {Производная от основной функции}
   begin
   f2:= x4*x4*x4+0.5*x4*x4+0.1*x4*x4+0.4*x4–1.2;
   end;
   begin {Начало основного тела программы}
   Clrscr; {Очистка экрана перед выполнением программы}
   a:=0;b:=1;c:=0.00000001;
   Writeln (' От A=',a,' до B=',b); {Вывод на экран}
   Writeln (' Погрешность с=',c);
   Readln; {Ожидание нажатия клавиши Enter}
   xn:=b;
   xn1:= f1(xn);
   y0:=f2(b);
   while ABS (y0)>c do {Проверка по точности вычисления корня}
   begin {Тело цикла} 
   xn:=xn1;
   xn1:=f1(xn);
   y0:= f2(xn1);
   {Печать промежуточного результата}
   Writeln ('xn=',xn,' xn+1=',xn1,' f(xn+1)=',y0);
   Readln; {Ожидание нажатия клавиши Enter}
   end; {Конец тела цикла}
   Writeln ('Конечные значения'); {Печать полученного результата}
   Writeln (' xn+1=',xn1,' f(xn+1)=',y0);
   Readln; {Ожидание нажатия клавиши Enter}
   end. {Конец основного тела программы}
Результаты выполнения программы
   От A= 0.0000000000E+00 до B= 1.0000000000E+00 
   Погрешность с= 1.0000000000E-08 
   От A= 0.0000000000E+00 до B= 1.0000000000E+00 
   Погрешность с= 1.0000000000E-08 
   xn= 8.5000000000E-01 xn+1= 9.3681250000E-01 f(xn+1)= 8.4649960270E-02 
   xn= 9.3681250000E-01 xn+1= 8.9448751986E-01 f(xn+1)=-4.6507647892E-02 
   xn= 8.9448751986E-01 xn+1= 9.1774134381E-01 f(xn+1)= 2.4288343840E-02 
   xn= 9.1774134381E-01 xn+1= 9.0559717189E-01 f(xn+1)=-1.3064617920E-02 
   xn= 9.0559717189E-01 xn+1= 9.1212948085E-01 f(xn+1)= 6.9234699658E-03 
   xn= 9.1212948085E-01 xn+1= 9.0866774587E-01 f(xn+1)=-3.6990702320E-03 
   xn= 9.0866774587E-01 xn+1= 9.1051728099E-01 f(xn+1)= 1.9678960780E-03 
   xn= 9.1051728099E-01 xn+1= 9.0953333295E-01 f(xn+1)=-1.0493249720E-03 
   xn= 9.0953333295E-01 xn+1= 9.1005799543E-01 f(xn+1)= 5.5884091853E-04 
   xn= 9.1005799543E-01 xn+1= 9.0977857497E-01 f(xn+1)=-2.9781681224E-04 
   xn= 9.0977857497E-01 xn+1= 9.0992748338E-01 f(xn+1)= 1.5865717614E-04 
   xn= 9.0992748338E-01 xn+1= 9.0984815480E-01 f(xn+1)=-8.4537703515E-05 
   xn= 9.0984815480E-01 xn+1= 9.0989042365E-01 f(xn+1)= 4.5040009354E-05 
   xn= 9.0989042365E-01 xn+1= 9.0986790364E-01 f(xn+1)=-2.3997676180E-05 
   xn= 9.0986790364E-01 xn+1= 9.0987990248E-01 f(xn+1)= 1.2785800209E-05 
   xn= 9.0987990248E-01 xn+1= 9.0987350958E-01 f(xn+1)=-6.8122881203E-06 
   xn= 9.0987350958E-01 xn+1= 9.0987691573E-01 f(xn+1)= 3.6295678001E-06 
   xn= 9.0987691573E-01 xn+1= 9.0987510095E-01 f(xn+1)=-1.9338276616E-06 
   xn= 9.0987510095E-01 xn+1= 9.0987606786E-01 f(xn+1)= 1.0303429008E-06 
   xn= 9.0987606786E-01 xn+1= 9.0987555269E-01 f(xn+1)=-5.4896190704E-07 
   xn= 9.0987555269E-01 xn+1= 9.0987582717E-01 f(xn+1)= 2.9248803912E-07 
   xn= 9.0987582717E-01 xn+1= 9.0987568093E-01 f(xn+1)=-1.5583464119E-07 
   xn= 9.0987568093E-01 xn+1= 9.0987575885E-01 f(xn+1)= 8.3031409304E-08 
   xn= 9.0987575885E-01 xn+1= 9.0987571733E-01 f(xn+1)=-4.4236003305E-08 
   xn= 9.0987571733E-01 xn+1= 9.0987573945E-01 f(xn+1)= 2.3572283681E-08 
   xn= 9.0987573945E-01 xn+1= 9.0987572766E-01 f(xn+1)=-1.2558302842E-08 
   xn= 9.0987572766E-01 xn+1= 9.0987573394E-01 f(xn+1)= 6.6920620156E-09 
   Конечные значения
   xn+1= 9.0987573394E-01 f(xn+1)= 6.6920620156E-09 
Библиографический список
1.   Алексеев В. Е., Ваулин А. С., Петрова Г. Б. Вычислительная техника и программирование. Практикум по программированию/ Практ. Пособие. 
— М.: Высшая школа, 1991.
2.   Абрамов С. А., Зима Е. В. Начала программирования на языке Паскаль. — М.: Наука, 1987.
3.   Вычислительная техника и программирование: Учеб. для техн. вузов. – М.: Высшая школа, 1990.
4.   Гусев В. А., Мордкович А. Г. Математика: Справ. материалы: Кн. для учащихся. — М.: Просвещение, 1990.
5.   Марченко А. И., Марченко Л. А. Программирование в среде Turbo Pascal 7.0 – К.: ВЕК+. — М.: Бином Универсал, 1998.

 

Категория: Точные науки: Математика | Добавил: Alexandr5228 (06.07.2014)
Просмотров: 768 | Рейтинг: 0.0/0
Всего комментариев: 0
avatar