44419

Программирование и исследование алгоритмов решения нелинейных уравнений. Метод итераций

Курсовая

Информатика, кибернетика и программирование

Данный проект разработан для вычисления корней нелинейного уравнения методом итераций. Теоретическая часть – теория описывающая правила вычисления корней нелинейного уравнения методом итераций а также блоксхема метода. Визуализация метода – последовательный показ работы проекта на вычисление корней уравнения методом итераций. Решение уравнения вида разбивается на два этапа: 1 отделение корней т.

Русский

2013-11-12

3.16 MB

64 чел.

                                   Уразаев Вагиз Хафизович    МАС-101д    Вариант21

УФИМСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

ФИЛИАЛ В ГОРОДЕ СТЕРЛИТАМАК

КАФЕДРА ЕСТЕСТВЕННО-НАУЧНЫХ И ОБЩЕПРОФЕССИОНАЛЬНЫХ ДИСЦИПЛИН

100

2

3

4

5

6

7

8

9

10

11

12

90

80

70

60

50

40

30

20

10

 

Программирование и исследование алгоритмов решения нелинейных уравнений.

Метод итераций.

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовой работе по ИНФОРМАТИКЕ

2403.302321.000ПЗ

Группа МАС-101д

Фамилия, и.о.

Подпись

Дата

Оценка

Студент

Уразаев В.Х.

Консультант

Карасева Л.М.

Проверил

Стерлитамак 2012 г.


Содержание

[1]
Содержание

[2]
1. Теоретическая часть

[3] Математическое моделирование. Метод итераций.

[4] 1.2 Блок-схема программы

[5]
2. Практическая реализация

[5.1] 2.1 Проектирование интерфейса

[5.1.0.1] Рисунок 2 - Меню

[5.1.0.2]                                          Рисунок 3 - Ввод данных

[5.2] 2.2 Программирование вычисления

[5.3] 2.3 Визуализация метода

[5.4] 2.4 Вычислительный эксперимент

[6]
3.Заключение

[7]           В процессе выполнения курсовой работы были закреплены практические навыки по разработке пользовательских приложений при помощи объектно-ориентированного языка программирования Lazarus и современных компьютерных технологий обработки информации, а также навыки в составлении текстовой документации.
4.Литература


Введение

Данный проект разработан для вычисления корней нелинейного уравнения методом итераций. Программа написана на языке высокого уровня Lazarus.

Пояснительная записка состоит из следующих разделов:

1. Теоретическая часть – теория, описывающая правила вычисления корней нелинейного уравнения методом итераций, а также блок-схема метода.

2. Практическая реализация:

2.1 Проектирование интерфейса – создание и описание элементов (частей) из которых состоит данная программа.

2.2 Программирование вычисления – конечный результат работы.

2.3 Визуализация метода – последовательный показ работы проекта на вычисление корней уравнения методом итераций.

2.4 Вычислительный эксперимент – сравнение результатов программы с решением в математическом пакете Maxima.

3. Заключение о проделанной работе.

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


1. Теоретическая часть

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

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

Решение уравнения вида  разбивается на два этапа:

   1) отделение корней, т.е. отыскание достаточно малых областей, в каждой из которых заключен один и только один корень уравнения;

   2) вычисление выделенного корня с заданной точностью.

Первый этап более сложный, в этом случае может помочь построение приближенного графика функции с анализом на монотонность, смену знака, выпуклость и т.д.

Для вычисления выделенного корня существует множество методов, например:

-  метод итераций;

-  метод половинного деления;

-  метод Ньютона.

Подробнее остановимся на первом методе.

  1.  Математическое моделирование. Метод итераций.

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

     f(x)=0.  (1)

где f(x) – непрерывная функция, и требуется определить его вещественные корни. Заменим уравнение (1) равносильным уравнением

x=j (x).  (2)

Выберем каким-либо способом грубо приближенное значение корня x0 и подставим его в правую часть уравнения (2). Тогда получим некоторое число

x1=j (x0).  (3)

Подставляя теперь в правую часть равенства (3) вместо x0 число x1 получим новое число x2=j (x1). Повторяя этот процесс, будем иметь последовательность чисел

