Анализ и сравнение численных методов решения нелинейных уравнений

Автор работы: Пользователь скрыл имя, 27 Октября 2014 в 18:42, курсовая работа

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

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

Содержание

1. Введение 3
2. Численные методы решения нелинейных
уравнений 5
3. Постановка задачи 6
4. Основные методы решения нелинейных
уравнений 7
5.1. Метод половинного деления 8
5.2. Метод касательных 11
5.3. Метод хорд 14
5. Практическая часть 19
6. Заключение 26
7. Список используемой литературы 27

Прикрепленные файлы: 1 файл

Пояснительная записка .docx

— 207.77 Кб (Скачать документ)

xn+1=xn;         x0=a.                                     (4)

Вычисления очередных приближений к точному корню уравнения продолжается до тех пор, пока не достигнем заданной точности, т.е. должно выполняться условие: |xn+1-xn|<, где - заданная точность. 
Теперь рассмотрим случай, когда первая и вторая производные имеют разные знаки, т.е. f '(x) f ''(x)<0. (рис. 3).

 
Рис. 3. Геометрическая интерпретация метода хорд для случая f '(x) f ''(x)<0.

Соединим точки A0(a,f(a)) и B0(b,f(b))  хордой А0В0. Точку пересечения хорды с осью Ох будем считать первым приближение корня. В этом случае неподвижным концом отрезка будет являться конец а. 
Уравнение хорды А0В0:. Отсюда найдем x1, полагая y = 0: x1=b. Теперь корень уравнения x[a;x1]. Применяя метод хорд к этому отрезку, получим x2=x1. Продолжая и т.д., получим xn+1=xn. 
Расчетные формулы метода:

xn+1=xn, x0=0 .                                                           (5) 
Условие окончания вычислений: |xn+1-xn|<. Тогда хпр = xn+1 с точностью Итак, если f '(x) f ''(x)>0 приближенное значение корня находят по формуле (4), если f '(x) f ''(x)<0, то по формуле (5).

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

Пример. Проиллюстрировать действие этого правила на уравнении

(x-1)ln(x)-1=0, если отрезок изоляции корня [2;3].

Решение. Здесь f(x)=(x-1)ln(x)-1.

f '(x)=ln(x)+;

 f ''(x)=.

Вторая производная в этом примере положительна на отрезке изоляции корня [2;3]: f ''(x)>0, f(3)>0, т.е. f(b) f''(x)>0. Таким образом, при решении данного уравнения методом хорд для уточнения корня выбираем формулы (4).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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


 


 


 





 

 



                                                   Нет



 

 ДА


 


 


 


 

 

 

 

 

 

Практическая часть

unit Unit1;

interface

uses

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

  Dialogs, ExtCtrls, TeeProcs, TeEngine, Chart, StdCtrls, Series;

type

  TForm1 = class (TForm)

    Label3: TLabel;

    Button1: TButton;

    Edit3: TEdit;

    Edit4: TEdit;

    Chart1: TChart;

    Series1: TFastLineSeries;

    Edit2: TEdit;

    Edit5: TEdit;

    Button3: TButton;

    Label2: TLabel;

    Button2: TButton;

    Label4: TLabel;

    Button4: TButton;

    Button5: TButton;

    Panel1: TPanel;

    Panel2: TPanel;

    Edit6: TEdit;

    Label5: TLabel;

    Panel3: TPanel;

    Edit9: TEdit;

    Label8: TLabel;

    Button6: TButton;

    Button7: TButton;

    Button8: TButton;

    Button9: TButton;

    Label6: TLabel;

    Label7: TLabel;

    Label1: TLabel;

    procedure Button1Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button4Click(Sender: TObject);

    procedure Button5Click(Sender: TObject);

    procedure Button6Click(Sender: TObject);

    procedure Button7Click(Sender: TObject);

    procedure Button8Click(Sender: TObject);

    procedure Button9Click(Sender: TObject);

  //  procedure Label3Click(Sender: TObject);

  

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

function F(x:real): real;

begin

result:=2*cos((x+pi/6))+x*x-4*x+3;

end;

 

function F1(x:real): real;

begin

result:=2*(x-1/6*(6*x+pi)*sin(x)+cos(x)-2);

end;

procedure TForm1.Button1Click(Sender: TObject);

