Метод касательных решения нелинейных уравнений
Пензенский приборостроительный колледж
Метод касательных решения нелинейных уравнений
Выполнил: Ст-т 22п группы ЛЯПИН Р.Н.
Проверила: ______________
Ковылкино — 1999 г.
ЗАДАНИЕ
студент Ляпин Р.Н. группа 22п
- Тема: «Метод касательных решения нелинейных уравнений».
- Изучить теоретический материал по заданной теме.
- Составить блок схему алгоритма решения задачи .
- Написать программу на языке Турбо-Паскаль для решения задачи в общем виде.
- Выполнить программу с конкретными значениями исходных данных.
- Определить корни уравнения х3 + 0,1 * х2 + 0,4 * х — 1,2 = 0 аналитически и уточнить один из них с точностью до 0,1 методом касательных
- Срок представления работы к защите: 10 мая 1999 г.
- Исходные данные для исследования: научная и техническая литература.
Руководитель курсовой работы:Кривозубова С.А.
Задание принял к исполнению:Ляпин Р.Н.
РЕФЕРАТ
Курсовая работа содержит: страниц, 1 график, 5 источников.
Перечень ключевых понятий: производная, метод касательных, программирование, нелинейное уравнение.
Объект исследования: Корни нелинейного уравнения.
Цель работы: Определение корней нелинейного уравнения.
Методы исследования: изучение работ отечественных и зарубежных авторов по данной теме.
Полученные результаты: изучен метод касательных решения нелинейных уравнений; рассмотрена возможность составления программы на языке программирования Турбо-Паскаль 7.0
Область применения: в работе инженера.
СОДЕРЖАНИЕ
стр.
ВВЕДЕНИЕ… 5
1. Краткое описание сущности метода касательных
(метода секущих Ньютона)… 7
2. Решение нелинейного уравнения аналитически . 9
3. Блок схема программы … 11
4. Программа на языке PASCAL 7.0 … 12
5. Результаты выполнения программы … 13
СПИСОК ИСПОЛЬЗОВАННИХ ИСТОЧНИКОВ … 14
ВВЕДЕНИЕ
Процедура подготовки и решения задачи на ЭВМ достаточно сложный и трудоемкий процесс, состоящий из следующих этапов:
- Постановка задачи (задача, которую предстоит решать на ЭВМ, формулируется пользователем или получается им в виде задания).
- Математическая формулировка задачи.
- Разработка алгоритма решения задачи.
- Написание программы на языке программирования.
- Подготовка исходных данных .
- Ввод программы и исходных данных в ЭВМ.
- Отладка программы.
- Тестирование программы.
- Решение задачи на ЭВМ и обработка результатов.
В настоящей курсовой работе условие задачи дано в математической формулировке, поэтому необходимость в выполнении этапов 1 и 2 отпадает и сразу можно приступить к разработке алгоритма решения задачи на ЭВМ. Под алгоритмом понимается последовательность арифметических и логических действий над числовыми значениями переменных, приводящих к вычислению результата решения задачи при изменении исходных данных в достаточно широких пределах. Таким образом, при разработке алгоритма решения задачи математическая формулировка преобразуется в процедуру решения, представляющую собой последовательность арифметических действий и логических связей между ними. При этом алгоритм обладает следующими свойствами: детерминированностью, означающей, что применение алгоритма к одним и тем же исходным данным должно приводить к одному и том уже результату; массовость, позволяющей получать результат при различных исходных данных; результативностью, обеспечивающей получение результата через конечное число шагов.
Наиболее наглядным способом описания алгоритмов является описание его в виде схем. При этом алгоритм представляется последовательность блоков, выполняющих определенные функции, и связей между ними. Внутри блоков указывается информация, характеризующая выполняемые ими функции. Блоки схемы имеют сквозную нумерацию.
Конфигурация и размеры блоков, а также порядок построения схем определяются
На этапе 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,17 363 |
2 | 0,85 | 0,7225 | 0,614 125 | 0,9 368 125 | 0,8 465 |
3 | 0,9 368 125 | 0,87 761 766 | 0,822 163 194 | 0,89 448 752 | -0,4 651 |
4 | 0,89 448 752 | 0,800 107 923 | 0,715 686 552 | 0,917 741 344 | 0,24 288 |
5 | 0,917 741 344 | 0,842 249 174 | 0,772 966 889 | 0,905 597 172 | -0,1 306 |
6 | 0,905 597 172 | 0,820 106 238 | 0,74 268 589 | 0,912 129 481 | 0,6 923 |
7 | 0,912 129 481 | 0,83 198 019 | 0,758 873 659 | 0,908 667 746 | -0,0037 |
8 | 0,908 667 746 | 0,825 677 072 | 0,750 266 124 | 0,910 517 281 | 0,1 968 |
9 | 0,910 517 281 | 0,829 041 719 | 0,754 856 812 | 0,909 533 333 | -0,105 |
10 | 0,909 533 333 | 0,827 250 884 | 0,752 412 253 | 0,910 057 995 | 0,559 |
11 | 0,910 057 995 | 0,828 205 555 | 0,753 715 087 | 0,909 778 575 | -0,0003 |
12 | 0,909 778 575 | 0,827 697 055 | 0,753 021 048 | 0,909 927 483 | 0,159 |
13 | 0,909 927 483 | 0,827 968 025 | 0,753 390 861 | 0,909 848 155 | -8,5E-05 |
14 | 0,909 848 155 | 0,827 823 665 | 0,753 193 834 | 0,909 890 424 | 4,5E-05 |
15 | 0,909 890 424 | 0,827 900 583 | 0,753 298 812 | 0,909 867 904 | -2,4E-05 |
16 | 0,909 867 904 | 0,827 859 602 | 0,753 242 881 | 0,909 879 902 | 1,28E-05 |
17 | 0,909 879 902 | 0,827 881 437 | 0,753 272 681 | 0,90 987 351 | -6,8E-06 |
18 | 0,90 987 351 | 0,827 869 803 | 0,753 256 804 | 0,909 876 916 | 3,63E-06 |
19 | 0,909 876 916 | 0,827 876 002 | 0,753 265 263 | 0,909 875 101 | -1,9E-06 |
20 | 0,909 875 101 | 0,827 872 699 | 0,753 260 756 | 0,909 876 068 | 1,03E-06 |
График функции 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.1;
Writeln(' От A=', a,' до B=', b); {Вывод на экран}
Writeln(' Погрешность с=', c);
Readln; { Ожидание нажатия клавиши Enter}
xn:=b;