Mažiausių kvadratų metodas „Excel“. Regresinė analizė. Kur naudojamas mažiausių kvadratų metodas? Mažiausių kvadratų metodas tiesei erdvėje

Mažiausių kvadratų metodas yra vienas iš labiausiai paplitusių ir labiausiai išvystytas dėl jo linijinių parametrų vertinimo metodų paprastumas ir efektyvumas. Tuo pačiu metu, naudojant jį, reikia laikytis tam tikro atsargumo, nes naudojant jį sukurti modeliai gali neatitikti daugelio savo parametrų kokybės reikalavimų ir dėl to „gerai“ neatspindi proceso raidos modelių. pakankamai.

Išsamiau panagrinėkime tiesinio ekonometrinio modelio parametrų įvertinimo taikant mažiausių kvadratų metodą procedūrą. Tokį modelį apskritai galima pavaizduoti (1.2) lygtimi:

y t = a 0 + a 1 x 1 t +...+ a n x nt + ε t.

Pradiniai duomenys vertinant parametrus a 0 , a 1 ,..., a n yra priklausomo kintamojo reikšmių vektorius y= (y 1 , y 2 , ... , y T)" ir nepriklausomų kintamųjų reikšmių matrica

kuriame pirmasis stulpelis, susidedantis iš vienetų, atitinka modelio koeficientą.

Mažiausių kvadratų metodas gavo savo pavadinimą remiantis pagrindiniu principu, kad jo pagrindu gauti parametrų įverčiai turi atitikti: modelio paklaidos kvadratų suma turi būti minimali.

Užduočių sprendimo mažiausių kvadratų metodu pavyzdžiai

2.1 pavyzdys. Prekybos įmonė turi 12 parduotuvių tinklą, informacija apie jų veiklą pateikta lentelėje. 2.1.

Įmonės vadovybė norėtų sužinoti, kaip metinė suma priklauso nuo parduotuvės prekybinio ploto.

2.1 lentelė

Parduotuvės numeris

Metinė apyvarta, milijonai rublių.

Prekybinis plotas, tūkst.m2

Mažiausių kvadratų sprendimas. Pažymime tosios parduotuvės metinę apyvartą, milijonus rublių; — parduotuvės prekybinis plotas, tūkst. m2.

2.1 pav. 2.1 pavyzdžio sklaida

Norėdami nustatyti funkcinio ryšio tarp kintamųjų formą ir sukonstruosime sklaidos diagramą (2.1 pav.).

Remiantis sklaidos diagrama, galime daryti išvadą, kad metinė apyvarta teigiamai priklauso nuo prekybos ploto (t. y. y didės didėjant ). Tinkamiausia funkcinio ryšio forma yra linijinis.

Informacija apie tolesnius skaičiavimus pateikta lentelėje. 2.2. Naudodami mažiausių kvadratų metodą, įvertiname tiesinio vieno koeficiento ekonometrinio modelio parametrus

2.2 lentelė

Taigi,

Todėl, prekybiniam plotui padidėjus 1 tūkst. m2, o kitiems rodikliams nesikeičiant, vidutinė metinė apyvarta padidėja 67,8871 mln. rublių.

2.2 pavyzdys.Įmonės vadovybė pastebėjo, kad metinė apyvarta priklauso ne tik nuo parduotuvės prekybos ploto (žr. 2.1 pavyzdį), bet ir nuo vidutinio lankytojų skaičiaus. Atitinkama informacija pateikta lentelėje. 2.3.

2.3 lentelė

Sprendimas. Pažymime vidutinį parduotuvės lankytojų skaičių per dieną, tūkst. žmonių.

Norėdami nustatyti funkcinio ryšio tarp kintamųjų formą ir sukonstruosime sklaidos diagramą (2.2 pav.).

Remiantis sklaida, galime daryti išvadą, kad metinė apyvarta teigiamai priklauso nuo vidutinio lankytojų skaičiaus per dieną (t.y. y didės didėjant ). Funkcinės priklausomybės forma yra tiesinė.

Ryžiai. 2.2. 2.2 pavyzdžio sklaidos diagrama

2.4 lentelė

Apskritai būtina nustatyti dviejų faktorių ekonometrinio modelio parametrus

y t = a 0 + a 1 x 1 t + a 2 x 2 t + ε t

Informacija, reikalinga tolesniems skaičiavimams, pateikta lentelėje. 2.4.

Įvertinkime tiesinio dviejų faktorių ekonometrinio modelio parametrus mažiausių kvadratų metodu.

Taigi,

Įvertinus koeficientą =61,6583, matyti, kad, esant kitoms sąlygoms, prekybiniam plotui padidėjus 1 tūkst. m 2, metinė apyvarta padidės vidutiniškai 61,6583 mln. rublių.

Pavyzdys.

Eksperimentiniai duomenys apie kintamųjų reikšmes X Ir adresu pateikiami lentelėje.

Dėl jų išlyginimo gaunama funkcija

Naudojant mažiausių kvadratų metodas, apytiksliai apskaičiuokite šiuos duomenis tiesine priklausomybe y=kirvis+b(raskite parametrus A Ir b). Sužinokite, kuri iš dviejų eilučių geriau (mažiausių kvadratų metodo prasme) suderina eksperimentinius duomenis. Padarykite piešinį.

Mažiausių kvadratų metodo (LSM) esmė.

Užduotis – rasti tiesinės priklausomybės koeficientus, kuriems esant veikia dviejų kintamųjų funkcija A Ir b užima mažiausią vertę. Tai yra, duota A Ir b eksperimentinių duomenų nuokrypių kvadratu suma nuo rastos tiesės bus mažiausia. Tai yra mažiausių kvadratų metodo esmė.