xn=j (xn-1) (n=1, 2,...).    (4)

Достаточным условием сходимости будет условие:  |φ' (x)|<1.

Геометрический смысл итерационного процесса. Корнем уравнения x=φ(x) является абсцисса точки пересечения кривой y=φ(x) c  прямой y=x.

Если х0 – абсцисса нулевого приближения, то х1=φ(х0). Тогда х1 равно ординате соответствующей точки пересечения M0;φ(х0)) кривой y=φ(x) и прямой x=x0. Аналогично находятся следующие приближения.

Если эта последовательность – сходящаяся, т.е. существует предел, то, переходя к пределу в равенстве (4) и предполагая функцию j (x) непрерывной, найдем:

      С =j (x).                                                                                       (5)

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

Доказано, что достаточными условиями сходимости итерационного процесса является выполнение условия | j (x)<1 для xΠ[a, ,b].

При этом процесс сходится к единственному корню С

Рисунок 1 – Геометрическая интерпретация метода простой итерации

Рассмотрим нахождение корней уравнения  методом итераций на заданном промежутке [2;3].

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

Вычислим значения производной на концах отрезка:

φ'(2)=-0,47;

φ'(3)=0,39.

На заданном отрезке функция монотонно убывает и | φ' (x)|≤1 , отсюда следует, что метод итераций применим.

Вычислим х1 по формуле:

;

Затем вычисляем  хn и  хn+1  до тех пор, пока не выполнится условие:

| хn - хn+1 |<ε (ε=0,01):

Х0

Х1

|х0 – х1| <ε

2

2,388571429

-

2,388571429

2,285714286

-

2,285714286

2,3006285

-

2,3006285

2,29821571

+

    

Таким образом, найден корень уравнения, который равен 2,29821571 (при ε=0,01).

Соответственно описанной выше методике  составим блок–схему решения уравнения методом итераций:

1.2 Блок-схема программы


2. Практическая реализация

2.1 Проектирование интерфейса

Сначала создадим меню титульного  листа, на котором обозначим назначение программы. Здесь же создадим пять Unit «Ввод, решение, иллюстрация, об авторе, выход ». (Рис.2)

                

Рисунок 2 - Меню

Далее, создадим форму приложения (Рис. 3) для ввода исходных данных. На ней разместим следующие объекты:

-    Edit1, Edit2, Edit3 (для ввода промежутка (a, b)  и точности (ε));

  •  Label1, Label2, Label3 (имена для Edit1, Edit2, Edit3,);
  •  Button1 (кнопка для закрытия формы);
  •  Button2 (кнопка перехода к следующему шагу):

                             

                                         Рисунок 3 - Ввод данных

Создадим следующую форму (рис. 4), для решения данного нелинейного уравнения. На ней будут находиться:

  •  Edit1 (для вывода ответа решения);
  •  Button1 (кнопка для вычисления);
  •  Button2 (кнопка закрытия формы)

                   

                           Рисунок 4 - Решение

Следующая форма 4 предназначена для построения графика (рис 5). Оно включает в себя:

  •  Button1 (кнопка для иллюстрации метода);
  •  Button2 (кнопка закрытия формы);
  •  Сhart1 (иллюстрация);
  •  Edit1(задать шаг):

               

  Рисунок 5 - Иллюстрация

Пятая форма (рис. 6) будет представлять из себя множество Label в которых будет описано назначение программы.

        

  Рисунок 6 – Об авторе

Теперь, после того как мы создали  необходимые формы, можем приступать к созданию программного кода. В этом коде нам необходимо будет:

в Form3 – решить уравнение;

в Form4 – иллюстрировать.

2.2 Программирование вычисления

Для начала опишем переменные и функции, используемые при решении:

var

a, b, e, x0, x1: real;

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

procedure TForm3.Button1Click(Sender: TObject);

begin

a:=strtofloat(form2.edit1.text);

         b:=strtofloat(form2.edit2.text);

e:=strtofloat(form2.edit3.text);

         x1:=a;

         repeat

         x0:=x1;

         x1:=(3.8-3*sin(sqrt(x0)))/0.35;

         Until  abs(x0-x1)<e;

         Form3.Edit1.Text:=FloatToStr(x1);

