3 c, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numeryczne [2009], Kosma Z - Metody i algorytmy numeryczne [2009]


PROGRAM 3.2.

Rozwiązywanie równania nieliniowego:

f(x) = x - sin(x) - 0.25 = 0.

Klasyczna i zmodyfikowana metoda Newtona.

Przybliżenie początkowe - x0 = 9.0000000E-0001

Dokładność obliczeń - eps = 1.0E-0009

Klasyczna metoda Newtona.

Pierwiastek równania - ksi = 1.1712297E+0000

Residuum równania: f(ksi) = 1.05E-0010

Liczba iteracji: 5

Zmodyfikowana metoda Newtona.

Pierwiastek rownania - ksi = 1.1712297E+0000

Residuum rownania: f(ksi) = -3.02E-0010

Liczba iteracji: 41

3.3. Dwupunktowe metody iteracyjne

Najprostszą iteracyjną metodą dwupunktową wyznaczania pierwiastków równania (3.1) jest metoda bisekcji (połowienia). Przy założeniu, że wewnątrz przedziału [a, b] znajduje się dokładnie jeden pierwiastek równania (3.1) oraz że na końcach tego przedziału wartości funkcji 0x01 graphic
mają przeciwne znaki metoda bisekcji dla generuje ciąg punktów zdefiniowany następującym algorytmem:

0x01 graphic
(3.25)

Interpretacja geometryczna procesu iteracyjnego (3.25) jest bardzo prosta: w każdym kroku dzielimy przedział na połowę i z otrzymanych dwóch podprzedziałów wybieramy ten, w którym na pewno znajduje się pierwiastek równania (3.1). W wyniku takiego postępowania po pewnej liczbie kroków albo otrzymujemy pierwiastek dokładny albo otrzymujemy pierwiastek przybliżony obarczony błędem będącym długością podprzedziału

(3.26)

Zatem metoda bisekcji jest zbieżna liniowo, ze stałą asymptotyczną błędu

{Program 3.3}

unit Obliczenia;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls,

Forms, Dialogs, StdCtrls, Buttons;

. . . . . . . . . . . . . . . . .

var

Form3: TForm3;

a,b,bl,eps,fa,fb,fx,x: Double;

iter: Integer;

plik: Text;

implementation

uses Ustawienia, Informacje, Grafika, Podglad;

{$R *.DFM}

function f(x: Real): Real;

begin

f:=x-Sin(x)-0.25;

end;

. . . . . . . . . . . . . . . . . . . . . .

procedure TForm3.BitBtn1Click(Sender: TObject);

label omin;

begin

Form2.Show;

AssignFile(plik,Edit4.Text);

Rewrite(plik); Writeln(plik,'PROGRAM 3.3.');

Writeln(plik,'Rozwiązywanie równania nieliniowego:');

Writeln(plik,' f(x) = x - sin(x) - 0.25 = 0.');

Writeln(plik,'Metoda bisekcji.'); Writeln(plik,'');

Writeln(plik,'Przedział izolacji pierwiastka:');

a:=StrToFloat(Edit1.Text);

b:=StrToFloat(Edit2.Text);

Writeln(plik,'Lewy koniec przedziału - a = ',a:6);

Writeln(plik,'Prawy koniec przedziału - b = ',b:6);

fa:=f(a); Writeln(plik,' f(a) = ',fa:18);

fb:=f(b); Writeln(plik,' f(b) = ',fb:18);

if fa*fb>0 then begin

Writeln(plik,'Wartosci funkcji na końcach przedziału [a,b]');

Writeln(plik,'nie są różnych znaków.');

Writeln(plik,'');

goto omin;

end;

eps:=StrToFloat(Edit3.Text);

Writeln(plik,'Dokładność obliczeń - eps = ',eps:9);

Writeln(plik,''); iter:=0;

repeat

x:=(a+b)/2;

fx:=f(x);

if fx*fa<0 then begin

b:=x; fb:=fx;

end else begin

a:=x; fa:=fx;

end;

iter:=iter+1;

bl:=Abs(b-a);

until (bl<eps) or (Abs(fx)<eps);

Writeln(plik,'Pierwiastek równania - ksi = ',x:18);

Writeln(plik,'Residuum równania: f(ksi) = ',fx:11);

Writeln(plik,'Liczba iteracji: ',iter);

omin:

CloseFile(plik);

Form2.Wyniki.Lines.LoadFromFile(Edit4.Text);

end;

. . . . . . . . . . . . . . . . . . . . . . .

procedure TForm3.BitBtn3Click(Sender: TObject);

begin

Close;

end;

end.

Zadaniem programu 3.3 jest rozwiązywanie równania (3.18) metodą bisekcji dla zadanego przedziału izolacji pierwiastka [a, b] i zadanej dokładności obliczeń ε . Otrzymane wyniki obliczeń dla a = 0.1, b = 1.5 i 0x01 graphic
są następujące:

PROGRAM 3.3.

Rozwiązywanie równania nieliniowego:

f(x) = x - sin(x) - 0.25 = 0.

Metoda bisekcji.

Przedział izolacji pierwiastka:

początek przedziału - a = 1.0E-0001

koniec przedziału - b = 1.5E+0000

f(a) = -2.498334166E-0001

f(b) = 2.525050134E-0001

Dokładność obliczeń - eps = 1.0E-0009

Pierwiastek równania - ksi = 1.171229653E+0000

Residuum równania: f(ksi) = 5.69E-0010

