49800

Нахождение корней нелинейного уравнения

Курсовая

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

Блок-схемы реализующие численные методы -для метода дихотомии: Блок-схема для метода хорд: Блок-схема для метода Ньютона: Листинг программы unit Unit1; interfce uses Windows Messges SysUtils Vrints Clsses Grphics Controls Forms Dilogs TeEngine Series ExtCtrls TeeProcs Chrt Menus OleCtnrs StdCtrls xCtrls OleCtrls VCF1 Mth; type TForm1 = clssTForm GroupBox1: TGroupBox; OleContiner2: TOleContiner; MinMenu1: TMinMenu; N1: TMenuItem; Chrt1: TChrt; Series1:...

Русский

2014-01-08

3.95 MB

109 чел.

РОССИЙСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ НЕФТИ И ГАЗА им. И.М. ГУБКИНА

Кафедра информатики

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

по дисциплине «Информатика».                                                                                        

Тема: «Нахождение корней нелинейного уравнения»

Выполнил: студентка

Манепова А. М

группы: ГИ-12-05

Проверил:

                                                 Москва, 2013


Оглавление

[1]  

[2]
Задание на выполнение курсовой работы.

[3]
Теория нахождения корней нелинейного уравнения. Описание используемых численных методов.

[4]                           1. Метод половинного деления (дихотомии)

[4.1] 2.Метод хорд

[4.2] 3. Метод Ньютона

[4.3] Расчеты в математическом пакете Mat lab

[5]
Отчет о результатах вычисления приближенного значения корня уравнения в MS Excel.  

[5.1] Результаты расчета с использованием Побора Параметра

[5.2]
Результаты расчета с использованием Поиска Решений

[6]
Описание приложения созданного в среде Delphi.

[6.1]
Блок – схемы реализующие численные методы

[6.2] Листинг программы

[6.3]
Изображение окна приложения

[7]
Анализ полученных результатов

[8]
Литература.

 


Задание на выполнение курсовой работы.

  1.  расчет, выполненный в математическом пакете Matlab (Mathematica 5.) (файл-функция для описания нелинейного уравнения, график, решение в символьном и численном виде).
  2.  Нахождение корней нелинейного уравнения  в электронных таблицах MS Excel (вид нелинейного уравнения, график нахождения корней нелинейного уравнения, найти корень нелинейного уравнения, используя средства условного анализа: «Побор параметра», «Поиск решения»).
  3.  Создание приложения для нахождения корней нелинейного уравнения в среде Delphi (вид нелинейного уравнения, график на заданном интервале, для каждого метода: результаты табулирования функции на заданном интервале с заданным шагом,  для каждого метода численного метода пользовательскую подпрограмму с передачей параметров). Результаты отобразить на форме в виде таблицы и в файле. Предусмотреть изменение точности значения (Е <= 0,001).
  4.  вид уравнения  


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

Пусть задана функция , непрерывная вместе со своими несколькими производными. Требуется найти все или некоторые вещественные корни уравнения

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

Рассмотрим три метода: 1) метод дихотомии (или деление отрезка пополам); 2) метод простой итерации и 3) метод Ньютона. 

                          1. Метод половинного деления (дихотомии) 

 
Пусть на отрезке [a, b] задана непрерывная функция
  Если значения функции на концах отрезка имеют разные знаки, т.е.  то это означает, что внутри данного отрезка находится нечетное число корней. Пусть для определенности корень один. Суть метода состоит в сокращении на каждой итерации вдвое длины отрезка. Находим середину отрезка [a,b] по фомуле:  Вычисляем значение функции  и выбираем тот отрезок, на котором функция  меняет свой знак. Новый отрезок вновь делим пополам. И этот процесс продолжаем до тех пор, пока длина отрезка не сравняется с наперед заданной погрешностью вычисления корня Е.

2.Метод хорд

