Пензенский приборостроительный колледж

на тему:
Метод касательных решения нелинейных уравнений

Выполнил: 	Ст-т 22п группы  ЛЯПИН  Р.Н.

Проверила:	______________

Ковылкино – 1999 г.

ЗАДАНИЕ НА КУРСОВУЮ РАБОТУ

студент Ляпин Р.Н. группа 22п

1.	Тема: "Метод касательных решения нелинейных уравнений".
2.	Изучить теоретический материал по заданной  теме.
3.	Составить блок схему алгоритма решения задачи .
4.	Написать программу на языке Турбо-Паскаль для решения задачи в общем виде.
5.	Выполнить программу с конкретными значениями исходных данных.  
6.	Определить корни уравнения х3 + 0,1 * х2 + 0,4 * х – 1,2 = 0 аналитически и уточнить один из них с точностью до 0,000001 методом касательных
7.	Срок представления работы к защите: 10 мая 1999 г.
8.	Исходные данные для исследования: научная и техническая литература.

Руководитель курсовой работы: Кривозубова С.А.

Задание принял к исполнению:  Ляпин Р.Н.

РЕФЕРАТ

Курсовая работа содержит:  страниц, 1 график, 5 источников.
Перечень ключевых понятий: производная, метод касательных, программирование, нелинейное уравнение.
Объект исследования: Корни нелинейного уравнения.
Цель работы: Определение корней нелинейного уравнения.
Методы исследования: изучение работ отечественных и зарубежных авторов по данной теме.
Полученные результаты: изучен метод касательных решения нелинейных уравнений; рассмотрена возможность составления программы на языке программирования Турбо-Паскаль 7.0
Область применения: в работе инженера.

СОДЕРЖАНИЕ

стр.

ВВЕДЕНИЕ........................................	5

1. Краткое описание сущности метода касательных 
   ( метода секущих Ньютона)....................	7

2. Решение нелинейного уравнения аналитически ..	9

3. Блок схема программы ........................	11

4. Программа на языке PASCAL 7.0 ...............	12

5. Результаты выполнения программы .............	13

СПИСОК ИСПОЛЬЗОВАННИХ ИСТОЧНИКОВ ...............	14

	

ВВЕДЕНИЕ

	Процедура подготовки и решения задачи на ЭВМ достаточно сложный и трудоемкий процесс, состоящий  из следующих этапов:
1.	Постановка задачи (задача, которую предстоит решать на ЭВМ, формулируется пользователем   или получается им  в виде задания).
2.	Математическая формулировка задачи.
3.	Разработка алгоритма решения задачи.
4.	Написание программы на языке программирования.
5.	Подготовка исходных данных .
6.	Ввод программы и исходных данных в ЭВМ.
7.	Отладка программы.
8.	Тестирование программы. 
9.	Решение задачи на ЭВМ и обработка результатов.
В настоящей курсовой работе условие задачи дано в математической формулировке, поэтому необходимость в выполнении этапов 1 и 2 отпадает и сразу можно приступить к разработке алгоритма решения задачи на ЭВМ. Под алгоритмом понимается последовательность арифметических и логических действий над числовыми значениями переменных, приводящих к вычислению результата решения задачи при изменении исходных данных в достаточно широких пределах. Таким образом, при разработке алгоритма решения задачи математическая формулировка преобразуется в процедуру решения, представляющую собой последовательность арифметических действий и логических связей между ними. При этом алгоритм обладает следующими свойствами: детерминированностью, означающей, что применение алгоритма к одним и тем же исходным данным должно приводить к одному и том уже  результату; массовость, позволяющей получать результат при различных исходных данных; результативностью, обеспечивающей получение результата через конечное число шагов.
Наиболее наглядным способом описания алгоритмов является описание его в виде схем. При этом алгоритм представляется последовательность блоков, выполняющих определенные функции, и связей между ними. Внутри блоков указывается информация, характеризующая выполняемые ими функции. Блоки схемы имеют сквозную нумерацию.
Конфигурация и размеры блоков, а также порядок построения схем определяются ГОСТ 19.002-80 и ГОСТ 19.003-80.
На этапе  4 составляется программа на языке Турбо-Паскаль. При описании программы необходимо использовать характерные приемы программирования и учитывать специфику языка. В качестве языка программирования выбран язык ПАСКАЛЬ ввиду его наглядности и облегченного понимания для начинающих программистов, а также возможности в дальнейшем использовать для решения более трудных задач.
Этапы алгоритмизации и программирования являются наиболее трудоемкими, поэтому им уделяется большое внимание.
В процессе выполнения курсовой работы студент готовит исходные данные, вводит программу и исходные данные. При работе ввод программы и исходных данных осуществляется с клавиатуры дисплея.
Отладка программы состоит в обнаружении и исправлении ошибок, допущенных на всех этапах подготовки задач к решению на ПЭВМ. Синтаксис ошибки обнаруживается компилятором, который выдает сообщение, указывающее место и тип ошибки. Обнаружение семантических ошибок осуществляется на этапе тестирования программы, в котором проверяется правильность выполнения программы на упрощенном варианте исходных данных или с помощью контрольных точек или в режиме пошагового исполнения.
Задание при обработке на  ЭВМ проходит ряд шагов: компиляцию, редактирование (компоновку) и выполнение.
Обработка результатов решения задачи осуществляется с помощью ЭВМ. Выводимые результаты оформлены в виде, удобном для восприятия.                        

