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

Автор работы: Пользователь скрыл имя, 13 Сентября 2012 в 20:07, курсовая работа

Краткое описание

Нелинейные уравнения можно разделить на 2 класса - алгебраические и трансцендентные. Методы решения нелинейных уравнений делятся на две группы:
1. точные методы;
2. итерационные методы.
Из школьного курса алгебры известны такие методы для решения тригонометрических, логарифмических, показательных, а также простейших алгебраических уравнений.

Содержание

1. Решение нелинейных уравнений ---------------- 3
2. Описание метода хорд ---------------------------- 5
3. Метод хорд. Блок-схема ------------------------- 7
4. Текст программы ----------------------------------- 8
5. Ручной счет ------------------------------------------ 9
6. Результат работы программы ----------------- 9
7. Список используемой литературы ------------ 9

Вложенные файлы: 1 файл

курсач по проге.doc

— 626.00 Кб (Скачать файл)


 

 

    Федеральное агенство по образованию ГОУ ВПО                                       Московский Государственный Строительный                                         Университет                                                                                                 Факультет информационных систем, технологий и    автоматизации в строительстве

Системы автоматизированного проектирования

 

 

 

Курсовая работа

«Метод хорд для решения

нелинейный уравнений»

 

 

 

 

 

 

 

 

 

Выполнила :

Родичева А.А.

ИСТАС 1-3

Научный руководитель:

Доц. Зоткин С.П.

 

 

 

 

 

Оглавление

1.  Решение нелинейных уравнений ---------------- 3

2.       Описание метода хорд ---------------------------- 5

3.       Метод хорд. Блок-схема ------------------------- 7

4.       Текст программы ----------------------------------- 8

5.       Ручной счет ------------------------------------------ 9

6.       Результат работы программы ----------------- 9

7.       Список используемой литературы ------------ 9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Решение нелинейных уравнений

 

          Нелинейные уравнения можно разделить на 2 класса - алгебраические и трансцендентные.

          Алгебраическими уравнениями называют уравнения, содержащие только алгебраические функции (целые, рациональные, иррациональные). В частности, многочлен является целой алгебраической функцией.

         Уравнения, содержащие другие функции (тригонометрические, показательные, логарифмические и другие) называются трансцендентными.

          Методы решения нелинейных уравнений делятся на две группы:

1.   точные методы;

2.   итерационные методы.

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

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

Пусть дано уравнение

f(x) = 0

 

где:

1.   Функция f(x) непрерывна на отрезке [a, b] вместе со своими производными 1-го и 2-го порядка.

2.   Значения f(x) на концах отрезка имеют разные знаки          (f(a)   f(b) < 0).

3.   Первая и вторая производные f ' (x) и f '' (x) сохраняют определенный знак на всем отрезке.

Условия 1) и 2) гарантируют, что на интервале [a, b] находится хотя бы один корень, а из 3) следует, что f(x) на данном интервале монотонна и поэтому корень будет единственным.

Решить уравнение (1) итерационным методом значит установить, имеет ли оно корни, сколько корней и найти значения корней с нужной точностью.

Всякое значение ε, обращающее функцию f(x) в нуль, т.е. такое, что:

f(ε) = 0

 

называется корнем уравнения (1) или нулем функции f(x).

Задача нахождения корня уравнения f(x) = 0 итерационным методом состоит из двух этапов:

1.   отделение корней - отыскание приближенного значения корня или содержащего его отрезка;

2.   уточнение приближенных корней - доведение их до заданной степени точности.

Отделение корней.

Целью этого этапа является нахождение отрезков из области определения функции f(x), внутри которых содержится только один корень решаемого уравнения. Иногда ограничиваются рассмотрением лишь какой-нибудь части области определения, вызывающей по тем или иным соображениям интерес. Для реализации данного этапа используются графические или аналитические способы.

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

Воспользовавшись этим критерием можно отделить корни аналитическим способом, находя интервалы монотонности функции.

Отделение корней можно выполнить графически, если удается построить график функции y=f(x). В ряде случае бывает удобно заменить уравнение f(x)=0  эквивалентным уравнением вида f1(x)=f2 (x) . Корни этого уравнения определяются абсциссами точек пересечения графиков функций y= f1(x) и  y=f2 (x).

Уточнение корней.

Для уточнения корня с требуемой точностью обычно применяется какой-либо итерационный метод, заключающийся в построении числовой последовательности x (k=0,1,2,…), сходящейся к искомому корню уравнения  f(x)=0.

 

 

 