end;

2.3 Визуализация метода

Нажав на кнопку «Иллюстрировать», перед нами демонстрируется построение графика функции, изображенного красным цветом, при этом предусмотрена возможность визуализации метода итераций: черном цветом показано появление точек, приближающихся к решению уравнения, Построение графика осуществляется в ниже следующем программном коде:

procedure TForm4.Button1Click(Sender: TObject);

var

a, b, h, x:real;

i: integer;

begin

Chart1LineSeries1.clear;

Chart1LineSeries2.clear;

a:=strtofloat(form2.edit1.text);

b:=strtofloat(form2.edit2.text);

h:=strtofloat(form4.edit1.text);

x:=a;

 While x<=b do

 Begin

 Chart1LineSeries1.SeriesColor:=clRed;

 Chart1LineSeries1.Addxy(x,(3*sin(sqrt(x))+0.35*x-3.8));

 Chart1LineSeries1.ShowLines:=True;

 Chart1LineSeries1.ShowPoints:=false;

 x:=x+h;

 end;

 x:=a;

 for i:=1 to 5 do

 Begin

 Chart1LineSeries2.AddXY(x,0);

 x:=(3.8-3*sin(sqrt(x)))/0.35;

 Chart1LineSeries2.ShowPoints:=true;

 Chart1LineSeries2.ShowLines:=false;

 sleep(1000);

 Application.ProcessMessages;

 end;            

end;

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

2.4 Вычислительный эксперимент

Запуская программу, появляется главное окно, из которого узнаем о назначении программы (Рис. 7).

               

                       Рисунок 7 - Титульный лист (Меню)

Нажав на кнопку «Ввод», открывается форма приложения (Рис. 8).

                   

                                      Рисунок 8 – Ввод

Вводим соответствующие значения интервалов и точность. Далее нажимаем на кнопку «Далее» и переносятся в форму 3 (Рис. 9) затем нажимаем на кнопку «Решить» и выводится результат:

                      

                                   Рисунок 9 - Решение

Чтобы иллюстрировать функцию, нажмем на кнопку «Иллюстрировать» (Рис. 10):

                  

                             Рисунок 10 – График функции

Далее нажимаем на кнопку «Об авторе», мы увидим назначение программы, разработчика и проверяющего консультанта (рис. 11).

                 

Рисунок 11 – Об авторе

Затем нужно сравнить результат моего решения с результатом решения в математическом пакете Maxima (рис. 12), (рис. 13):

                  

Рисунок 12 - Ввод уравнения в математическом пакете Maxima

Рисунок 13 - Результат решения в математическом пакете Maxima

Таким образом, результат решенного мною уравнения совпадает с результатом в математическом пакете Maxima.


3.Заключение

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

В данной курсовой работе был рассмотрен и проверен на практике метод вычисления корней нелинейного уравнения    – метод итераций. Итогом работы является программа, реализованная в IDE Lazarus, с помощью которой вычисляются нелинейные уравнения на заданном пользователем отрезке [a, b], с наглядным графиком функции на этом же отрезке.

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

          В процессе выполнения курсовой работы были закреплены практические навыки по разработке пользовательских приложений при помощи объектно-ориентированного языка программирования Lazarus и современных компьютерных технологий обработки информации, а также навыки в составлении текстовой документации.
4.Литература

  1.  Акулич И. Л. Математическое программирование в примерах и задачах: Учеб. пособие для студентов эконом. спец. вузов. — М.: Высшая школа, 1986.
  2.  Алексеев В.Е. и др. Вычислительная техника и программирование. Практикум по программированию. - М.: ВШ, 1991.
  3.  Бахвалов, Н. С. Численные методы [Текст] : учеб. пособие для физ.-мат. специальностей вузов / Н. С. Бахвалов, Н. П. Жидков, Г. М. Кобельков ; под общ. ред. Н. И. Тихонова. – 2-е изд. – М. : Физматлит :     Лаб. базовых знаний ; СПб. : Нев. диалект, 2002. – 630 с.
  4.  Вержбицкий В. М. Основы численных методов: Учебник для вузов/ В. М. Вержбицкий. — М.: Высшая школа, 2002, — 840 с.: ил.
  5.  Кулагин Н.Б. Программирование в Turbo Pascal 7.0 и Delphi. BHV 2000.
  6.  Культин Н. Delphi в задачах и примерах. - Изд.: БХВ-Петербург, 2004.- 288 с
  7.  Культин Н.Б. Программирование в Turbo Pascal и Delphi. - СПб.: BHV - Санкт-Петербург, 1998. - 240 с.
  8.  Острейковский В.А. Информатика/ Учебник для вузов. – М.: Высш. шк., 2001. – 511 с.
  9.  Соловов А.В. Проектирование компьютерных систем учебного назначения: Учебное пособие. Самара: СГАУ, 1995.  211 с
  10.  СТО УГАТУ 016-2007

