Sointumenetelmä

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 15. lokakuuta 2019 tarkistetusta versiosta . tarkastukset vaativat 12 muokkausta .

Sointumenetelmä  on iteratiivinen numeerinen menetelmä yhtälön likimääräisen juuren löytämiseksi .

Sekanttimenetelmän geometrinen kuvaus

Etsimme funktion nollaa . Valitaan kaksi aloituspistettä ja vedetään viiva niiden läpi. Se leikkaa x- akselin pisteessä . Etsitään nyt funktion arvo abskissalla . Väliaikaisesti tarkastelemme segmentin juuria . Olkoon pisteellä abskissa ja makaa kaaviossa. Nyt pisteiden sijaan otamme pisteen ja pisteen . Nyt näillä kahdella pisteellä teemme saman operaation ja niin edelleen, eli saamme kaksi pistettä ja toistamme operaation niillä. Kaksi viimeistä pistettä yhdistävä jana leikkaa abskissa-akselin pisteessä, jonka abskissa-arvoa voidaan likimäärin pitää juurena. Nämä toimet on toistettava, kunnes saamme juuriarvon halutulla approksimaatiolla.

Sekanttimenetelmän algebrallinen kuvaus

Olkoon  sointeen päiden abskissat,  sekanttimenetelmällä ratkaistavan funktion yhtälö. Etsi kertoimet ja yhtälöjärjestelmästä

Vähennä toinen ensimmäisestä yhtälöstä:

sitten löydämme kertoimet ja :

sitten

Yhtälö saa muodon

Joten nyt voimme löytää ensimmäisen approksimaation sekanttimenetelmällä saadulle juurelle:

Otetaan nyt koordinaatit ja toistetaan kaikki tehdyt toiminnot etsimällä uusi approksimaatio juurille. Siten sekanttimenetelmän iteratiivisella kaavalla on muoto:

Toimenpide tulee toistaa, kunnes se on pienempi tai yhtä suuri kuin määritetty virhearvo.

Sointumenetelmä iteratiivisella kaavalla

Joskus sekanttimenetelmää kutsutaan menetelmäksi iteratiivisella kaavalla

Tätä menetelmää voidaan pitää yksinkertaisen iterointimenetelmän muunnelmana, ja sen konvergenssinopeus on hitaampi. Edelleen varmuuden vuoksi tätä menetelmää kutsutaan sointumenetelmäksi ja edellisessä jaksossa kuvattua menetelmää sekanttimenetelmäksi.

Esimerkki sekanttimenetelmän käytöstä

Ratkaisemme yhtälön sekanttimenetelmällä. Asetetaan tarkkuus ε=0,001 ja otetaan alkuarvioiksi sen segmentin päät , josta juuri erotetaan: ja , numeroarvot ja valitaan mielivaltaisesti. Laskelmia suoritetaan, kunnes epäyhtälö täyttyy .

Esimerkissämme arvo on korvattu ja arvo on korvattu . Arvo on tällä kaavalla saatu numeerinen arvo . Jatkossa korvaamme kaavan arvossa ja arvossa .

Tätä kaavaa käyttämällä saamme johdonmukaisesti (oikeat merkitsevät luvut on alleviivattu): (kuva sointujen menetelmästä, mutta ei sekantteja, erottele osat)

; ; ; ; ; ; ; ; ; ;

Tarkistetaan, että menetelmä toimii, vaikka ja olisivat valittu samalla puolella juuria (eli jos juurta ei ole erotettu alkuproksimaatioiden välisellä segmentillä). Otetaan sama yhtälö ja . Sitten: (kuva ei ole enää sekanttimenetelmästä, vaan dikotomiamenetelmästä )

; ; ; ; ; ; ; ;

Saimme saman juuriarvon samassa määrässä iteraatioita.

Sekanttimenetelmän konvergenssi

Sekanttimenetelmän iteraatiot konvergoivat juureen, jos alkuarvot ovat riittävän lähellä juuria. Sekanttimenetelmä on nopea. Konvergenssin kertaluku α on yhtä suuri kuin kultainen suhde :

Siten konvergenssijärjestys on suurempi kuin lineaarinen, mutta ei neliöllinen, kuten siihen liittyvässä Newtonin menetelmässä .