Описание метода хорд.

 

 

В данном методе процесс итераций состоит в том, что в качестве приближений к корню уравнения (1) принимаются значения х1, х2, ..., хn точек пересечения хорды АВ с осью абсцисс (Рисунок 3). Сначала запишем уравнение хорды AB:


Для точки пересечения хорды AB с осью абсцисс (х = х1, y = 0) получим уравнение:


Пусть для определенности f'' (x) > 0 при а   х   b (случай f'' (x) < 0 сводится к нашему, если записать уравнение в виде - f(x) = 0). Тогда кривая у = f(x) будет выпукла вниз и, следовательно, расположена ниже своей хорды АВ. Возможны два случая: 1) f(а) > 0 (Рисунок 3, а) и 2) f(b) < 0 (Рисунок 3, б).

 

 

Рисунок 3, а, б.

 В первом случае конец а неподвижен и последовательные приближения: x0 = b;



(5)

образуют ограниченную монотонно убывающую последовательность, причем


Во втором случае неподвижен конец b, а последовательные приближения: x0 = а;

(6)

образуют ограниченную монотонно возрастающую последовательность, причем

Обобщая эти результаты, заключаем:

1.   неподвижен тот конец, для которого знак функции f (х) совпадает со знаком ее второй производной f'' (х);

2.   последовательные приближения xn лежат по ту сторону корня x , где функция f (х) имеет знак, противоположный знаку ее второй производной f'' (х).

Итерационный процесс продолжается до тех пор, пока не будет обнаружено, что

| xi - xi - 1|< e ,

где e - заданная предельная абсолютная погрешность.

 

 

Метод хорд. Блок-схема

 

 

 

 

 

Текст программы.

 

#include<stdio.h>

#include<conio.h>

#include<math.h>

// Прототип функции, которая решает уравнение методом хорд.

float mx(float,float,float,float(*)(float));

// Прототип функции, которая возвращает функцию.

float f(float);

main()

{

 

float a                             // Начало промежутка.

float b                                          // Конец промежутка.

float x                                          // Приближенное значение.

float eps                            // Необходимая точность.

float x,a,b,eps;

printf("\n Задайте границы интервала и точность:");

scanf("%f%f%f",&a,&b,&eps);

x=mx(a,b,eps,f);

printf("\nx=%3.2f\nF=%f",x,f(x));

getch();

}

float f(float x)

{

      return x*x*х+3*x-7;

}

float mx(float a,float b,float eps,float(*f)(float))

{

      float x;

      do{

            x=(a*f(b)-b*f(a))/(f(b)-f(a));

            if(f(x)==0)

            return x;

            else

            if(f(a)*f(x)>0)

            a=x;

            else

            b=x;

            }while(fabs(f(x))>eps);

            return x;

           }

 

 

 

 

 

Ручной счет.

Найти корень уравнения

                                          x3+3x-7=0

Определим необходимый для поиска интервал [a,b].

Вычислим значение функции f(x)= x3+3x-7 в нескольких точках:

f(0)=-7       f(1)= -3<0                             f(2)=7>0

На интервале [0,2]  функция меняет знак.

Проверим монотонность функции f(x) на данном интервале.

f’(x)=3x2+3

На промежутке [0,2] производная функции больше нуля. Следовательно функция монотонно возрастает. Вывод: корень уравнения лежит на отрезке [0,2].

 

n

a

b

x

f(a)

f(b)

f(x)

0

0

2

1

-7

7

-3

1

1

2

1,25

-3

9

-1,29688

2

1,25

2

1,344461

-1,29688

9

-0,5364

3

1,344461

2

1,381334

-0,5364

9

-0,2203

4

1,381334

2

1,396115

-0,2203

9

-0,09043

5

1,396115

2

1,402123

-0,09043

9

-0,03713

6

1,402123

2

1,404579

-0,03713

9

-0,01525

7

1,404579

2

1,405586

-0,01525

9

-0,00626

8

1,405586

2

1,406

-0,00626

9

-0,00257

9

1,406

2

1,406169

-0,00257

9

-0,00106

10

1,406169

2

1,406239

-0,00106

9

-0,00043

 

 

Результат работы программы.

 

Задайте границы интервала и точность

x=1,406239

F=-0,00043

 

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

              Информация взята с сайтов    www.physics.herzen.spb.ru

                                                             www.exponenta.ru

                                                           

 

                                                                                  8

 



Информация о работе Метод хорд для решения нелинейный уравнений