Var a,y,x0,y1,b,x1,xn,xn1: real;

    x,e, Fx, Fx1: real;

begin

e:=strtofloat(edit3.Text);

a:=StrToFloat(Edit2.Text);

b:=StrToFloat(Edit5.Text);

x0:=a;

x:=x0-f(x0)/f1(x0);

repeat

begin

  x1:=x;

  y:=f(x);

  y1:=f1(x);

  x:=x-y/y1;

end;

until   (x-x1)>e;

Repeat

x:=x-(F(x)/F1(x));

Until abs(f(x))<e;

edit4.Text:=FloatToStr(x);

end;

procedure TForm1.Button3Click(Sender: TObject);

var

a,b,h: real;

i,n: integer;

begin

a:=StrToFloat(Form1.Edit2.Text);

b:=StrToFloat(Form1.Edit5.Text);

n:=100;

h:=(b-a)/n;

Form1.Series1.AddXY(a,f(a));

for i:=1 to n do

Form1.Series1.AddXY(a+h*i,f(a+h*i));

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

Form1.Series1.Clear;

end;

procedure TForm1.Button4Click(Sender: TObject);

var x,c,a,b,e:real;

begin

  e:=strtofloat(Edit6.Text);

  a:=strtofloat(edit2.Text);

  b:=strtofloat(edit5.Text);

repeat

c:=(a+b)/2;

if f(a)*f(c)<0 then b:=c else a:=c;

until b-a<e;

x:=(a+b)/2;

  begin

   edit4.Text:=FloatToStr(x);

  end;

end;

 

procedure TForm1.Button5Click(Sender: TObject);

Var a,b,c,g,e,x,x0,x1,y:real;

     Fx: real;

begin

e:=strtofloat(edit9.text);

a:=strtofloat(edit2.Text);

b:=strtofloat(edit5.Text);

c:=a;

repeat

g:=c;

c:=(a*f(b)-b*f(a))/(f(b)-f(a));

if f(a)*f(c)<0 then b:=c else a:=c;

until abs(c-g)<e;

Form1.Edit4.Text:=(floattostr(c));

end;

procedure TForm1.Button6Click(Sender: TObject);

begin

panel1.Visible:=true;

panel2.Visible:=false;

panel3.Visible:=false;

end;

procedure TForm1.Button7Click(Sender: TObject);

begin

panel2.Visible:=true;

panel1.Visible:=false;

panel3.Visible:=false;

end;

procedure TForm1.Button8Click(Sender: TObject);

begin

panel3.Visible:=true;

panel1.Visible:=false;

panel2.Visible:=false;

end;

procedure TForm1.Button9Click(Sender: TObject);

begin

form2.showmodal;

end;

end.

 

 

Метод касательных

Точность

0,001

Интервал

(-1,2)

Ответ

1,02390




 

 

 

 

 

 

 

 

 

Метод половинного деления

Точность

0,001

Интервал

(-1,2)

Ответ

1,02404




 

 

 

Метод хорд

Точность

0,001

Интервал

(-1,2)

Ответ

1,02383




 

 

 

 

 

 

 

Заключение.

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

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

Проведя исследования по теме курсовой работы "Численные методы. Решение нелинейных уравнений", мы добились поставленных  во введении целей. К каждому определению и теореме были приведены несколько примеров. Все теоремы доказаны.

Использование различных источников дало возможность полностью раскрыть тему.

 

 

 

 

 

 

 

 

 

 

 

Список литературы.

  1. Бахвалов Н. С. Численные методы  М.: БИНОМ. Лаб. знаний, 2007. 632с.

  1. Бахвалов Н. С. Численные методы в задачах и упражнениях / Н. С. Бахвалов, А. В. Лапин, Е. В. Чижонков. М.: Высш. шк., 2005. 192 с.

  1. Вержбицкий В. М. Численные методы. Линейная алгебра и нелинейные уравнения. М.: Высш.шк., 2006. 268 с.

  1. Вержбицкий В. М. Численные методы. Математический анализ и обыкновенные дифференциальные уравнения. М.: Высш.шк., 2008. 383с.

  1. Волков Е. А. Численные методы. СПб.: Лань, 2010. 248 с.

  1. Шуп Т. Е. Прикладные численные методы в физике и технике. М.: Высш. шк., 2007. 255 с.

 

 

 


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