׀x0-x1׀˂E

Конец

X1

X1=φ(X0)

X0=X1

X1, E

Начало


 

А также другие работы, которые могут Вас заинтересовать

3658. СПОРТ ДЛЯ ВСІХ 1.16 MB
  СПОРТ ДЛЯ ВСІХ (Звучить мелодія грецького танцю «Сіртаки» ). Голос за кадром. Більше двох тисяч років тому в Греції, в долині річки Алфей, знаходилось містечко Олімпія. У густій зелені оливкових гаїв сяяли біломармурові храми в честь давньогрецьких...
3659. Склад числа шість. Поняття зліва, справа 396.31 KB
  Мета уроку. Сформувати вміння складати приклади на додавання та віднімання в межах 6. Вчити розрізняти многокутники за їх основними ознаками, розвивати вміння аналізувати, співставляти, виділяти істотне. Закріпити навики визначення понять «зліва», «справа». Збагатити знання про тваринний світ морських мешканців, виховувати любов до природи, дбайливе ставлення до живого.
3660. Нам треба твого голосу, Тарасе! 122 KB
  Нам треба твого голосу, Тарасе! Мета: Вчити учнів сприймати поезію Кобзаря серцем і душею, виховувати любов до України, її великих людей. Оформлення: У залі – портрет Тараса Шевченка, прикрашений рушниками. Виставка книг та ;вишивок. Хід з...
3661. Алгоритми роботи з одномірними масивами 119 KB
  Алгоритми роботи з одномірними масивами. Масив задає спосіб організації даних. Масивом називають упорядковану сукупність елементів одного типу. Кожен елемент масиву має індекси, що визначають порядок елементів. Число індексів характеризує розмі...
3662. Алгоритми роботи з багатомірними масивами 160.5 KB
  Алгоритми роботи з багатомірними масивами Поділ;масивів на одномірні і багатомірні носить історичний характер. Ніякої принципової різниці між ними немає. Одномірні масиви - це окремий випадок багатомірних. Можна говорити й по-іншому: багат...
3663. Робота з масивами 218 KB
  Робота з масивами Масиви в C# Масив задає спосіб організації даних. Масивом називають упорядковану сукупність елементів одного типу. Кожен елемент масиву має індекси, що визначають порядок елементів. Число індексів характеризує розмірніс...
3664. Клас Array і нові можливості масивів 90.5 KB
  Клас Array і нові можливості масивів Клас Array Не можна зрозуміти багато деталей роботи з масивами в C#, якщо не знати пристрій класу Array з бібліотеки FCL, нащадками якого є всі класи-масиви. Розглянемо наступні оголошення: Клас Array...
3665. Алгоритми обробки символьної інформації 947.27 KB
  Алгоритми обробки символьної інформації. Символьна інформація — це інформація, що відображається за допомогою символів (букв, цифр, знаків операцій і ін.). IBM-сумісні комп'ютери обробляють 256 різних символів, кожен з яких кодується одним байтом. Відповідність символів і байтів задається таблицею кодування, в якому для кожного символу вказується відповідний байт.
3666. Клас StringBuilder – будівничий рядків 125 KB
  Клас StringBuilder – будівничий рядків. Клас string не дозволяє змінювати існуючі об'єкти. Стрінговий клас StringBuilder дозволяє компенсувати цей недолік. Цей клас належить до змінюваних класів і його можна знайти в просторі імен System.Text. Розглянемо клас StringBuilder докладніше.