Метод хорд

Министерство образования и науки РФ

Рязанская Государственная Радиотехническая Академия

Кафедра САПР ВС

Пояснительная записка к курсовой работе

По дисциплине,,Информатика”

Тема: ,,Метод хорд”

Выполнил:

Студент 351 группы

Литвинов Е. П.

Проверил:

Скворцов С. В.

Рязань 2004г.

Контрольный пример к курсовой работе студента 351 группы Литвинова Евгения.

Задание: Разработать программу, которая выполняет уточнение корня нелинейного уравнения отделенного на заданном интервале [a, b], заданным методом.

Решить нелинейное уравнение с использованием разработанной программы и средств системы MathCAD. Сравнить полученные результаты.

Определить количество необходимых итераций для следующих значений погрешностей результата: Eps=;;;;.

Используемый метод: метод хорд.

Контрольный пример: ;

Интервал [a, b]: [0,1].

Вариант: 2.2

Задание принял:

Число выдачи задания:

Число выполнения задания:

Проверил: Скворцов С. В.

Метод хорд.

Пусть дано уравнение , где – непрерывная функция, имеющая в интервале (a, b) производные первого и второго порядков. Корень считается отделенным и находится на отрезке [a, b].

Идея метода хорд состоит в том, что на достаточно малом промежутке [a, b] дугу кривой Можно заменить хордой и в качестве приближенного значения корня принять точку пересечения с осью абсцисс. Рассмотрим случай (рис.1), когда первая и вторая производные имеют одинаковые знаки, т. е. .

Уравнение хорды – это уравнение прямой, проходящей через две точки (a, f(a)) и (b, f(b)).

Общий вид уравнения прямой, проходящей через две точки:

Подставляя в эту формулу значения, получим уравнение хорды AB:

.

Пусть x1 – точка пересечения хорды с осью x, так как y = 0, то

X1 может считаться приближенным значением корня.

Аналогично для хорды, проходящей через точки и , вычисляется следующее приближение корня:

В общем случае формулу метода хорд имеет вид:

(1)

Если первая и вторая производные имеют разные знаки, т. е. , то все приближения к корню выполняются со стороны правой границы отрезка (рис.2) и вычисляются по формуле:

(2)

Выбор формулы в каждом конкретном случае зависит от вида функции и осуществляется по правилу: неподвижной является такая граница отрезка изоляции корня, для которой знак функции совпадает со знаком второй производной. Формула (1) используется в том случае, когда . Если справедливо неравенство , то целесообразно применять формулу (2).

Итерационный процесс метода хорд продолжается до тех пор, пока не будет получен приближенный корень с заданной степенью точности. При оценке погрешности приближения можно пользоваться соотношением

Если обозначить через m наименьшее значение |f'(x)| на промежутке [a, b], которое можно определить заранее, то получим формулу для оценки точности вычисления корня:

или

Где – заданная погрешность вычислений.

Список идентификаторов.

A – начало отрезка,

B – конец отрезка,

Eps – погрешность вычислений,

X – искомое значение корня,

Min – модуль значения производной функции в начале отрезка,

D – модуль значения производной функции в конце отрезка,

X0 – точка, в которой мы ищем производную.

****************************************************************

Program kursovaia;

Uses crt;

Var

A, b, eps, x, min: real;

{Вычисление данной функции}

Function fx(x:real): real;

Begin

Fx:=exp(x)-10*x;

End;

—————————————————————-

{Функция вычисления производной и определение точности вычислений}

{Для определения точности вычисления берем значение 2-й производной в точке x*=}

Function proizv(x0,eps: real): real;

Var

Dx, dy, dy2: real;

Begin

Dx:=1;

Repeat

Dx:=dx/2;

Dy:=fx(x0+dx/2)-fx(x0-dx/2);

Dy2:=fx(5*x0/4+dx)-2*fx(5*x0/4);

Dy2:=dy2+fx(5*x0/4-dx);

Until abs(dy2/(2*dx))<eps;

Proizv:=dy/dx;

End;

—————————————————————-

{Уточнение количества знаков после запятой}

Function utoch(eps:real): integer;

Var

K: integer;

Begin

K:=-1;

Repeat

Eps:=eps*10;

K:=k+1;

Until eps>1;

Utoch:=k;

End;

—————————————————————-

{Процедура определения наименьшего значения производной на

Заданном промежутке}

Procedure minimum(a, b, eps: real; var min: real);

Var

D: real;

Begin

A:=a-eps;

B:=b+eps;

Repeat

A:=a+eps;

B:=b-eps;

Min:=abs(proizv(a, eps));