Liczba iteracji: 29

*

0x01 graphic

Rys. 3.3

Następną, bardzo popularną dwupunktową metodą iteracyjną jest metoda siecznych, w której dla obliczenia przybliżenia pierwiastka ξ funkcja 0x01 graphic
jest aproksymowana prostą przechodzącą przez dwa punkty o odciętych: i rzędnych: (rys. 3.3).

Z podobieństwa dwóch trójkątów uwidocznionych na rysunku 3.3 wynika, że

skąd wyznaczamy

. (3.27)

Otrzymaną zależność rekurencyjną można również przedstawić w postaci

, (3.28)

przypominającej zależność rekurencyjną (3.19) dla metody stycznych - z tą różnicą, że pochodna została zastąpiona ilorazem różnicowym.

Metoda siecznych może być stosowana zarówno, gdy

jak i w przypadku przeciwnym, gdy

Przy stosowaniu tej metody powinno się jednak jako przybliżenia początkowe wybierać takie dwa punkty, w których funkcja 0x01 graphic
ma różne znaki; w przeciwnym wypadku można bowiem wykryć nieistniejący pierwiastek (rys. 3.4).

0x01 graphic

Rys. 3.4

W przypadku, gdy w rozpatrywanym przedziale [a, b] równanie (3.1) ma dok-ładnie jeden pierwiastek oraz gdy pochodne 0x01 graphic
i 0x01 graphic
funkcji 0x01 graphic
mają sta-ły znak w tym przedziale, jeden z punktów w kolejnych przybliżeniach można przy-jąć jako nieruchomy. Otrzymamy w ten sposób szczególną jednopunktową wersję metody siecznych, zwaną metodą regula falsi (z łacińskiego: regula - linia, falsus -fałszywy, co oznacza metodę fałszywego założenia liniowości funkcji). Punktem stałym w metodzie regula falsi jest ten punkt, w którym znak drugiej pochodnej 0x01 graphic
jest taki sam jak znak funkcji Zatem dla funkcji 0x01 graphic
przedstawionej na rysunku 3.5a punktem stałym będzie punkt 0x01 graphic

(3.29)

Rys. 3.5

a dla funkcji przedstawionej na rysunku 3.5b punkt

(3.30)

Błąd przybliżenia pierwiastka ξ obliczonego metodą regula falsi można oszacować w następujący sposób [2, 9]:

(3.31)

gdzie wielkości i 0x01 graphic
oznaczają, odpowiednio, najmniejszą i największą wartość modułu pochodnej 0x01 graphic
na odcinku [a, b]. Jeśli odcinek [a, b] jest dostatecznie mały wtedy zachodzi nierówność

0x01 graphic

i ze wzoru (3.31) otrzymujemy oszacowanie

Przerwanie obliczeń w chwili, gdy gwarantuje więc również obliczenie pierwiastków z taką samą dokładnością.

{Program 3.4}

unit Obliczenia;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls,

Forms, Dialogs, StdCtrls, Buttons;

. . . . . . . . . . . . . . . . .

var

Form3: TForm3;

bl,blp,eps,fx,fx0,fx1,x,x0,x1: Double;

iter: Integer;

plik: Text;

implementation

uses Ustawienia, Informacje, Grafika, Podglad;

{$R *.DFM}

function f(x: Real): Real;

begin

f:=x-Sin(x)-0.25;

end;

. . . . . . . . . . . . . . . . . . . . . .

procedure TForm3.BitBtn1Click(Sender: TObject);

label omin;

begin

Form2.Show;

AssignFile(plik,Edit4.Text);

Rewrite(plik); Writeln(plik,'PROGRAM 3.4.');

Writeln(plik,'Rozwiązywanie równania nieliniowego:');

Writeln(plik,' f(x) = x - sin(x) - 0.25 = 0.');

Writeln(plik,'Metoda siecznych.');

Writeln(plik,'');

x0:=StrToFloat(Edit1.Text);

x1:=StrToFloat(Edit2.Text);

Writeln(plik,'Przybliżenia początkowe:');

Writeln(plik,' x0 = ',x0:6);

Writeln(plik,' x1 = ',x1:6);

fx0:=f(x0);

Writeln(plik,' f(x0) = ',fx0:18);

fx1:=f(x1);

Writeln(plik,' f(x1) = ',fx1:18);

eps:=StrToFloat(Edit3.Text);

Writeln(plik,'Dokładność obliczeń - eps = ',eps:9);

Writeln(plik,''); blp:=1e10; iter:=0;

repeat

x:=(fx1*x0-fx0*x1)/(fx1-fx0);

fx:=f(x); bl:=Abs(x-x1);

if bl>blp then begin

Writeln(plik,'Proces iteracyjny jest rozbieżny');

Writeln(plik,''); goto omin;

end else blp:=bl;

x0:=x1; fx0:=fx1;

142 3. Równania nieliniowe

3.3. Dwupunktowe metody iteracyjne 143



Wyszukiwarka

Podobne podstrony:
7 h, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
Spis tresci, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy
4 a, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
1 c, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
4 m, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
Okladka, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy nume
1 h, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
Przedmowa, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy nu
Contents, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy num
4 i, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
6 c, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
5 f, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
2 c, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
2 f, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
1 d, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
7 c 2, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numery
5 h, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
7 b, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz
1 e, Informatyka, Informatyka, Informatyka. Metody numeryczne, Kosma Z - Metody i algorytmy numerycz

więcej podobnych podstron