Tämä tulos on kelvollinen, jos se on kahdesti differentioituva ja juuri ei ole monikerta - .

Kuten useimmissa nopeissa menetelmissä, sekanttimenetelmälle on vaikea muotoilla konvergenssiehtoja. Jos aloituspisteet ovat riittävän lähellä juuria, menetelmä konvergoi, mutta "riittävän lähellä" ei ole yleistä määritelmää. Menetelmän konvergenssi määräytyy sen mukaan, kuinka "aaltoileva" funktio on . Jos esimerkiksi välissä on piste, jossa , prosessi ei ehkä lähentyisi.

Sointujen menetelmän kriteeri ja lähentymisnopeus

Jos  on kahdesti jatkuvasti differentioituva funktio ja etumerkki säilyy tarkasteltavalla välillä, niin saadut approksimaatiot konvergoivat monotonisesti juureen. Jos yhtälön juuri on välillä , derivaatat ja tällä välillä ovat jatkuvia ja säilyttävät vakiomerkkejä ja , niin voidaan osoittaa [1] , että likimääräisen ratkaisun virhe pyrkii nollaan pisteessä , eli menetelmässä suppenee ja konvergoi geometrisen progression nopeudella (tässä tapauksessa he sanovat, että sillä on lineaarinen lähentymisnopeus ).

Historiallinen tausta

Ensimmäinen, joka pystyi löytämään likimääräisiä ratkaisuja kuutioyhtälöille , oli Diophantus , mikä loi pohjan sointumenetelmälle. Diofantoksen säilyneet teokset kertovat tästä. Kuitenkin ensimmäinen, joka ymmärsi hänen menetelmänsä, oli Fermat 1600-luvulla, ja ensimmäinen, joka selitti sointumenetelmän, oli Newton (1670-luku). [2]

Toteutus

C++

#include <iostream> #include <math.h> double f ( double x ) { return sqrt ( fabs ( cos ( x ))) - x ; // Korvaa funktiolla, jonka juuria etsimme } // a, b - soinnun rajat, epsilon - vaadittu virhe double findRoot ( double a , double b , double epsilon ) { while ( 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)- ja i-jäsenet paluu b ; }

Python

matematiikasta tuonti sin kirjoittamisesta tuonti Soitava tuonti yksikkötesti _ _ def secant ( f : Kutsuttava [[ float ], float ], x0 : float , eps : float = 1e-7 , kmax : int = 1e3 ) -> float : """ ratkaisee f(x) = 0:n sekanttimenetelmällä tarkkuus eps :param f: f :param x0: aloituspiste :param eps: tarkkuus haluttu :palautus: f(x) = 0 """ x , x_prev , i = x0 , x0 + 2 * eps , 0 kun taas abs ( x - x_edellinen ) >= eps ja i < kmax : x , x_edellinen , i = x - f ( x ) / ( f ( x ) - f ( x_edellinen )) * ( x - x_edellinen ), x , i + yksi palauta x luokka TestSecant ( yksikkötesti . TestCase ): def testi_0 ( itse ): def f ( x : float ) -> float : return x ** 2 - 20 * sin ( x ) x0 , x_tähti = 2 , 2,7529466338187049383 itse . assertAlmostEqual ( sekantti ( f , x0 ), x_tähti ) if __name__ == '__main__' : yksikkötesti . tärkein ()

Muutokset

Väärä sijaintimenetelmä eroaa sekanttimenetelmästä vain siinä, että joka kerta ei oteta 2 viimeistä pistettä, vaan ne pisteet, jotka ovat juuren ympärillä.

Katso myös

Kirjallisuus

  1. Demidovich B. P. ja Maron I. A. Laskennallisen matematiikan perusteet. - Tiede, 1970. - S. 664.
  2. Bakhvalov, Zhidkov, Kobelkov. Numeeriset menetelmät. - Tiede. — ISBN 5-94774-060-5 .

Muistiinpanot

  1. Algebra (pääsemätön linkki) . Haettu 24. marraskuuta 2009. Arkistoitu alkuperäisestä 3. joulukuuta 2007. 
  2. Matematiikka ja sen historia. John Stillwell

Linkit