D:=abs(proizv(b, eps));

If min>d Then min:=d

Until min <>0

End;

—————————————————————-

{Процедура уточнения корня методом хорд}

Procedure chord(a, b, eps, min: real; var x:real);

Var

X1: real;

Begin

X1:=a;

Repeat

X:=x1-((b-x1)*fx(x1))/(fx(b)-fx(x1));

X1:=x

Until abs(fx(x))/min<eps

End;

—————————————————————-

{Основная программа}

Begin

Clrscr;

Writeln (‘Введите начало отрезка a, конец отрезка b’);

Readln (a, b);

Writeln (‘Введите погрешность измерений eps’);

Readln (eps);

Minimum(a, b, eps, min);

Chord(a, b, eps, min, x);

Writeln (‘Корень уравнения x= ‘,x:3:utoch(eps));

End.

****************************************************************

После работы программы для различных значений погрешностей, получим результаты корня x :

0,11

0,111

0,1119

0,11183

0,111833

Результат вычислений в программе MathCAD дал следующее значение корня x :

X=0.112

График функции выглядит так:

Поведение функции вблизи точки пересеченья с осью ОХ выглядит так:

Алгоритм.

Пользуясь рекуррентной формулой (2) и формулой для оценки точности вычисления, составим процедуру уточнения корня методом хорд:

Procedure chord(a, b, eps, min : real; var x : real);

Здесь x:=x1-((b-x1)*fx(x1))/(fx(b)-fx(x1)) – рекуррентная формула,

Abs(fx(x))/min < eps – формула для оценки точности вычислений.

При вычислении производной функции

Function proizv(x0, eps : real) : real;

Будем иметь в виду, что один из способов найти производную – это взять достаточно малые значения справа и слева на равном расстоянии от – точке, в которой мы хотим найти производную.

Таким образом, вычисляется производная в середине промежутка.

По значениям f’ можно таким же способом найти производную от f’, т. е. f”. Можно выразить f” непосредственно через f(x):

Для производной третьего порядка можно использовать следующую формулу:

Здесь dx:=1 – первоначальная величина промежутка,

Dx:=dx/2 – для уточнений делим промежуток на 2,

Dy:=fx(x0+dx/2 – fx(x0-dx/2) – вычисление первой производной в точке x0 ,

Dy2:=fx(5*x0/4+dx)-2*fx(5*x0/4)+fx(5*x0/4-dx) – вычисление второй производной, для определения точности вычисления, используется вторая производная в точке

Abs(dy2/(2*dx))<eps – формула для оценки погрешности

Дифференцирования,

Proizv:=dy/dx – значение первой производной.

Для оценки точности вычисления корня необходимо вычислять наименьшее значение производной f'(x) на промежутке [a, b], поэтому надо найти производную в точке x0.

Так как мы вычислили значение производной, то составим процедуру определения модуля ее наименьшего значения на промежутке [a, b]:

Procedure minimum(a, b, eps:real;var min:real);

Для этого достаточно сравнить модуль значения производной на концах промежутка и выбрать среди этих двух значений меньшее. Это можно сделать, так как по условию, функция на промежутке строго монотонна вместе со своими производными первого и второго порядков. Следует брать значение очень близкое к a, но справа от нее, аналогично для точки b – брать близкое значение слева от b, так как если в точке a или b производная будет равна нулю, тогда деление на нуль станет невозможным и в программе будет получена ошибка.

Здесь min:=abs(proizv(a, eps))- модуль значения производной функции в начале отрезка,

D:=abs(proizv(b, eps))- модуль значения производной функции в конце отрезка,

If min>d Then – сравнение значений модуля производной.

Функция для указания точности вычисления:

Function utoch(eps:real):integer;

Применяется в выводе корня x для уточнения его порядка относительно погрешности.

Здесь k:=k+1 – оператор, подсчитывающий степень погрешности и порядка корня x.

Заданную функцию запишем так:

Function fx(x:real):real;

Здесь fx:=exp(x)-10*x – наша заданная функция.

Блок-схема алгоритма.

Список используемой литературы:

1) Математическое обеспечение САПР: Методические указания к практическим занятиям. Рязань, РРТИ, 1990 (№1706).

2) Математическое обеспечение САПР: Методические указания к лабораторным работам. Рязань, РРТИ, 1991 (№1890).

3) Бахвалов Н. С., Шадков И. П., Кобельников Г. М., Численные методы. М.: Наука, 1987.

4) Волков Е. А., Численные методы. М.: Наука, 1988.

5) Элементы вычислительной математики, под ред. С. Б. Норкина. М.: Высшая школа, 1966.


Метод хорд