При решении нелинейного уравнения методом хорд задаются интервалы [a,b], на котором существует только одно решение, и точность Ɛ. Затем через две точки с координатами (a,F(a)) и (b,F(b)) проводим отрезок прямой линии (  хорду) и определяем точку пересечения этой линии с осью абцисс. Ели при этом F(a)*F(b) <0, то праву границу интервала пееносиим в точку x (b=x). Если указанное условие не выполняется, то в точку x переносится левая граница интервала (a=x). Поиск решения пекращается при достижении заданной точности |F(x)|>Ɛ. Вычисления ведутся до тех пор, пока не выполнится неравенство: .  Итерационная формула метода хорд имеет вид:

3. Метод Ньютона

 

Чтобы численно решить уравнение  методом простой итерации, его необходимо привести к следующей форме: , где  — сжимающее отображение.

Для наилучшей сходимости метода в точке очередного приближения  должно выполняться условие . Решение данного уравнения ищут в виде , тогда:

В предположении, что точка приближения «достаточно близка» к корню , и что заданная функция непрерывна , окончательная формула для  такова:

С учётом этого функция  определяется выражением:

Эта функция в окрестности корня осуществляет сжимающее отображение[1], и алгоритм нахождения численного решения уравнения  сводится к итерационной процедуре вычисления:

Расчеты в математическом пакете Mat lab

В математическом пакете по условию задания был построен график функции и найден корень уравнения с использование символьного решения(solve) и в численном виде используя встроенные функции: fzero и fsolve. Для описания моей функции использовала файл-функцию.

На следующем рисунке представлен графи функции:


Для записи команд использовала
M-файл:


В командном окне были получены следующие результаты:

r1 =

-8

r2 =

   -8

r3 =

   -8

r4 =

  -8.0000

r5 =

  -7.9979   -8.0000


Отчет о результатах вычисления приближенного значения корня уравнения в MS Excel.  

MS Excel  был проведен расчет приближенного значения корня уравнения с помощью встроенных возможностей «Подбор параметров» и «Поиск решений». Для выбора начального приближения предварительно мной была построена диаграмма.

Результаты расчета с использованием Побора Параметра

В качестве начального приближения был выбран x=-9 (исходя из диаграммы)

В результате использования Подбора Параметра был найден корень x=-8,01.


Результаты расчета с использованием Поиска Решений

В качестве начального приближения был выбран x=-9 (исходя из диаграммы)


После выполнения был получен следующий результат:

Поиск решения дал мне значение x= -8,00002


Описание приложения созданного в среде Delphi.

При создании приложения в среде Delphi в интерфейсе был предусмотрен вывод вида функции и графика. Нахождение корня нелинейного уравнения было реализовано с использование трех методов: Метод дихотомии, Метод Хорд и Метод Ньютона. В отличии от расчета в Excel,  где корни находились с помощью подбора параметров и поиска решения, в программе предусмотрен ввод точности вычисления пользователем. Результаты расчета выводятся как в окно приложения так и в текстовый файл.  


Блок – схемы реализующие численные методы

Блок-схема для метода дихотомии:


Блок-схема для метода хорд:


Блок-схема для метода Ньютона:


Листинг программы

unit Unit1;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, Menus, OleCtnrs,

 StdCtrls, AxCtrls, OleCtrls, VCF1, Math;

