Учебная работа № 1177. Метод касательных решения нелинейных уравнений

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (3 оценок, среднее: 4,67 из 5)
Загрузка...
Контрольные рефераты

Учебная работа № 1177. Метод касательных решения нелинейных уравнений

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

на тему:

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

Выполнил: Стт 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.00280 и ГОСТ 19.00380.

На этапе 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 k 0 ) метод уточнения корня 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. Для оценки приближения используется общая формула :

|cx k 1 |  | f (x k +1 )/m| , где m = min f ’(x) на отрезке [a;b] .

На практике проще пользоваться другим правилом :

Если на отрезке [a;b] выполняется условие 0 < m < | f (x)| и заданная точность решения, то неравенство | x k+ 1 x k |  влечет выполнение неравенства |cx k 1 | 

В этом случае процесс последовательного приближения продолжают до тех пор, пока не выполнится неравенство :

|cx k 1 | 

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 =  (x) , так , чтобы | ‘ (x) | <1 при 0 x  +1.

Так как max | f ’(x) | = f ’(+1) = 3 + 0,1 + 0,4 = 3,5 то можно взять R = 2.

Тогда  (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 = (х n ).

Вычисления расположим в таблице.

n хn х2 n х3 n  (х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,5E05
14 0,909848155 0,827823665 0,753193834 0,909890424 4,5E05
15 0,909890424 0,827900583 0,753298812 0,909867904 2,4E05
16 0,909867904 0,827859602 0,753242881 0,909879902 1,28E05
17 0,909879902 0,827881437 0,753272681 0,90987351 6,8E06
18 0,90987351 0,827869803 0,753256804 0,909876916 3,63E06
19 0,909876916 0,827876002 0,753265263 0,909875101 1,9E06
20 0,909875101 0,827872699 0,753260756 0,909876068 1,03E06

График функции y = х3 + 0,1х2 + 0,4х – 1,2

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

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 . {Конец основного тела программы}

От A = 0.0000000000E+00 до B= 1.0000000000E+00

Погрешность с= 1.0000000000E08

От A= 0.0000000000E+00 до B= 1.0000000000E+00

Погрешность с= 1.0000000000E08

xn= 8.5000000000E01 xn+1= 9.3681250000E01 f(xn+1)= 8.4649960270E02

xn= 9.3681250000E01 xn+1= 8.9448751986E01 f(xn+1)=4.6507647892E02

xn= 8.9448751986E01 xn+1= 9.1774134381E01 f(xn+1)= 2.4288343840E02

xn= 9.1774134381E01 xn+1= 9.0559717189E01 f(xn+1)=1.3064617920E02

xn= 9.0559717189E01 xn+1= 9.1212948085E01 f(xn+1)= 6.9234699658E03

xn= 9.1212948085E01 xn+1= 9.0866774587E01 f(xn+1)=3.6990702320E03

xn= 9.0866774587E01 xn+1= 9.1051728099E01 f(xn+1)= 1.9678960780E03

xn= 9.1051728099E01 xn+1= 9.0953333295E01 f(xn+1)=1.0493249720E03

xn= 9.0953333295E01 xn+1= 9.1005799543E01 f(xn+1)= 5.5884091853E04

xn= 9.1005799543E01 xn+1= 9.0977857497E01 f(xn+1)=2.9781681224E04

xn= 9.0977857497E01 xn+1= 9.0992748338E01 f(xn+1)= 1.5865717614E04

xn= 9.0992748338E01 xn+1= 9.0984815480E01 f(xn+1)=8.4537703515E05

xn= 9.0984815480E01 xn+1= 9.0989042365E01 f(xn+1)= 4.5040009354E05

xn= 9.0989042365E01 xn+1= 9.0986790364E01 f(xn+1)=2.3997676180E05

xn= 9.0986790364E01 xn+1= 9.0987990248E01 f(xn+1)= 1.2785800209E05

xn= 9.0987990248E01 xn+1= 9.0987350958E01 f(xn+1)=6.8122881203E06

xn= 9.0987350958E01 xn+1= 9.0987691573E01 f(xn+1)= 3.6295678001E06

xn= 9.0987691573E01 xn+1= 9.0987510095E01 f(xn+1)=1.9338276616E06

xn= 9.0987510095E01 xn+1= 9.0987606786E01 f(xn+1)= 1.0303429008E06

xn= 9.0987606786E01 xn+1= 9.0987555269E01 f(xn+1)=5.4896190704E07

xn= 9.0987555269E01 xn+1= 9.0987582717E01 f(xn+1)= 2.9248803912E07

xn= 9.0987582717E01 xn+1= 9.0987568093E01 f(xn+1)=1.5583464119E07

xn= 9.0987568093E01 xn+1= 9.0987575885E01 f(xn+1)= 8.3031409304E08

xn= 9.0987575885E01 xn+1= 9.0987571733E01 f(xn+1)=4.4236003305E08

xn= 9.0987571733E01 xn+1= 9.0987573945E01 f(xn+1)= 2.3572283681E08

xn= 9.0987573945E01 xn+1= 9.0987572766E01 f(xn+1)=1.2558302842E08

xn= 9.0987572766E01 xn+1= 9.0987573394E01 f(xn+1)= 6.6920620156E09

Конечные значения

xn+1= 9.0987573394E01 f(xn+1)= 6.6920620156E09

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

1. Алексеев В. Е., Ваулин А.С., Петрова Г. Б. – Вычислительная техника и программирование. Практикум по программированию :Практ .пособие/ –М.: Высш. шк. , 1991. – 400 с.

2. Абрамов С.А., Зима Е.В. – Начала программирования на языке Паскаль. – М.: Наука, 1987. –112 с.

3. Вычислительная техника и программирование: Учеб. для техн. вузов/ А.В. Петров, В.Е. Алексеев, А.С. Ваулин и др. – М.: Высш. шк., 1990 – 479 с.

4. Гусев В.А., Мордкович А.Г. – Математика: Справ. материалы: Кн. для учащихся. – 2е изд. – М.: Просвещение, 1990. – 416 с.

5. Марченко А.И., Марченко Л.А. – Программирование в среде Turbo Pascal 7.0 – К.: ВЕК+, М.: Бином Универсал, 1998. – 496 с.

Учебная работа № 1177. Метод касательных решения нелинейных уравнений