Taigi, sprendžiant pavyzdį, reikia rasti dviejų kintamųjų funkcijos ekstremumą.

Koeficientų radimo formulės.

Sudaroma ir išsprendžiama dviejų lygčių su dviem nežinomaisiais sistema. Funkcijos dalinių išvestinių kintamųjų atžvilgiu radimas A Ir b, šias išvestines prilyginsime nuliui.

Gautą lygčių sistemą išsprendžiame naudodami bet kurį metodą (pvz pakeitimo būdu arba ) ir gauti koeficientų radimo formules naudojant mažiausiųjų kvadratų metodą (LSM).

Duota A Ir b funkcija užima mažiausią vertę. Pateikiamas šio fakto įrodymas.

Tai visas mažiausių kvadratų metodas. Parametrų radimo formulė a yra sumos , , , ir parametras n- eksperimentinių duomenų kiekis. Rekomenduojame šių sumų vertes skaičiuoti atskirai. Koeficientas b rasta po skaičiavimo a.

Atėjo laikas prisiminti originalų pavyzdį.

Sprendimas.

Mūsų pavyzdyje n=5. Lentelę užpildome, kad būtų patogiau apskaičiuoti sumas, kurios įtrauktos į reikalingų koeficientų formules.

Ketvirtoje lentelės eilutėje esančios reikšmės gaunamos 2-os eilutės reikšmes padauginus iš 3-osios kiekvieno skaičiaus reikšmių i.

Penktoje lentelės eilutėje esančios reikšmės gaunamos padalijus kiekvieno skaičiaus 2-os eilutės reikšmes kvadratu i.

Paskutiniame lentelės stulpelyje pateiktos reikšmės yra reikšmių sumos visose eilutėse.

Koeficientams rasti naudojame mažiausių kvadratų metodo formules A Ir b. Į jas pakeičiame atitinkamas vertes iš paskutinio lentelės stulpelio:

Vadinasi, y = 0,165x+2,184- norima apytikslė tiesi linija.

Belieka išsiaiškinti, kuri iš eilučių y = 0,165x+2,184 arba geriau aproksimuoja pradinius duomenis, tai yra, įvertina taikydamas mažiausių kvadratų metodą.

Mažiausių kvadratų metodo klaidų įvertinimas.

Norėdami tai padaryti, turite apskaičiuoti pirminių duomenų kvadratinių nuokrypių nuo šių eilučių sumą Ir , mažesnė reikšmė atitinka liniją, kuri geriau apytiksliai atitinka pradinius duomenis mažiausiųjų kvadratų metodo prasme.

Nuo tada tiesiai y = 0,165x+2,184 geriau apytiksliai atitinka pradinius duomenis.

Mažiausių kvadratų (LS) metodo grafinė iliustracija.

Grafikuose viskas aiškiai matosi. Raudona linija yra rasta tiesi linija y = 0,165x+2,184, mėlyna linija yra , rožiniai taškai yra pirminiai duomenys.

Kam to reikia, kam visi šie aproksimacijos?

Aš asmeniškai naudoju jį duomenų išlyginimo, interpoliacijos ir ekstrapoliacijos problemoms spręsti (pradiniame pavyzdyje jų gali būti paprašyta rasti stebimos reikšmės reikšmę y adresu x=3 arba kada x=6 naudojant mažiausių kvadratų metodą). Tačiau daugiau apie tai pakalbėsime vėliau kitoje svetainės skiltyje.

Įrodymas.

Taip kad radus A Ir b funkcija įgauna mažiausią reikšmę, būtina, kad šioje vietoje funkcijos antros eilės diferencialo kvadratinės formos matrica buvo teigiamas. Parodykime.

Pasirinkę regresinės funkcijos tipą, t.y. nagrinėjamo Y priklausomybės nuo X (arba X nuo Y) modelio tipas, pavyzdžiui, tiesinis modelis y x =a+bx, būtina nustatyti konkrečias modelio koeficientų reikšmes.

Esant skirtingoms a ir b reikšmėms, galima sukurti begalinį skaičių y x = a + bx formos priklausomybių, t. y. yra begalinis skaičius tiesių koordinačių plokštumoje, bet mums reikia tokios priklausomybės, kuri būtų geriausia. atitinka pastebėtas vertes. Taigi, užduotis yra pasirinkti geriausius koeficientus.

Mes ieškome tiesinės funkcijos a+bx remdamiesi tik tam tikru turimų stebėjimų skaičiumi. Norėdami rasti funkciją, kuri geriausiai atitinka stebimas reikšmes, naudojame mažiausių kvadratų metodą.

Pažymime: Y i - pagal lygtį Y i =a+bx i apskaičiuotą reikšmę. y i - išmatuota vertė, ε i =y i -Y i - skirtumas tarp išmatuotų ir apskaičiuotų verčių, naudojant lygtį, ε i =y i -a-bx i .

Mažiausių kvadratų metodas reikalauja, kad ε i, skirtumas tarp išmatuotų y i ir reikšmių Y i, apskaičiuotos pagal lygtį, būtų minimalus. Todėl koeficientus a ir b randame taip, kad stebimų verčių kvadratinių nuokrypių suma nuo tiesiosios regresijos linijos verčių būtų mažiausia:

Nagrinėdami šią argumentų a ir ekstremumo funkciją naudojant išvestines, galime įrodyti, kad funkcija įgyja mažiausią reikšmę, jei koeficientai a ir b yra sistemos sprendiniai:

(2)

Jei abi normaliųjų lygčių puses padalinsime iš n, gausime:

Atsižvelgiant į tai (3)

Mes gauname , iš čia, pakeisdami a reikšmę į pirmąją lygtį, gauname:

Šiuo atveju b vadinamas regresijos koeficientu; a vadinamas laisvuoju regresijos lygties nariu ir apskaičiuojamas pagal formulę:

Gauta tiesė yra teorinės regresijos linijos įvertis. Mes turime:

Taigi, yra tiesinės regresijos lygtis.

Regresija gali būti tiesioginė (b>0) ir atvirkštinė (b 1 pavyzdys. X ir Y reikšmių matavimo rezultatai pateikti lentelėje:

x i -2 0 1 2 4
y i 0.5 1 1.5 2 3

Darant prielaidą, kad tarp X ir Y yra tiesinis ryšys y=a+bx, nustatykite koeficientus a ir b mažiausių kvadratų metodu.

Sprendimas. Čia n=5
x i =-2+0+1+2+4=5;
x i 2 =4+0+1+4+16=25
x i y i =-2 0,5+0 1+1 1,5+2 2+4 3=16,5
y i =0,5+1+1,5+2+3=8

o normali sistema (2) turi formą

Išspręsdami šią sistemą, gauname: b=0,425, a=1,175. Todėl y=1,175+0,425x.

2 pavyzdys. Yra 10 ekonominių rodiklių (X) ir (Y) stebėjimų imtis.

x i 180 172 173 169 175 170 179 170 167 174
y i 186 180 176 171 182 166 182 172 169 177

Turite rasti pavyzdinę Y regresijos lygtį ant X. Sukurkite Y imties regresijos liniją ant X.

Sprendimas. 1. Surūšiuokime duomenis pagal x i ir y i reikšmes. Gauname naują lentelę:

x i 167 169 170 170 172 173 174 175 179 180
y i 169 171 166 172 180 176 177 182 182 186

Norėdami supaprastinti skaičiavimus, sudarysime skaičiavimo lentelę, kurioje įvesime reikiamas skaitines reikšmes.

x i y i x i 2 x i y i
167 169 27889 28223
169 171 28561 28899
170 166 28900 28220
170 172 28900 29240
172 180 29584 30960
173 176 29929 30448
174 177 30276 30798
175 182 30625 31850
179 182 32041 32578
180 186 32400 33480
∑x i =1729 ∑y i =1761 ∑x i 2 299105 ∑x i y i =304696
x = 172,9 y = 176,1 x i 2 = 29910,5 xy=30469.6

Pagal (4) formulę apskaičiuojame regresijos koeficientą

ir pagal (5) formulę

Taigi imties regresijos lygtis yra y=-59,34+1,3804x.
Nubraižykime taškus (x i ; y i) koordinačių plokštumoje ir pažymėkime regresijos tiesę.


4 pav

4 paveiksle parodyta, kaip stebimos reikšmės yra regresijos linijos atžvilgiu. Norėdami skaičiais įvertinti y i nuokrypius nuo Y i, kur stebimi y i, o Y i yra regresijos būdu nustatytos reikšmės, sudarome lentelę:

x i y i Y i Y i - y i
167 169 168.055 -0.945
169 171 170.778 -0.222
170 166 172.140 6.140
170 172 172.140 0.140
172 180 174.863 -5.137
173 176 176.225 0.225
174 177 177.587 0.587
175 182 178.949 -3.051
179 182 184.395 2.395
180 186 185.757 -0.243

Yi reikšmės apskaičiuojamos pagal regresijos lygtį.

Pastebimas kai kurių pastebėtų verčių nukrypimas nuo regresijos linijos paaiškinamas nedideliu stebėjimų skaičiumi. Tiriant Y tiesinės priklausomybės nuo X laipsnį, atsižvelgiama į stebėjimų skaičių. Priklausomybės stiprumą lemia koreliacijos koeficiento reikšmė.

Esu matematikas ir programuotojas. Didžiausias šuolis per savo karjerą buvo tada, kai išmokau sakyti: "Aš nieko nesuprantu!" Dabar aš nesigėdiju pasakyti mokslo šviesuoliui, kad jis man skaito paskaitą, kad aš nesuprantu, ką jis, šviesulys, man sako. Ir tai labai sunku. Taip, pripažinti savo neišmanymą yra sunku ir gėdinga. Kas mėgsta prisipažinti, kad kažko neišmano? Dėl savo profesijos tenka lankyti labai daug prezentacijų ir paskaitų, kuriose, prisipažinsiu, didžiąja dauguma atvejų norisi miego, nes nieko nesuprantu. Bet aš nesuprantu, nes didžiulė dabartinės mokslo situacijos problema slypi matematikoje. Daroma prielaida, kad visi klausytojai yra susipažinę su absoliučiai visomis matematikos sritimis (tai yra absurdiška). Pripažinti, kad nežinai, kas yra darinys (apie tai, kas tai yra kalbėsime šiek tiek vėliau), yra gėdinga.

Bet aš išmokau sakyti, kad nežinau, kas yra daugyba. Taip, aš nežinau, kas yra subalgebra virš melo algebros. Taip, aš nežinau, kodėl gyvenime reikalingos kvadratinės lygtys. Beje, jei esate tikri, kad žinote, turime apie ką pasikalbėti! Matematika yra gudrybių serija. Matematikai bando suklaidinti ir įbauginti visuomenę; kur nėra painiavos, nėra reputacijos, nėra autoriteto. Taip, prestižiška kalbėti kuo abstrakčia kalba, o tai yra visiška nesąmonė.

Ar žinote, kas yra išvestinė priemonė? Greičiausiai jūs man papasakosite apie skirtumo santykio ribą. Pirmaisiais matematikos ir mechanikos metais Sankt Peterburgo valstybiniame universitete Viktoras Petrovičius Chavinas man pasakė Atkaklus išvestinė kaip funkcijos Taylor serijos pirmojo nario koeficientas taške (tai buvo atskira gimnastika Taylor serijai nustatyti be išvestinių). Ilgai juokiausi iš šio apibrėžimo, kol galiausiai supratau, apie ką kalbama. Išvestinė yra ne kas kita, kaip paprastas matas, nurodantis, kiek funkcija, kurią išskiriame, yra panaši į funkciją y=x, y=x^2, y=x^3.

Dabar turiu garbės skaityti paskaitas studentams, kurie išsigandęs matematikos. Jei bijai matematikos, einame tuo pačiu keliu. Kai tik bandote perskaityti kokį nors tekstą ir jums atrodo, kad jis pernelyg sudėtingas, žinokite, kad jis parašytas prastai. Aš tvirtinu, kad nėra nei vienos matematikos srities, kurios nebūtų galima aptarti „ant pirštų“, neprarandant tikslumo.

Užduotis artimiausiai ateičiai: savo mokiniams paskyriau suprasti, kas yra tiesinis kvadratinis reguliatorius. Nesidrovėkite, praleiskite tris savo gyvenimo minutes ir sekite nuorodą. Jei nieko nesupranti, tai mes einame tuo pačiu keliu. Aš (profesionalus matematikas-programuotojas) irgi nieko nesupratau. Ir aš jus patikinu, galite tai išsiaiškinti „ant pirštų“. Šiuo metu nežinau, kas tai yra, bet patikinu, kad galėsime tai išsiaiškinti.

Taigi, pirmoji paskaita, kurią skaitysiu savo studentams po to, kai jie pribėgs prie manęs su siaubu ir pasakys, kad tiesinis kvadratinis reguliatorius yra baisus dalykas, kurio niekada gyvenime neįvaldysi. mažiausių kvadratų metodai. Ar galite išspręsti tiesines lygtis? Jei skaitote šį tekstą, greičiausiai ne.

Taigi, atsižvelgiant į du taškus (x0, y0), (x1, y1), pavyzdžiui, (1,1) ir (3,2), užduotis yra rasti tiesės, einančios per šiuos du taškus, lygtį:

iliustracija

Šioje eilutėje turėtų būti tokia lygtis:

Čia alfa ir beta mums nežinomi, tačiau žinomi du šios linijos taškai:

Šią lygtį galime parašyti matricos forma:

Čia turėtume padaryti lyrinį nukrypimą: kas yra matrica? Matrica yra ne kas kita, kaip dvimatis masyvas. Tai yra duomenų saugojimo būdas, prie jo neturėtų būti pridėta jokių papildomų reikšmių. Nuo mūsų priklauso, kaip tiksliai interpretuoti tam tikrą matricą. Periodiškai jį interpretuosiu kaip tiesinį atvaizdavimą, periodiškai kaip kvadratinę formą, o kartais tiesiog kaip vektorių rinkinį. Visa tai bus paaiškinta kontekste.

Pakeiskime konkrečias matricas jų simboliniu vaizdu:

Tada (alfa, beta) galima lengvai rasti:

Tiksliau apie mūsų ankstesnius duomenis:

Tai veda į tokią linijos, einančios per taškus (1,1) ir (3,2), lygtį:

Gerai, čia viskas aišku. Raskime tiesės, einančios pro šalį, lygtį trys taškai: (x0,y0), (x1,y1) ir (x2,y2):

Oi-oi, bet mes turime tris lygtis dviem nežinomiesiems! Standartinis matematikas pasakys, kad sprendimo nėra. Ką pasakys programuotojas? Ir jis pirmiausia perrašys ankstesnę lygčių sistemą tokia forma:

Mūsų atveju vektoriai i, j, b yra trimačiai, todėl (bendruoju atveju) šios sistemos sprendimo nėra. Bet kuris vektorius (alfa\*i + beta\*j) yra plokštumoje, kurią apima vektoriai (i, j). Jei b nepriklauso šiai plokštumai, tada sprendinio nėra (lygybėje negalima pasiekti lygybės). Ką daryti? Ieškokime kompromiso. Pažymėkime pagal e (alfa, beta) kiek tiksliai nepasiekėme lygybės:

Ir mes pasistengsime sumažinti šią klaidą:

Kodėl kvadratas?

Mes ieškome ne tik normos minimumo, bet ir normos kvadrato minimumo. Kodėl? Pats minimalus taškas sutampa, o kvadratas suteikia sklandžią funkciją (argumentų kvadratinė funkcija (alfa, beta)), o tiesiog ilgis suteikia kūgio formos funkciją, nesiskiriančią minimaliame taške. Brr. Kvadratas yra patogesnis.

Akivaizdu, kad klaida yra sumažinta, kai vektorius e statmena plokštumai, kurią apima vektoriai i Ir j.

Iliustracija

Kitaip tariant: mes ieškome tokios tiesės, kad atstumų nuo visų taškų iki šios tiesės kvadratinių ilgių suma būtų minimali:

ATNAUJINIMAS: Turiu problemą, atstumas iki tiesės turi būti matuojamas vertikaliai, o ne statmena projekcija. Komentatorius teisus.

Iliustracija

Visiškai skirtingais žodžiais (atsargiai, prastai formalizuota, bet turėtų būti aišku): paimame visas įmanomas linijas tarp visų taškų porų ir ieškome vidutinės linijos tarp visų:

Iliustracija

Kitas paaiškinimas yra paprastas: tarp visų duomenų taškų (čia turime tris) ir tiesios linijos, kurios ieškome, pritvirtiname spyruoklę, o pusiausvyros būsenos tiesė yra būtent tai, ko ieškome.

Minimali kvadratinė forma

Taigi, atsižvelgiant į šį vektorių b o plokštuma, apimanti matricos stulpelių vektorius A(šiuo atveju (x0,x1,x2) ir (1,1,1)), mes ieškome vektoriaus e su minimaliu ilgio kvadratu. Akivaizdu, kad minimumas pasiekiamas tik vektoriui e, statmena plokštumai, kurią apima matricos stulpelių vektoriai A:

Kitaip tariant, mes ieškome vektoriaus x=(alfa, beta), kad:

Leiskite jums priminti, kad šis vektorius x=(alfa, beta) yra kvadratinės funkcijos minimumas ||e(alfa, beta)||^2:

Čia būtų naudinga prisiminti, kad matrica gali būti interpretuojama ir kaip kvadratinė forma, pavyzdžiui, tapatumo matrica ((1,0),(0,1)) gali būti interpretuojama kaip funkcija x^2 + y^ 2:

kvadratine forma

Visa ši gimnastika žinoma linijinės regresijos pavadinimu.

Laplaso lygtis su Dirichlet ribine sąlyga

Dabar pati paprasčiausia reali užduotis: yra tam tikras trikampis paviršius, jį reikia išlyginti. Pavyzdžiui, įkelkime mano veido modelį:

Galimas pradinis įsipareigojimas. Kad sumažinčiau išorines priklausomybes, paėmiau savo programinės įrangos atvaizdavimo kodą, jau esantį Habré. Norėdami išspręsti linijinę sistemą, naudoju OpenNL, tai puikus sprendimas, tačiau jį įdiegti labai sunku: reikia nukopijuoti du failus (.h+.c) į aplanką su savo projektu. Visas išlyginimas atliekamas naudojant šį kodą:

Už (int d = 0; d<3; d++) { nlNewContext(); nlSolverParameteri(NL_NB_VARIABLES, verts.size()); nlSolverParameteri(NL_LEAST_SQUARES, NL_TRUE); nlBegin(NL_SYSTEM); nlBegin(NL_MATRIX); for (int i=0; i<(int)verts.size(); i++) { nlBegin(NL_ROW); nlCoefficient(i, 1); nlRightHandSide(verts[i][d]); nlEnd(NL_ROW); } for (unsigned int i=0; i&face = veidai[i]; už (int j = 0; j<3; j++) { nlBegin(NL_ROW); nlCoefficient(face[ j ], 1); nlCoefficient(face[(j+1)%3], -1); nlEnd(NL_ROW); } } nlEnd(NL_MATRIX); nlEnd(NL_SYSTEM); nlSolve(); for (int i=0; i<(int)verts.size(); i++) { verts[i][d] = nlGetVariable(i); } }

X, Y ir Z koordinatės yra atskiriamos, aš jas lyginu atskirai. Tai yra, aš išsprendžiu tris tiesinių lygčių sistemas, kurių kiekvienoje yra kintamųjų skaičius, lygus mano modelio viršūnių skaičiui. Pirmosios n matricos A eilučių turi tik vieną 1 eilutėje, o pirmosios n vektoriaus b eilučių turi pradines modelio koordinates. Tai yra, aš pririšu spyruoklę tarp naujos viršūnės padėties ir senosios viršūnės padėties – naujos neturėtų per daug nutolti nuo senųjų.

Visos paskesnės matricos A eilutės (faces.size()*3 = visų tinklelio trikampių briaunų skaičius) turi vieną kartą 1 ir vieną -1, o vektorius b turi priešingus nulius komponentus. Tai reiškia, kad aš įdedu spyruoklę ant kiekvieno mūsų trikampio tinklelio krašto: visi kraštai bando gauti tą pačią viršūnę, kaip ir jų pradžios ir pabaigos taškai.

Dar kartą: visos viršūnės yra kintamieji ir negali nutolti nuo pradinės padėties, bet tuo pačiu stengiasi tapti panašios viena į kitą.

Štai rezultatas:

Viskas būtų gerai, modelis tikrai išlygintas, bet nutolęs nuo pirminio krašto. Šiek tiek pakeisime kodą:

Už (int i=0; i<(int)verts.size(); i++) { float scale = border[i] ? 1000: 1; nlBegin(NL_ROW); nlCoefficient(i, scale); nlRightHandSide(scale*verts[i][d]); nlEnd(NL_ROW); }

Mūsų matricoje A viršūnėms, esančioms kraštinėje, pridedu ne eilutę iš kategorijos v_i = verts[i][d], o 1000*v_i = 1000*verts[i][d]. Ką tai keičia? Ir tai pakeičia mūsų kvadratinę paklaidos formą. Dabar vienas nukrypimas nuo viršaus ties kraštu kainuos ne vienetą, kaip anksčiau, o 1000*1000 vnt. Tai yra, mes pakabinome stipresnę spyruoklę ant kraštutinių viršūnių, sprendimas labiau ištemps kitas. Štai rezultatas:

Padidinkime spyruoklės stiprumą tarp viršūnių dvigubai:
nlKoeficientas(veidelis[ j ], 2); nlKoeficientas(veidelis[(j+1)%3], -2);

Logiška, kad paviršius tapo lygesnis:

O dabar net šimtą kartų stipresnis:

Kas čia? Įsivaizduokite, kad vielos žiedą panardinome į muiluotą vandenį. Dėl to susidariusi muilo plėvelė stengsis turėti kuo mažiau kreivumo, liesdama kraštą – mūsų vielos žiedą. Kaip tik tai ir gavome pritvirtinę kraštą ir paprašę lygaus paviršiaus viduje. Sveikiname, ką tik išsprendėme Laplaso lygtį su Dirichlet ribinėmis sąlygomis. Skamba gerai? Tačiau iš tikrųjų jums tereikia išspręsti vieną tiesinių lygčių sistemą.

Puasono lygtis

Prisiminkime dar vieną šaunų pavadinimą.

Tarkime, turiu tokį vaizdą:

Visiems atrodo gerai, bet man kėdė nepatinka.

Perpjaunu nuotrauką per pusę:



O kėdę išrinksiu rankomis:

Tada aš ištrauksiu viską, kas kaukėje yra balta, į kairę nuotraukos pusę ir tuo pat metu visame paveikslėlyje sakysiu, kad skirtumas tarp dviejų gretimų pikselių turi būti lygus skirtumui tarp dviejų gretimų dešiniųjų pikselių. paveikslėlis:

Už (int i=0; i

Štai rezultatas:

Pavyzdys iš gyvenimo

Sąmoningai nepasiekiau nulaižytų rezultatų, nes... Aš tiesiog norėjau parodyti, kaip tiksliai galite taikyti mažiausiųjų kvadratų metodus, tai yra mokymo kodas. Dabar pateiksiu pavyzdį iš gyvenimo:

Turiu keletą nuotraukų su tokių audinių pavyzdžiais:

Mano užduotis – iš tokios kokybės nuotraukų padaryti vientisas tekstūras. Norėdami pradėti, aš (automatiškai) ieškau pasikartojančio modelio:

Jei iškirpsiu šį keturkampį tiesiai, dėl iškraipymo kraštai nesusitiks, čia yra keturis kartus kartojamo modelio pavyzdys:

Paslėptas tekstas

Čia yra fragmentas, kuriame siūlė aiškiai matoma:

Todėl aš nepjausiu tiesia linija, čia yra pjovimo linija:

Paslėptas tekstas

Ir štai keturis kartus pakartotas modelis:

Paslėptas tekstas

Ir fragmentas, kad būtų aiškiau:

Jau geriau, kirpimas ėjo ne tiesia linija, išvengiant visokių garbanų, bet siūlė vis tiek matosi dėl netolygaus apšvietimo originalioje nuotraukoje. Čia gelbsti Puasono lygties mažiausių kvadratų metodas. Štai galutinis rezultatas išlyginus apšvietimą:

Tekstūra pasirodė visiškai vientisa, ir visa tai automatiškai iš labai vidutiniškos kokybės nuotraukos. Nebijokite matematikos, ieškokite paprastų paaiškinimų, ir būsite laimingi inžinerijoje.

Užduotis – rasti tiesinės priklausomybės koeficientus, kuriems esant veikia dviejų kintamųjų funkcija A Ir b užima mažiausią vertę. Tai yra, duota A Ir b eksperimentinių duomenų nuokrypių kvadratu suma nuo rastos tiesės bus mažiausia. Tai yra mažiausių kvadratų metodo esmė.

Taigi, sprendžiant pavyzdį, reikia rasti dviejų kintamųjų funkcijos ekstremumą.

Koeficientų radimo formulės. Sudaroma ir išsprendžiama dviejų lygčių su dviem nežinomaisiais sistema. Funkcijos dalinių išvestinių radimas pagal kintamuosius A Ir b, šias išvestines prilyginsime nuliui.

Gautą lygčių sistemą išsprendžiame bet kuriuo metodu (pavyzdžiui, pakeitimo metodu arba Cramerio metodu) ir gauname koeficientų radimo formules taikant mažiausiųjų kvadratų metodą (LSM).

Duota A Ir b funkcija užima mažiausią vertę.

Tai visas mažiausių kvadratų metodas. Parametrų radimo formulė a yra sumos , , , ir parametras n- eksperimentinių duomenų kiekis. Rekomenduojame šių sumų vertes skaičiuoti atskirai. Koeficientas b rasta po skaičiavimo a.

Pagrindinė tokių polinomų taikymo sritis yra eksperimentinių duomenų apdorojimas (empirinių formulių kūrimas). Faktas yra tai, kad interpoliacijos polinomas, sudarytas iš funkcijų reikšmių, gautų eksperimento metu, bus stipriai paveiktas „eksperimentinio triukšmo“, be to, interpoliuojant interpoliacijos mazgai negali būti kartojami, t.y. Pakartotinių eksperimentų tomis pačiomis sąlygomis rezultatai negali būti naudojami. Kvadratinės šaknies polinomas išlygina triukšmą ir leidžia naudoti kelių eksperimentų rezultatus.

Skaitinis integravimas ir diferencijavimas. Pavyzdys.

Skaitmeninė integracija– apibrėžtojo integralo reikšmės apskaičiavimas (dažniausiai apytikslis). Skaitinė integracija suprantama kaip skaitinių metodų rinkinys tam tikro integralo reikšmei rasti.

Skaitmeninis diferencijavimas– diskretiškai nurodytos funkcijos išvestinės vertės apskaičiavimo metodų rinkinys.

Integracija

Problemos formulavimas. Matematinė uždavinio formuluotė: reikia rasti apibrėžtojo integralo reikšmę

kur a, b yra baigtiniai, f(x) yra tolydis [a, b].

Sprendžiant praktines problemas, dažnai nutinka taip, kad integralas yra nepatogus arba neįmanomas analitiškai: jis gali būti neišreiškiamas elementariomis funkcijomis, integralas gali būti pateiktas lentelės pavidalu ir pan. Tokiais atvejais naudojami skaitinio integravimo metodai. naudotas. Skaitmeninio integravimo metoduose naudojamas lenktos trapecijos plotas pakeičiamas baigtine paprastesnių geometrinių figūrų plotų suma, kurią galima tiksliai apskaičiuoti. Šia prasme jie kalba apie kvadratinių formulių naudojimą.

Daugumoje metodų integralas pateikiamas kaip baigtinė suma (kvadratūrinė formulė):

Kvadratūrinių formulių pagrindas yra idėja pakeisti integrando grafiką integravimo segmente paprastesnės formos funkcijomis, kurias būtų galima lengvai integruoti analitiškai, taigi ir lengvai apskaičiuoti. Kvadratūrinių formulių sudarymo užduotis paprasčiausiai įgyvendinama daugianariams matematiniams modeliams.

Galima išskirti tris metodų grupes:

1. Integravimo segmento padalijimo į vienodus intervalus metodas. Padalijimas į intervalus atliekamas iš anksto, dažniausiai intervalai parenkami lygūs (kad būtų lengviau apskaičiuoti funkciją intervalų galuose). Apskaičiuokite plotus ir juos susukite (stačiakampio, trapecijos, Simpsono metodai).

2. Metodai su integravimo segmento skaidymu naudojant specialius taškus (Gauso metodas).

3. Integralų skaičiavimas naudojant atsitiktinius skaičius (Monte Karlo metodas).

Stačiakampio metodas. Tegul funkcija (paveikslas) turi būti skaitiniu būdu integruota segmente . Padalinkite atkarpą į N vienodus intervalus. Kiekvienos iš N kreivės trapecijos plotą galima pakeisti stačiakampio plotu.

Visų stačiakampių plotis yra vienodas ir lygus:

Norėdami pasirinkti stačiakampių aukštį, galite pasirinkti funkcijos reikšmę kairėje kraštinėje. Tokiu atveju pirmojo stačiakampio aukštis bus f(a), antrojo – f(x 1),..., N-f(N-1).

Jei pasirinksime stačiakampio aukštį dešinėje pusėje esančios funkcijos reikšmę, tokiu atveju pirmojo stačiakampio aukštis bus f(x 1), antrojo - f(x 2), ... , N - f(x N).

Kaip matote, šiuo atveju viena iš formulių pateikia integralo aproksimaciją su pertekliumi, o antroji - su trūkumu. Yra ir kitas būdas – aproksimavimui naudoti funkcijos reikšmę integravimo segmento viduryje:

Stačiakampio metodo absoliučios paklaidos įvertinimas (vidurinis)

Kairiojo ir dešiniojo stačiakampio metodų absoliučios paklaidos įvertinimas.

Pavyzdys. Apskaičiuokite visą intervalą ir padalykite intervalą į keturias dalis

Sprendimas. Analitiškai apskaičiavus šį integralą gaunama I=arctg(1)–arctg(0)=0,7853981634. Mūsų atveju:

1)h = 1; xo = 0; x1 = 1;

2) h = 0,25 (1/4); x0 = 0; x1 = 0,25; x2 = 0,5; x3 = 0,75; x4 = 1;

