Metoda acordurilor

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită pe 15 octombrie 2019; verificările necesită 12 modificări .

Metoda acordurilor este o metodă numerică  iterativă pentru găsirea rădăcinii aproximative a unei ecuații.

Descrierea geometrică a metodei secantei

Vom căuta zeroul funcției . Să alegem două puncte de plecare și să tragem o linie prin ele. Acesta va intersecta axa x în punctul . Acum să găsim valoarea funcției cu abscisa . Vom lua în considerare temporar rădăcina de pe segment . Fie punctul să aibă o abscisă și să se așeze pe grafic. Acum în loc de puncte și vom lua punct și punct . Acum cu aceste două puncte vom face aceeași operație și așa mai departe, adică vom obține două puncte și vom repeta operația cu ele. Segmentul care leagă ultimele două puncte intersectează axa absciselor într-un punct a cărui valoare a abscisei poate fi considerată aproximativ rădăcină. Aceste acțiuni trebuie repetate până când obținem valoarea rădăcină cu aproximarea dorită.

Descrierea algebrică a metodei secantei

Fie  abscisele capetelor coardei,  fie ecuația funcției rezolvată prin metoda secantei. Aflați coeficienții și din sistemul de ecuații

Scădeți a doua din prima ecuație:

atunci găsim coeficienții și :

apoi

Ecuația ia forma

Astfel, acum putem găsi prima aproximare a rădăcinii obținută prin metoda secantei:

Acum să luăm coordonatele și să repetăm ​​toate operațiunile făcute, găsind o nouă aproximare a rădăcinii. Astfel, formula iterativă a metodei secantei are forma:

Operația trebuie repetată până când este mai mică sau egală cu valoarea de eroare specificată.

Metoda acordurilor cu formulă iterativă

Uneori metoda secantei se numește metoda cu formula iterativă

Această metodă poate fi considerată o variație a metodei iterației simple și are o rată de convergență mai lentă. Mai mult, pentru certitudine, această metodă va fi numită metoda acordurilor, iar metoda descrisă în secțiunea anterioară, metoda secantelor.

Un exemplu de utilizare a metodei secantei

Rezolvăm ecuația prin metoda secantei. Să setăm precizia ε=0.001 și să luăm ca aproximări inițiale capetele segmentului pe care este separată rădăcina: și , valorile numerice și sunt alese arbitrar. Calculele sunt efectuate până când inegalitatea este îndeplinită .

În exemplul nostru, valoarea este înlocuită , iar valoarea este înlocuită . Valoarea va fi valoarea numerică obținută prin această formulă. În viitor, înlocuim în formulă valoarea , și valoarea .

Folosind această formulă, obținem în mod constant (sunt subliniate cifrele semnificative corecte): (imaginea din metoda acordurilor, dar nu secantelor, vă rugăm să separați secțiunile)

; ; ; ; ; ; ; ; ; ;

Să verificăm că metoda funcționează chiar dacă și sunt alese pe aceeași parte a rădăcinii (adică dacă rădăcina nu este separată pe segmentul dintre aproximările inițiale). Luați pentru aceeași ecuație și . Apoi: (imaginea nu mai este din metoda secantei, ci din metoda dihotomiei )

; ; ; ; ; ; ; ;

Avem aceeași valoare a rădăcinii în același număr de iterații.

Convergența metodei secantei

Iterațiile metodei secante converg către rădăcină dacă valorile inițiale și sunt suficient de aproape de rădăcină. Metoda secantei este rapidă. Ordinea de convergență α este egală cu raportul de aur :

Astfel, ordinea de convergență este mai mare decât liniară, dar nu pătratică, ca în cazul metodei aferente lui Newton .

Acest rezultat este valid dacă este de două ori diferențiabil și rădăcina nu este un multiplu - .

Ca și în cazul majorității metodelor rapide, este dificil să se formuleze condiții de convergență pentru metoda secantei. Dacă punctele de pornire sunt suficient de aproape de rădăcină, atunci metoda converge, dar nu există o definiție generală a „suficient de aproape”. Convergența metodei este determinată de cât de „ondulată” este funcția în . De exemplu, dacă există un punct în intervalul în care , atunci procesul poate să nu convergă.

Criteriul și rata de convergență a metodei acordurilor

Dacă  este o funcție de două ori diferențiabilă continuu, iar semnul este păstrat pe intervalul luat în considerare, atunci aproximările obținute vor converge monoton către rădăcină. Dacă rădăcina ecuației este pe intervalul , derivatele și pe acest interval sunt continue și rețin semnele constante și , atunci se poate demonstra [1] că eroarea soluției aproximative tinde spre zero la , adică metoda converge și converge la viteza unei progresii geometrice (în acest caz, spun ei, că are o rată de convergență liniară ).

Context istoric

Primul care a reușit să găsească soluții aproximative pentru ecuațiile cubice a fost Diophantus , punând astfel bazele metodei acordurilor. Lucrările supraviețuitoare ale lui Diophantus raportează acest lucru. Cu toate acestea, primul care a înțeles metodele sale a fost Fermat în secolul al XVII-lea, iar primul care a explicat metoda acordurilor a fost Newton (1670). [2]

Implementare

C++

#include <iostream> #include <math.h> dublu f ( dublu x ) { returnează sqrt ( fabs ( cos ( x ))) - x ; // Înlocuiește cu funcția ale cărei rădăcini le căutăm } // a, b - limitele acordurilor, epsilon - eroare necesară double findRoot ( double a , double b , double epsilon ) { în timp ce ( fabs ( b - a ) > epsilon ) { a = b - ( b - a ) * f ( b ) / ( f ( b ) - f ( a )); b = a - ( a - b ) * f ( a ) / ( f ( a ) - f ( b )); } // a, b — (i - 1)-lea și i-lea membri returnează b ; }

Python

din math import sin din tastarea import Callable import unittest def secant ( f : Callable [[ float ], float ], x0 : float , eps : float = 1e-7 , kmax : int = 1e3 ) -> float : """ rezolvă f(x) = 0 prin metoda secantei cu precizie eps :param f: f :param x0: punct de plecare :param eps: precizie dorită :return: rădăcină f(x) = 0 """ x , x_prev , i = x0 , x0 + 2 * eps , 0 în timp ce abs ( x - x_prev ) >= eps și i < kmax : x , x_prev , i = x - f ( x ) / ( f ( x ) - f ( x_prev )) * ( x - x_prev ), x , i + unu întoarce x clasa TestSecant ( unittest . TestCase ): def test_0 ( self ): def f ( x : float ) -> float : return x ** 2 - 20 * sin ( x ) x0 , x_star = 2 , 2,7529466338187049383 sine . assertAlmostEqual ( secant ( f , x0 ), x_star ) if __name__ == '__main__' : unittest . principal ()

Modificări

Metoda poziției false diferă de metoda secantei doar prin aceea că de fiecare dată nu se iau ultimele 2 puncte, ci acele puncte care se află în jurul rădăcinii.

Vezi și

Literatură

  1. Demidovich B. P. și Maron I. A. Fundamentele matematicii computaționale. - Știință, 1970. - S. 664.
  2. Bakhvalov, Jidkov, Kobelkov. Metode numerice. - Știința. — ISBN 5-94774-060-5 .

Note

  1. Algebră (link inaccesibil) . Consultat la 24 noiembrie 2009. Arhivat din original pe 3 decembrie 2007. 
  2. Matematica și istoria ei. John Stillwell

Link -uri