type

 TForm1 = class(TForm)

   GroupBox1: TGroupBox;

   OleContainer2: TOleContainer;

   MainMenu1: TMainMenu;

   N1: TMenuItem;

   Chart1: TChart;

   Series1: TPointSeries;

   N2: TMenuItem;

   N3: TMenuItem;

   N4: TMenuItem;

   N5: TMenuItem;

   Label1: TLabel;

   Edit1: TEdit;

   GroupBox2: TGroupBox;

   GroupBox3: TGroupBox;

   GroupBox4: TGroupBox;

   Label2: TLabel;

   Label3: TLabel;

   Edit2: TEdit;

   Edit3: TEdit;

   Edit4: TEdit;

   Label4: TLabel;

   Edit5: TEdit;

   Label5: TLabel;

   Edit7: TEdit;

   Label7: TLabel;

   F1Book1: TF1Book;

   F1Book2: TF1Book;

   F1Book3: TF1Book;

   F1Book4: TF1Book;

   procedure N1Click(Sender: TObject);

   procedure N3Click(Sender: TObject);

   procedure FormCreate(Sender: TObject);

   procedure N4Click(Sender: TObject);

   procedure N5Click(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

const

xmin:real=-20;

xmax:real=20;

var

 Form1: TForm1;

 x,y,t,a,b,cor:real;

 i,n:integer;

 fail:textfile;

implementation

{$R *.dfm}

function f(x:real):real;

begin

f:=(8+x)/(x*sqrt(sqr(x)-4));

end;

function f1(x:real):real;

begin

f1:=(-power(x,3)-16*x*x+32)/(x*X*sqrt(power(x*x-4,3)));

end;

procedure metoddix(ta,tb,eps:real;var xk:real;var kolvo: integer);

begin

kolvo:=0;

repeat

xk:=(ta+tb)/2;

kolvo:=kolvo+1;

Form1.F1book1.NumberRC[kolvo,1]:=xk;

Form1.F1book1.NumberRC[kolvo,2]:=f(xk);

if f(ta)*f(xk)<0 then tb:=xk

else ta:=xk;

until (abs(f(xk))<=eps);

end;

procedure metodhord(ta,tb,eps:real;var xk:real;var kolvo: integer);

begin

kolvo:=0;

repeat

xk:= ta-f(ta)*(ta-tb)/(f(ta)-f(tb));

kolvo:=kolvo+1;

Form1.F1book2.NumberRC[kolvo,1]:=xk;

Form1.F1book2.NumberRC[kolvo,2]:=f(xk);

if f(ta)*f(xk)<0 then tb:=xk

else ta:=xk;

until (abs(f(xk))<=eps);

end;

procedure metodnyutona(ta,eps:real;var xk:real;var kolvo: integer);

begin

kolvo:=0;

repeat

xk:= ta-f(ta)/f1(ta);

ta:=xk;

kolvo:=kolvo+1;

Form1.F1book3.NumberRC[kolvo,1]:=xk;

Form1.F1book3.NumberRC[kolvo,2]:=f(xk);

until (abs(f(xk))<=eps);

end;

procedure TForm1.N1Click(Sender: TObject);

begin

x:=xmin;

i:=0;

while x<=xmax do

begin

if abs(x)>5 then

 begin

 i:=i+1;

 y:=f(x);

 series1.Addxy(x,y);

 F1book4.NumberRC[i,1]:=x;

 F1book4.NumberRC[i,2]:=y;  

 end;

x:=x+0.5;

end;

end;

procedure TForm1.N3Click(Sender: TObject);         //Вычисление корня методом половинного деления

begin

F1book1.ClearRange(1,1,100,2,3);

t:=strtofloat(Edit1.Text);

a:=strtofloat(Edit2.Text);

b:=strtofloat(Edit3.Text);

metoddix(a,b,t,cor,n);

F1book4.TextRC[1,4]:='дихотомия';

F1book4.TextRC[2,4]:='корень=';

F1book4.NumberRC[2,5]:=cor;

F1book4.TextRC[3,4]:='y=';

F1book4.NumberRC[3,5]:=f(cor);

F1book4.TextRC[4,4]:='количество итераций =';

F1book4.NumberRC[4,5]:=n;

assignfile(fail,'отчет.txt');

append(fail);

writeln(fail);

writeln(fail,'Расчет методом дихотомии');

 writeln(fail,'Точность расчета = ',t:10:7);

writeln(fail,'Начальное приближение:a = ',a:8:3,'  b = ',b:8:3);

 writeln(fail, 'Найден корень: x = ',cor:8:3,  '    y=f(x)= ',f(cor):8:6);

 writeln(fail, 'Количество итераций = ',n);

 closefile(fail);

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

assignfile(fail,'отчет.txt');

rewrite(fail);

closefile(fail);

end;

procedure TForm1.N4Click(Sender: TObject);    // Вычисление корня методом хорд

begin

F1book2.ClearRange(1,1,100,2,3);

t:=strtofloat(Edit1.Text);

a:=strtofloat(Edit5.Text);

b:=strtofloat(Edit4.Text);

metodhord(a,b,t,cor,n);

F1book4.TextRC[6,4]:='хорды';

F1book4.TextRC[7,4]:='корень=';

F1book4.NumberRC[7,5]:=cor;

F1book4.TextRC[8,4]:='y=';

F1book4.NumberRC[8,5]:=f(cor);

F1book4.TextRC[9,4]:='количество итераций =';

F1book4.NumberRC[9,5]:=n;

assignfile(fail,'отчет.txt');

append(fail);

writeln(fail);

writeln(fail,'Расчет методом хорд');

 writeln(fail,'Точность расчета = ',t:10:7);

writeln(fail,'Начальное приближение:a = ',a:8:3,'  b = ',b:8:3);

 writeln(fail, 'Найден корень: x = ',cor:8:3,  '    y=f(x)= ',f(cor):8:6);

 writeln(fail, 'Количество итераций = ',n);

 closefile(fail);

end;

procedure TForm1.N5Click(Sender: TObject);      // Вычисление корня методом Ньютона

begin

F1book3.ClearRange(1,1,100,2,3);

t:=strtofloat(Edit1.Text);

a:=strtofloat(Edit7.Text);

metodnyutona(a,t,cor,n);

F1book4.TextRC[11,4]:='Ньютона';

F1book4.TextRC[12,4]:='корень=';

F1book4.NumberRC[12,5]:=cor;

F1book4.TextRC[13,4]:='y=';

F1book4.NumberRC[13,5]:=f(cor);

F1book4.TextRC[14,4]:='количество итераций =';

F1book4.NumberRC[14,5]:=n;

assignfile(fail,'отчет.txt');

append(fail);

writeln(fail);

writeln(fail,'Расчет методом Ньютона');

 writeln(fail,'Точность расчета = ',t:10:7);

writeln(fail,'Начальное приближение:a = ',a:8:3,'  b = ',b:8:3);

 writeln(fail, 'Найден корень: x = ',cor:8:3,  '    y=f(x)= ',f(cor):8:6);

 writeln(fail, 'Количество итераций = ',n);

closefile(fail);

end;

end.


Изображение окна приложения

Первоначальный интерфейс имеет следующий вид:

После выполнения расчетов при E<= 0,001:

В качестве отчета был сформирован файл  «Отчет.txt.»:


Анализ полученных результатов

В соответствии с заданием на курсовую работу в математическом пакете мною был найден корень нелинейного уравнения (x=-8) и построен график.

В электронных таблицах был найден корень уравнения с помощью двух встроенных возможностей «Подбор параметра» и «Поиск решения» , при этом «Поиск решения» все же дал более точное значение. Результаты практически совпали с результатами в Matlab.

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

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


Литература.

  1.  Амосов А.А. и др. вычислительные методы для инженеров М., Высшая школа, 1994.
  2.  Фаронов В.В. Delphi. Программирование на зыке высокого уровня

               3.    Уокенбах Д. Microsoft Office Excel 2007. Библия пользователя

       Волков В.Б. Понятный самоучитель Excel 2010


 

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

33036. Формы международной финансовой глобализации. Роль финансов в развитии международного сотрудничества 30 KB
  Финансовый механизм складывающийся в сфере международных экономических связей выступает орудием реализации финансовой политики государства в области международного сотрудничества России. Функционируя в международной сфере финансы оказывают влияние на экономические интересы участников международных связей выступают как стимул развития между народной экономической интеграции. Роль финансов в развитии международного сотрудничества проявляется по следующим направлениям: Изыскание источников и мобилизация необходимых финансовых ресурсов для...
33037. Финансы: их сущность и роль в системе отношений рыночной экономики 51.5 KB
  Если деньги можно считать всеобщим эквивалентом то финансы – это экономический инструмент распределения и перераспределения валового внутреннего продукта ВВП и национального дохода орудие контроля за образованием и использованием фондов денежных средств. Главное назначение финансов состоит в том чтобы путем создания денежных доходов и фондов обеспечить не только потребности государства и предприятий в денежных средствах но и контроль за расходованием финансовых ресурсов. Финансы это не сами денежные средства а отношения между...
33038. Функции финансов и их проявление в системе финансовых отношений 55 KB
  Необходимым элементом рыночной экономики являются денежные отношения складывающиеся между экономическими субъектами. Финансы это экономические отношения по поводу образования распределения и использования целевых денежных фондов. Финансы это экономическая категория а любая экономическая категория выражает определенные экономические отношения. Финансовые отношения имеют целый ряд особенностей по сравнению с другими экономическими отношениями: денежные отношения; распределительные отношения; связаны с формированием и использованием...
33039. Финансовая система: понятие, назначение. Структура и принципы организации финансовой системы РФ 43.5 KB
  Структура и принципы организации финансовой системы РФ. Возглавляет систему финансовых органов РФ Министерство финансов РФ которое является исполнительным органом обеспечивающим проведение единой финансовой бюджетной налоговой и валютной политики и осуществляющим общее руководство организацией финансов в РФ. Функции финансовой деятельности выполняют также органы государственного управления РФ и субъектов РФ в рамках отнесенных к их компетенции сфер управления. Структура финансовой системы это совокупность её элементов и связей...
33040. Государственные внебюджетные фонды: Пенсионный фонд, Фонд социального страхования, Фонд обязательного медицинского страхования: цели, задачи, порядок формирования и расходования финансовых ресурсов. Роль внебюджетных фондов в системе финансов 53.5 KB
  Государственные внебюджетные фонды: Пенсионный фонд Фонд социального страхования Фонд обязательного медицинского страхования: цели задачи порядок формирования и расходования финансовых ресурсов.; Фонд социального страхования РФ создан в 1990 г.; Фонд обязательного медицинского страхования создан в 1991 г. Вторым по объёму аккумулируемых средств государственным внебюджетным фондом является Фонд социального страхования РФ.
33041. Финансовые рынки и финансовые посредники: понятие, виды, функции 53 KB
  Финансовый рынок представляет собой сферу реализации финансовых активов и экономических отношений возникающих между продавцами и покупателями этих активов. Функции финансового рынка: Реализация стоимости и потребительной стоимости заключённой в финансовых активах. Организация процесса доведения финансовых активов до потребителей Финансовое обеспечение процессов инвестирования и потребления Воздействие на денежное обращение В процессе выполнения финансовым рынком 1й функции Реализация стоимости и потребительной стоимости...
33042. Финансовый механизм: понятие, цель и задачи, структура 49 KB
  Цель финансового механизма в обеспечении эффективного функционирования финансовой системы. Задачи финансового механизма: обеспечение стабильного кругооборота финансовых ресурсов; обеспечение перераспределения финансовых ресурсов в соответствии с потребностями отдельных субъектов хозяйствования; уменьшение риска потерь финансовых ресурсов субъектами хозяйствования. Организационная функция финансового механизма направлена на организацию финансовых отношений как объекта управления т. Управленческая функция финансового механизма...
33043. Органы управления финансами в РФ: перечень, характеристика. Особенности реформы государственного управления 2004г 109.5 KB
  Функции органов представительной власти Президента РФ И Центрального Банка в области регулирования финансов. Структура и функции органов власти осуществляющих управление финансами в условиях реализации административной реформы претерпели существенные изменения. Функции этих органов разделены на четыре вида: нормотворческая контроль и надзор: управление государственным имуществом; оказание государственных услуг. В систему федеральных органов исполнительной власти входят федеральные министерства федеральные службы и федеральные...
33044. Министерство финансов РФ: цели и задачи деятельности 45 KB
  К основным задачам Министерства финансов РФ относятся: совершенствование бюджетной системы и развитие бюджетного федерализма; разработка и реализация единой финансовой бюджетной налоговой и валютной политики в РФ; концентрация финансовых ресурсов на приоритетных направлениях социальноэкономического развития; разработка проекта федерального бюджета и обеспечение исполнения федерального бюджета; составление отчета об исполнении федерального бюджета и консолидированного бюджета РФ; разработка программ государственных...