Apskaičiuokime kairiojo stačiakampio metodu:

Apskaičiuokime taikydami tinkamą stačiakampio metodą:

Apskaičiuokime taikydami vidutinio stačiakampio metodą:

Trapecijos metodas. Naudojant pirmojo laipsnio daugianarį (tiesią liniją, nubrėžtą per du taškus), interpoliuojant rezultatus trapecijos formos formulėje. Integravimo segmento galai laikomi interpoliacijos mazgais. Taigi kreivinė trapecija pakeičiama įprasta trapecija, kurios plotą galima rasti kaip pusės pagrindų sumos ir aukščio sandaugą

Jei yra N integravimo segmentų visuose mazguose, išskyrus kraštutinius segmento taškus, funkcijos reikšmė į bendrą sumą bus įtraukta du kartus (nes gretimos trapecijos turi vieną bendrą pusę)

Trapecijos formulę galima gauti paėmus pusę stačiakampių formulių sumos išilgai dešiniojo ir kairiojo segmento kraštų:

Tirpalo stabilumo tikrinimas. Kaip taisyklė, kuo trumpesnis kiekvieno intervalo ilgis, t.y. kuo didesnis šių intervalų skaičius, tuo mažesnis skirtumas tarp apytikslių ir tikslių integralo verčių. Tai galioja daugumai funkcijų. Taikant trapecijos metodą, integralo ϭ skaičiavimo paklaida yra maždaug proporcinga integravimo žingsnio kvadratui (ϭ ~ h 2) Taigi, norint apskaičiuoti tam tikros funkcijos integralą a, b atžvilgiu, reikia padalinkite atkarpą į N 0 intervalus ir raskite trapecijos plotų sumą. Tada reikia padidinti intervalų skaičių N 1, dar kartą apskaičiuoti trapecijos sumą ir palyginti gautą reikšmę su ankstesniu rezultatu. Tai turėtų būti kartojama iki (N i), kol pasiekiamas nurodytas rezultato tikslumas (konvergencijos kriterijus).