1. Краткое описание сущности метода касательных 
( метода секущих Ньютона)

Пусть на отрезке [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 = x n– ( f (x n) / f ’(x n))				(2)
Если на отрезке [a;b]   f ’(x) * f “(x) > 0, то нул – евое приближение выбираем x0=a. Рассмотрим геометрический смысл метода . Рассмотрим график функции y=f(x). Пусть для определенности f ‘(x) > 0 и f “(x) > 0 (рис. 1). Проведем касательную к графику функции в точке 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 пересечения касательной с осью Ox : 
x2 = x1 – (f (x1) / ( f ’(x1))
Вообще :
xk+1 = x k – ( f (x k) / f ’(x k))					(3)
Таким образом, формула (3) дает последовательные приближения (xk) корня, получаемые из уравнения касательной , проведенной к графику функции в точке         b k (x k; f (x k0) метод уточнения корня  c  [a;b] уравнения f (x) = 0 с помощью формулы (3) называется методом касательной или методом Ньютона.
Геометрический смысл метода касательных состоит в замене дуги y = f (x) касательной, одной к одной  из крайних точек . Начальное приближение x 0 = a или    x0 = b брать таким, чтобы вся последовательность приближения х k принадлежала интервалу  ]a;b[ . В случае существования производных f ’, f ”, сохраняющих свои знаки в интервале, за х0 берется тот конец отрезка [a;b], для которого выполняется условие  f ’(х0) * f (х0) > 0. Для оценки приближения используется общая формула :
|c-x k-1 | £ | f (x k+1)/m| , где m = min f ’(x) на отрезке [a;b] .
На практике проще пользоваться другим правилом : 
Если на отрезке [a;b] выполняется условие  0 < m <  | f (x)|  и  e - заданная точность решения, то неравенство | x k+1-x k| £  e  влечет выполнение неравенства       |c-x k-1| £  e .
В этом случае процесс последовательного приближения продолжают до тех пор, пока не выполнится неравенство :
|c-x k-1| £  e .

2. Решение нелинейного уравнения аналитически 

Определим корни уравнения х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	х2n	х3n	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 

3. Блок схема программы

Начало

a:=0;
b:=1;
c:=0.00000001;

y0:= f(b);
х n:= b;

нет

да

Конец

y0>c

х n:= х n+1;
х n+1:= j (х n);
y0:= f(х n+1);

Печать на дисплей промежуточных
х n+1, f(х n+1)

Печать на дисплей конечных значений 
х n+1, f(х n+1)

4. Программа на языке 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. {Конец основного тела программы}
5. Результаты выполнения программы

От 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. – 400 с.
2.	Абрамов С.А., Зима Е.В. – Начала программирования на языке Паскаль. – М.: Наука, 1987. –112 с.
3.	Вычислительная техника и программирование: Учеб. для техн. вузов/ А.В. Петров, В.Е. Алексеев, А.С. Ваулин и др. – М.: Высш. шк., 1990 – 479 с.
4.	Гусев В.А., Мордкович А.Г. – Математика: Справ. материалы: Кн. для учащихся. – 2-е изд. – М.: Просвещение, 1990. – 416 с.
5.	Марченко А.И., Марченко Л.А. – Программирование в среде Turbo Pascal 7.0 – К.: ВЕК+, М.: Бином Универсал, 1998. – 496 с.