Анализ и сравнение численных методов решения нелинейных уравнений
Курсовая работа, 27 Октября 2014, автор: пользователь скрыл имя
Краткое описание
Очень часто в различных областях экономики приходится встречаться с математическими задачами, для которых не удается найти решение классическими методами или решения выражены громоздкими формулами, которые не приемлемы для практического использования. Поэтому большое значение приобрели численные методы. В большинстве случаев численные методы являются приближенными, так как с их помощью обычно решаются задачи, аппроксимирующие исходные. В ряде случаев численный метод строится на базе бесконечного процесса, который в пределе сводится к искомому решению.
Содержание
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.
Вычисления очередных приближений к
точному корню уравнения продолжается
до тех пор, пока не достигнем заданной
точности, т.е. должно выполняться условие: |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
Итогом работы можно считать созданную функциональную модель нахождения корней уравнения методами Ньютона, хорд и половинного деления. Данная модель применима к детерминированным задачам, т.е. погрешностью экспериментального вычисления которых можно пренебречь. Созданная функциональная модель и ее программная реализация могут служить органической частью решения более сложных задач.
Проведя исследования по теме курсовой работы "Численные методы. Решение нелинейных уравнений", мы добились поставленных во введении целей. К каждому определению и теореме были приведены несколько примеров. Все теоремы доказаны.
Использование различных источников дало возможность полностью раскрыть тему.
Список литературы.
Бахвалов Н. С. Численные методы М.: БИНОМ. Лаб. знаний, 2007. 632с.
Бахвалов Н. С. Численные методы в задачах и упражнениях / Н. С. Бахвалов, А. В. Лапин, Е. В. Чижонков. М.: Высш. шк., 2005. 192 с.
Вержбицкий В. М. Численные методы. Линейная алгебра и нелинейные уравнения. М.: Высш.шк., 2006. 268 с.
Вержбицкий В. М. Численные методы. Математический анализ и обыкновенные дифференциальные уравнения. М.: Высш.шк., 2008. 383с.
Волков Е. А. Численные методы. СПб.: Лань, 2010. 248 с.
Шуп Т. Е. Прикладные численные методы в физике и технике. М.: Высш. шк., 2007. 255 с.