Taikant stačiakampio ir trapecijos metodus, paprastai kiekviename iteracijos žingsnyje intervalų skaičius padidėja 2 kartus (N i +1 = 2N i).

Konvergencijos kriterijus:

Pagrindinis trapecijos formos privalumas yra jos paprastumas. Tačiau jei apskaičiuojant integralą reikalingas didelis tikslumas, šis metodas gali reikalauti per daug iteracijų.

Absoliuti trapecijos metodo paklaida yra įvertintas kaip
.

Pavyzdys. Apskaičiuokite apytikslį apibrėžtąjį integralą naudodami trapecijos formulę.

a) Integracijos segmento padalijimas į 3 dalis.
b) Integracijos segmento padalijimas į 5 dalis.

Sprendimas:
a) Pagal sąlygą integracinis segmentas turi būti padalintas į 3 dalis, t.
Apskaičiuokime kiekvieno skaidinio segmento ilgį: .

Taigi bendra trapecijos formulė sumažinama iki malonaus dydžio:

Pagaliau:

Leiskite jums priminti, kad gauta vertė yra apytikslė ploto vertė.

b) Integravimo atkarpą padalinkime į 5 lygias dalis, t. Didindami segmentų skaičių, padidiname skaičiavimų tikslumą.

Jei , tada trapecijos formos formulė yra tokia:

Raskime skaidinio veiksmą:
, tai yra, kiekvieno tarpinio segmento ilgis yra 0,6.

Baigiant užduotį patogu visus skaičiavimus įforminti naudojant skaičiavimo lentelę:

Pirmoje eilutėje rašome "skaitiklis"

Kaip rezultatas:

Na, išaiškinimas tikrai yra ir rimtas!
Jei 3 skirsnių segmentams, tai 5 segmentams. Jei imsite dar didesnį segmentą => jis bus dar tikslesnis.

Simpsono formulė. Trapecijos formulė duoda rezultatą, kuris stipriai priklauso nuo žingsnio dydžio h, o tai turi įtakos tam tikro integralo skaičiavimo tikslumui, ypač tais atvejais, kai funkcija nemonotoniška. Galima daryti prielaidą, kad skaičiavimų tikslumas padidės, jei vietoj tiesių atkarpų, pakeisiančių kreivinius funkcijos f(x) grafiko fragmentus, naudosime, pavyzdžiui, parabolių fragmentus, pateiktus per tris gretimus grafiko taškus. Šia geometrine interpretacija remiasi Simpsono apibrėžtojo integralo skaičiavimo metodas. Visas integravimo intervalas a,b padalintas į N atkarpas, atkarpos ilgis taip pat bus lygus h=(b-a)/N.

Simpsono formulė atrodo taip:

likęs terminas

Didėjant segmentų ilgiui, formulės tikslumas mažėja, todėl tikslumui padidinti naudojama Simpsono sudėtinė formulė. Visas integravimo intervalas padalintas į lyginį skaičių identiškų atkarpų N, atkarpos ilgis taip pat bus lygus h=(b-a)/N. Simpsono junginio formulė yra tokia:

Formulėje skliausteliuose pateiktos išraiškos reiškia integrando reikšmių sumas atitinkamai nelyginių ir lyginių vidinių segmentų galuose.

Likusi Simpsono formulės dalis yra proporcinga ketvirtajai žingsnio laipsniai:

Pavyzdys: Naudodami Simpsono taisyklę, apskaičiuokite integralą. (Tikslus sprendimas – 0,2)

Gauso metodas

Gauso kvadratūros formulė. Pagrindinis antrojo tipo kvadratinių formulių principas matomas iš 1.12 pav.: reikia taip išdėstyti taškus X 0 ir X 1 segmento viduje [ a;b], kad bendras „trikampių“ plotas būtų lygus „segmento“ plotui. Naudojant Gauso formulę, pradinis segmentas [ a;b] sumažinamas iki segmento [-1;1], pakeičiant kintamąjį Xįjungta

0.5∙(ba)∙t+ 0.5∙(b + a).

Tada , Kur .

Toks pakeitimas įmanomas, jei a Ir b yra baigtiniai, ir funkcija f(x) tęsiasi [ a;b]. Gauso formulė at n taškų x i, i=0,1,..,n-1 segmento viduje [ a;b]:

, (1.27)

Kur t i Ir A iįvairiems n yra pateiktos žinynuose. Pavyzdžiui, kada n=2 A 0 =A 1 = 1; adresu n=3: t 0 =t 2 "0,775, t 1 =0, A 0 =A 2 "0,555, A 1 "0,889.

Gauso kvadratūros formulė

gautas naudojant svorio funkciją, lygią vienetui p(x)= 1 ir mazgai x i, kurios yra Legendre daugianario šaknys

Šansai A i lengva apskaičiuoti naudojant formules

i=0,1,2,...n.

Mazgų ir koeficientų reikšmės n=2,3,4,5 pateiktos lentelėje

Įsakymas Mazgai Šansai
n=2 x 1=0 x 0 =-x 2=0.7745966692 A 1=8/9 A 0 = A 2=5/9
n=3 x 2 =-x 1=0.3399810436 x 3 =-x 0=0.8611363116 A 1 = A 2=0.6521451549 A 0 = A 3=0.6521451549
n=4 x 2 = 0 x 3 = -x 1 = 0.5384693101 x 4 =-x 0 =0.9061798459 A 0 =0.568888899 A 3 =A 1 =0.4786286705 A 0 =A 4 =0.2869268851
n=5 x 5 = -x 0 =0.9324695142 x 4 = -x 1 =0.6612093865 x 3 = -x 2 =0.2386191861 A 5 =A 0 =0.1713244924 A 4 =A 1 =0.3607615730 A 3 =A 2 =0.4679139346

Pavyzdys. Apskaičiuokite vertę naudodami Gauso formulę n=2:

Tiksli vertė: .

Integralo apskaičiavimo naudojant Gauso formulę algoritmas neapima mikrosegmentų skaičiaus padvigubinimo, o didinant ordinačių skaičių 1 ir lyginant gautas integralo vertes. Gauso formulės pranašumas yra didelis tikslumas su palyginti nedideliu ordinačių skaičiumi. Trūkumai: nepatogu atlikti skaičiavimus rankiniu būdu; būtina išsaugoti reikšmes kompiuterio atmintyje t i, A iįvairiems n.

Gauso kvadratūros formulės paklaida atkarpoje bus Likusio termino formulė bus ir koeficientas α N greitai mažėja augant N. Čia

Gauso formulės užtikrina didelį tikslumą net ir esant nedideliam mazgų skaičiui (nuo 4 iki 10) Šiuo atveju praktiniuose skaičiavimuose mazgų skaičius svyruoja nuo kelių šimtų iki kelių tūkstančių. Taip pat atkreipkite dėmesį, kad Gauso kvadratų svoriai visada yra teigiami, o tai užtikrina sumų skaičiavimo algoritmo stabilumą

Aukštyn