Saturday, 25 November 2017

Liikkuva Keskiarvo Scala


Tänä viikonloppuna päätin kokeilla käteni Scalalla ja Clojure I: llä, joka tuntee esineohjattua ohjelmointia, joten Scala oli helppo noutaa kielenä, mutta halusi kokeilla toiminnallista ohjelmointia. Siellä se kovaa. t näyttävät päästäkseni kirjoitustoimintoihin Asiantuntijana toimivana ohjelmoijana, miten aiotte lähestyä ongelmaa. Kuinka luodaan arvojen luettelo ja määritetty summausjakso, miten luotaisiin uusi luettelo yksinkertaisen liukuvan keskiarvon Esimerkiksi Listan arvot 2 0, 4 0, 7 0, 6 0, 3 0, 8 0, 12 0, 9 0, 4 0, 1 0 ja jakso 4, funktio palauttaa 0 0 , 0 0, 0 0, 4 75, 5 0, 6 0, 7 25, 8 0, 8 25, 6 5. Sen jälkeen, kun olet viettänyt päivän, joka multaa sen päälle, tämä on hirvittävän tehotonta, joten teen jotain pikemminkin jotain. Nyt se olisi helppo tehdä välttämättömässä tyylissä, mutta voin t elämäni elämän selvittää miten ilmaista sitä toiminnallisesti. Kiinnostava ongelma voin ajatella ma ny-ratkaisuja, joiden tehokkuus vaihtelee Kun lisäämään tavaraa toistuvasti, ei todellakaan ole suorituskykyongelma, mutta anna olettaa, että se on myös alun perin nollia, joten etkö halua tuottaa niitä Jos algoritmi tarjoaa ne luonnollisesti, hieno, jos ei, oikaisemme myöhemmin. Kun Scale 2 8 aloitti, seuraavaa tuloksena olisi n-kausi liukuamalla liukuikkuna List-listalla. Vaikka tämä on melko tyylikäs, se ei t on paras mahdollinen suoritus, koska se ei hyödynnä jo laskettuja lisäyksiä Joten, puhumalla niistä, miten voimme saada heidät. Let sen sanomme, että kirjoitamme tämän. Olemme listan kunkin kahden parin summasta Let's try to käytä tätä tulosta laskettaessa 4 elementin liikkuvaa keskiarvoa. Edellä oleva kaava teki seuraavan laskelman. Joten jos otetaan jokainen elementti ja lisätään se toiseen elementtiin, saadaan 4 elementin liukuva keskiarvo. Voimme tehdä niin. Voisimme sitten laskea liukuvan keskiarvon 8 elementtiä ja niin edelleen No, on hyvin tunnettua algoritmia laskea asioita, jotka seuraavat tällaista mallia Se on tunnetuin sen käytön laskemisesta numero valtaa Se menee näin. Joten anna s soveltaa sitä here. ly , tässä s logiikka Periodi 0 ei kelpaa, jakso 1 on yhtä suuri kuin syöttö, jakso 2 on liukuva ikkuna kokoa 2 Jos sitä suurempi, se voi olla tasainen tai outoa. Jos pariton, lisätään jokainen elementti liikkuvaan summaan Esimerkiksi, jos 3, lisätään jokainen elementti seuraavien kahden elementin liikesummaan. Jos lasketaan myös motionSum n 2: lle, lisätään sitten kukin elementti yhdeksi n 2 askeleeksi sen jälkeen. voimme sitten palata ongelmaan ja tehdä tämä. On vähäinen tehottomuus käytön, mutta se s O-kausi, ei Se voidaan tehostaa, kun häntä rekursiivinen toiminto Ja tietenkin määritelmä liukuva I jos se on kauhean suorituskykyinen, mutta Scala 2: ssa on paljon parempi määritelmä. Huomaa, että voimme tehdä tehokas liukumenetelmä luettelossa, mutta voimme tehdä sen Iterabelissä. Sanoimme kaiken tämän, menen ensimmäisellä määritelmällä ja optimoin vain, jos kriittinen reittianalyysi osoitti tämän suurena sopimuksena. miten menin ongelman suhteen Meillä on liikkuva keskimääräinen ongelma Liikkuva keskiarvo on listan liikkuva ikkunan summa jaettuna kyseisen ikkunan koolla. Joten yritän saada liukuikkunan, summaamaan kaiken sen, ja sitten jakaa koon mukaan. Seuraava ongelma oli estää jo laskettujen lisäysten toistaminen. Tässä tapauksessa menin pienimpään mahdolliseen lisäykseen, ja yritin selvittää, kuinka laskea suurempia summia, hyödyntäen tällaisia ​​tuloksia. Lopuksi, yritetään ratkaise ongelma, miten kuvititte sen, lisäämällä ja vähentämällä edellisestä tuloksesta Ensimmäisen keskiarvon saaminen on helppoa. Nyt tehdään kaksi listaa Ensinnäkin vähennettävien elementtien luettelo Seuraavaksi lisätään elementtien luettelo. lisää nämä kaksi luetteloa zip: llä Tämä menetelmä tuottaa vain kun pienemmässä listassa on monia elementtejä, mikä estää ongelman vähentämisen olevan suurempi kuin tarpeen. Lopetamme kirjoittamalla tulos kerrallaan. Mikä on vastaus, joka palautetaan. Koko toiminto näyttää tältä. Tiedän, että Clojure on parempi kuin Scala, niin täällä menee Kun kirjoitan tämän toisen Clojure-merkinnän on ehdottoman välttämätöntä, että se ei ole oikein, mitä olet jäljessä ja isn t idiomatic Clojure Ensimmäinen algoritmi, joka tulee mielessäni, toistaa toistuvasti vaaditun määrän elementtejä sekvenssistä, ensimmäinen elementti ja toistuva. Seuraavat tekstit millaisia ​​sekvenssivektoreita tai listoja, laiska tai ei, ja antaa laiskan keskimääräiset sekvenssit ---, jotka voisivat olla hyödyllisiä, jos käytät luetteloa määrittelemätöntä kokoa. Huomaa, että se vie hoitaa pohja tapauksessa implisiittisesti palauttaa nolla, jos ei ole tarpeeksi elementtejä luettelossa kuluttaa. Tämä suorittaa teidän testitietoihin yields. It doesn t antaa 0 ensimmäinen osa elementtejä sekvenssissä, vaikka sitä voitaisiin helposti käsitellä joitakin mikä on keinotekoisesti. Helpoin asia on nähdä kuvio ja pystyä mieleen, että käytettävissä oleva funktio, joka sopii laskuosioon, antaa laiska näkymän sarjan osista, joita voimme sitten kartoittaa. Joku pyysi häntä rekursiivinen versio tail-rekursiota vastaan ​​laiskuus on vähän kompromissi Kun työsi on listan luominen ja sitten tekemällä funktiosi rekursiivinen on yleensä melko yksinkertainen, eikä tämä ole poikkeus --- rakenna luetteloa argumenttina alitoiminnolle Me ll kerätään vektoriin luettelon sijaan, koska muutoin lista luodaan taaksepäin ja se on päinvastoin lopetettava. Loop on tapa tehdä nimettömän sisäisen toiminnon sellainen kuin Scheme s nimeltään let recur on käytettävä Clojure poistaa hännän kutsut conj on yleinen huoli liittyy luonnollisella tavalla kokoelma --- luettelojen alussa ja vektorit loppuun. vastuullinen elokuu 24 09 at 2 58. Olen päättänyt lisätä tähän vanhaan Q, koska aihe nousi uudelleen ja minä f ind on suositeltavaa viitata tähän mukavaan kokoelmaan mahdollisista ratkaisuista lisäämällä omaa otetta, joka on erilainen kuin aikaisemmat Clojure-versiot, kuten A-luvussa on selitetty. Ehkä voimme rakentaa Webin täydellisimpiä arkistoidut toteutusratkaisut - Micha Marczyk Mar 2 10 at 0 20.Here on osittainen pistemäinen yksi rivi Haskell ratkaisu. Ensin se pätee hännät luettelossa saada häntää listoja, joten. Vahvistaa ja pudottaa ensimmäisen p syöttöjä ottaen p kuin 2 here. In case you eivät tunne pistemäisen symbolin, se on toiminnallinen funktionaalinen koostumus, eli se siirtää yhden toiminnon tuotoksen toisen panoksena ja laatii ne yhdeksi funktioksi, gf tarkoittaa, että arvo on f, ja sitten lähdetään tuotokselle g , joten fgx on sama kuin gfx Yleensä sen käyttö johtaa selkeämpiin ohjelmointityyliin. Sen jälkeen kartoitetaan funktion fromIntegral p sum summa p listalle. Joka listan jokaiselle listalle otetaan ensimmäiset p-elementit, summaa ne ja jakaa sitten ne sitten p Sitten me vain kääntää luettelo takaisin taaksepäin. Tämä kaikki näyttää paljon tehottomampaa kuin se on taaksepäin doesn t fyysisesti kääntää järjestyksessä luettelo kunnes lista on arvioitu, se vain asettaa sen päälle pino hyvä ol laiska Haskell jäljet ​​myös ei luota kaikkia näitä erillisiä luetteloita, se vain viittaa alkuperäisen luettelon eri osiin. Se ei ole vielä erinomainen ratkaisu, mutta se on pitkä rivi. Tässä on hieman parempi mutta pidempi ratkaisu, joka käyttää mapAccumia tekemään liukuvaa vähennyslaskua ja lisäystä. Ensimmäinen jaamme listan kahteen osaan p: ssä, niin. Kerrota ensimmäinen bitti. Napsauta toinen bitti alkuperäisellä listalla, joka vain parittaa kohteet kahdesta luettelosta. Alkuperäinen luettelo on tietenkin pidempi, mutta menetämme tämän ylimääräisen bittin. Nyt määritellään toiminto kartoituksessammeAccum ulator mapAccumL on sama kuin kartta, mutta ylimääräisellä käynnissä olevan tilakapasparametrin avulla, joka siirretään edellisestä kartoituksesta seuraavaan, kun kartta kulkee luettelon kautta Käytämme akkua liikkuvana keskiarvona , ja koska luettelomme on muodostunut elementistä, joka on juuri jättänyt liukuikkunan ja elementin, joka juuri syöttää sen listan, jonka olemme vetäneet, liukuva toiminto ottaa ensimmäisen numeron x pois keskiarvosta ja lisää toisen luvun y siirrä uudet s pitkin ja palaa s jakamalla p snd toinen ottaa vain toisen jäsenen parinumeron, jota käytetään ottamaan toinen palautusarvo mapAccumL, koska mapAccumL palauttaa akun sekä kartoitettu luettelo. että et ole perehtynyt symboliin se on sovellus operaattori Se doesn t todella tehdä mitään, mutta se on a, on pieni, oikea-associative sidonta etusija, joten se tarkoittaa, että voit jättää suluissa ottaa huomioon LISPers, iefx on sama kuin f x. Running ma 4 2 0, 4 0, 7 0, 6 0, 3 0, 8 0, 12 0, 9 0, 4 0, 1 0 saanto 4 75, 5 0, 6 0, 7 25, 8 25, 6 5 molemmille ratkaisuille. Oh, ja sinun täytyy tuoda moduuliluettelo täyttämään molemmat ratkaisut. Daniel Kiitos kirjoittamiskoodi on paljon helpompaa kuin selittää se - olet kuvannut sen gist Two Lists Streams ylläpidetään molemmissa funktioissa ja päästään otetuksi pois jokaisen iteraation aikana. One List Stream toimii pääkokoelmana iteroitavaksi, kun taas toinen List Stream, joka on sama kokoelma, paitsi jos aika on vähentynyt kaksinkertaiseksi, käytetään laskettaessa uutta liikkuvaa keskiarvoa Walter Changin elokuu 24 09 klo 17 19. J-ohjelmointikieli helpottaa ohjelmia, kuten liukuvaa keskiarvoa. vähemmän merkkejä kuin niiden etiketissä, liukuva keskiarvo. Tässä kysymyksessä määritellyt arvot sisältäen nimet arvot ovat selkeä tapa koodata tätä. Voimme kuvata tämän käyttämällä komponenttien merkintöjä. Useat esimerkit käyttävät täsmälleen samaa ohjelmaa. Ainoa ero on useampien nimien käyttö toisessa muodossa Tällaiset nimet voivat auttaa lukijoita, jotka eivät tunne J primaries. Let s näyttää hieman enemmän, mitä on käynnissä aliohjelmassa, keskimäärin d arvot summataan ja merkitsee jakoa kuten klassista merkkiä. Laskujen laskentamäärät tehdään kokonaisuutena, jolloin arvojen summa jakautuu arvojen summalla. Tässä kirjoitetussa liikkuvan keskiarvon laskennan tulos ei sisällä nollat ​​odotetaan alkuperäisessä kysymyksessä. Nollat ​​eivät todennäköisesti ole osa suunniteltua laskutoimitusta. Täällä käytettyä tekniikkaa kutsutaan hiljaiseksi ohjelmaksi. Se on melko sama kuin funktionaalisen ohjelmoinnin pistemäinen tyyli. Vastaus 26 elokuu 10 kello 16 15. Tässä on Clojure teeskentelee olevan toimintakykyisempi kieli Tämä on täysin tail-rekursiivinen, btw, ja sisältää johtavat nollat. Käytän yleensä kokoelma tai luettelo parametrin viime tehdä funktio helpompi curry Mutta Clojure. is niin hankalaa, olen yleensä päätyä tekemään tämä. ja tapauksessa, se doesnt t todella väliä mitä järjestyksessä parametrit go. answered 24 elokuu 09 at 4 56.Hi Jonathan, olen melko uusi tämän toiminnallinen ohjelmointi, voisitko selittää minulle, miten is on tail-rekursiivinen Kiitos James P 24.9.2009 klo 14 38. Rekursiota tapahtuu if-lausekkeessa, jossa jokin vaihtoehdoista perustuu uudelleen. Tämä laskee jokaisen parametrin ensin, ja vasta sitten jatkaa. Vastaus tulee seuraamaan uudelleen tulos on sama tulos, jonka rekursiivinen palauttaa ilman muita laskutoimituksia, tämä on rekursiivinen Daniel C Sobral 24. elokuuta 2009 klo 15.20. Tämä esimerkki käyttää valtiota, koska minulle se on käytännöllinen ratkaisu tässä tapauksessa ja sulkeminen, jotta luodaan ikkunan keskiarvotustoiminto. Se on silti toimiva siinä mielessä, että se käyttää ensiluokkaisia ​​toimintoja, vaikka se ei ole sivuvaikutus vapaaksi. Nämä kaksi mainitsemasi kieltä ovat molemmat JVM: n päällä, hallinnointi tarvittaessa. Vastaus 24 elokuu 09 at 1 55.Tämä ratkaisu on Haskell, joka on minulle tuntematon. vastuullinen 24 elokuu 09 klo 10 23.Olen kuin käyttää ottelu lausuntoa yritin tehdä jotain vastaavaa, mutta couldn t aivan tehdä niin aina James P 24.09. klo klo 14 39. Lyhyt Clojure-versio, jolla on etuna O-listan pituus riippumatta ajastasi. Tämä hyödyttää sitä, että voit laskea numerojoukon summan luomalla sarjan kumulatiivisen summan esim. 1 2 3 4 5 - 0 1 3 6 10 15 ja vähennetään sitten kaksi numeroa, joiden pituus on yhtä suuri kuin ajanjaksonne. Koska osapuoli oli myöhässä ja uusi toimintojen ohjelmointi, tulin tähän ratkaisuun sisäisellä funktiolla. jakaa koko luettelon aikakaudella len etukäteen Sitten luodaan summa alkaa len-first-elementeistä ja luodaan ensimmäiset, virheelliset elementit 0 0, 0 0. Sitten rekursiivisesti supistetaan ensin ja lisätään viimeinen arvo Loppujen lopuksi luetelen koko asiaa. Vastasivat huhti 29 10 klo 19 28. In Haskell pseudocode. Nyt yksi on todella abstrakti 4 out. vastattu Jul 23 13 klo 13 45. Avain on hännän funktio, joka kartoittaa luettelon alkuperäisen luettelon kopioiden luettelosta, jossa ominaisuus, että n-osainen tulos puuttuu ensimmäiset n-1 elementit. Sovellamme tuloksen fmap avg take n, eli otamme n-pituisen etuliitteen alaluettelosta ja laskeimme sen avg Jos listan pituus ei ole n, niin emme lasketa keskimäärin, koska se on määrittelemätön. Tässä tapauksessa emme palauta mitään. Jos se on, teemme ja kääritään vain Lopuksi, suoritamme catMaybesin fmap avg take n: n tuloksella, jotta pääsemme eroon ehkä type. vastasin Oct 21 13 at 1 29. Olen yllättynyt ja pettynyt suorituskykyä, mitä minusta tuntui eniten idiomatic Clojure ratkaisut, JamesCunningham s laiska-seq ratkaisuja. Joten tässä yhdistelmä James ratkaisu, jolla on ajatus mukauttaa nopeasti - eksponentiaatiota siirrettäviin summiin. Muokkaa tätä perustuen Mikeran ratkaisuun - on vieläkin nopeampi. julkaistu 22. heinäkuuta klo 13 21 21.Your Vastaus 2017 Stack Exchange, Inc. Spark 1 4: n käyttöönotto Spark-ikkunatoiminnot paransivat Spark DataFrames - ja Spark SQL - tuotteiden ekspressiivisyyttä. Window-toiminnoilla voit helposti laskea liukuvan keskiarvon tai kumulatiivisen summan tai viitata arvoon edellisellä rivillä taulukko-ikkuna-toiminnot antavat sinun tehdä monia yhteisiä laskutoimituksia DataFrame-kehyksillä ilman, että turvaudutaan RDD-manipulointiin. Muunnokset, UDF-versiot ja ikkunatoiminnot. Window-toiminnot täydentävät olemassa olevia DataFrame-toimintojen aggregaatteja, kuten summa - ja avg - ja UDF-tarkistuksia. laske yksi tulos, summa tai keskiarvo jokaiselle riviryhmälle, kun taas UDF: t laskevat jokaisen rivin yhden tuloksen vain tässä rivissä olevasta datasta. Sitä vastoin ikkunafunktiot laskevat jokaisen rivin yhden rivin rivin perusteella. liikkuva keskiarvo lasketaan jokaiselle riville nykyisen riviä ympäröivien rivien keskiarvoa voidaan tehdä ikkunatoiminnoilla. Keskimääräinen esimerkki. Anna meidät sukellus oikealle m oving keskimääräinen esimerkki Tässä esimerkkitietokuvassa on kaksi asiakasta, jotka ovat käyttäneet erilaisia ​​rahamääriä päivittäin. Asiakkaan rakentaminen DataFrame Kaikki esimerkit kirjoitetaan Scala: lla Spark 1 6 1: lla, mutta sama voidaan tehdä Python - tai SQL. val-asiakkaissa 2016-05-01, 50 00. Alice, 2016-05-03, 45 00. Alice , 2016-05-04, 55 00. Bob, 2016-05-01, 25 00.Window-funktio ja ikkuna Spec-määritelmä. Jäljempänä esitetyssä esimerkissä ikkunafunktio 1 on kaksiosainen, kuten esimerkiksi esimerkissä avg ja 2 esimerkki ikkunasta tai wSpec1 esimerkissä 1, löydät täydellisen luettelon ikkunafunktioista Tässä voit käyttää toimintoja Aggregate Functions ja Window Functions. For 2 määrittämällä ikkunan spec, on kolme komponenttia osio, järjestys ja frame. Partition määrittelee, miten tiedot on ryhmitelty edellä esimerkissä, se oli asiakkaan mukaan Sinun on määritettävä kohtuullinen ryhmittely, koska kaikki ryhmän sisällä olevat tiedot kerätään sama kone Ihannetapauksessa DataFrame on jo jaettu haluttuun ryhmittelyyn määrittää, kuinka rivejä tilataan ryhmässä edellä olevassa esimerkissä, se oli päivämäärän mukaan. Kehys määrittää ikkunan rajat suhteessa nykyiseen riviin yllä olevassa esimerkissä, ikkuna vaihteli edellisen rivin ja seuraavan rivin välillä. Kumulatiivinen summa Seuraavaksi laske - taan asiakkaan kulutuksen kumulatiivinen summa. Ikkunakehitys kehys vaihtelee alusta nykyiseen riviin 0.val wSpec2 0. Luo uusi sarake, joka laskee summan määritetyn ikkunakuvion yli. Arvot Yksinkertainen liukuva keskiarvo. Vaihtelut Yksinkertainen liukuva keskiarvo Sinua kannustetaan ratkaisemaan tämä tehtävä tehtävänkuvaus käyttäen mitä tahansa kieltä, jolla saat tietää tietyn sarjan yksinkertaisen liukuvan keskiarvon. Luo tilakäyttöinen funktion luokan esimerkki, joka vie ajan ja palauttaa rutiinin, joka ottaa numeron argumenttina ja palauttaa sen argumenttien yksinkertaisen liukuvan keskiarvon Yksinkertainen liukuva keskiarvo on menetelmä keskimääräisen lukumäärän laskemiseksi keskimäärin vain viimeisten P-numeroiden keskiarvosta virtauksesta, jossa P tunnetaan ajanjaksoksi. Se voidaan toteuttaa kutsumalla alustava rutiini P: n kanssa argumentti, IP, jonka pitäisi palauttaa rutiini, joka kutsutaan yksittäisten, peräkkäisten jäsenten kanssa numeroiden virrasta, laskee keskiarvon jopa niiden viimeiseen P: hen, soittaa tämän SMA: n. Sana s tyydyttävän tehtävänkuvauksessa viitataan SMA: n tarpeeseen muistaa tiettyjä tietoja kutsujen välille. Ajanjakso, P. An tilasi vähintään viimeiset P-numerot jokaisesta yksittäisestä puhelustaan. Todellinen tarkoittaa myös, että peräkkäiset puhelut I , alustunnisteen pitäisi palauttaa erilliset rutiinit, jotka eivät jakaa tallennettua tilaa, jotta niitä voitaisiin käyttää kahdessa itsenäisessä datavirrassa. Pseudokoodi SMA: n toteutusta varten. Tämä versio käyttää pysyvää jonoa pitämään viimeisimmät p-arvot. Jokainen funktiolla, joka palautetaan init-moving-keskiarvosta, on sen tilan atomin alueella, jossa on jonon arvo. Tämä toteutus käyttää pyöreää luetteloa, joka tallentaa numerot ikkunaan kunkin iteroinnin osoittimen alussa viittaa luetteloon soluun, ulos ikkunasta ja korvata juuri lisätty arvo. Käyttämällä Sulkeminen muokkaus. Tällä hetkellä tämä sma voi olla jalc, koska se varaa sulkemisen kasaan Jotkut paeta analyysi voisi poistaa kasaan jakamista. Struct-muokkauksen käyttäminen. Tämä versio estää sulkimen kasaosuuden säilyttämisen pitämällä tiedot päätoiminnon pino-kehyksessä samalle tuotokselle. Jotta vältettäisiin kelluvan pisteen likimääräiset arvot pysyvät paikoillaan ja kasvavat, koodi voi suorittaa säännöllisen summan koko pyöreä jono array. Tämä toteutus tuottaa kaksi funktion objektia jakaa tilaa Se on idiomaattinen E erottaa tuloa tulosta luetaan kirjasta sen sijaan, että yhdistää ne yhdeksi objektiksi. Rakenne on sama kuin standardin poikkeaman E toteutus. Elixir ohjelma alla luo nimettömän funktion, jossa on upotettu ajanjakso p, jota käytetään yksinkertaisen liukuvan keskiarvon ajanjaksona. Runfunktio lukee numeerisen syötteen ja siirtää sen äskettäin luotuun nimettömään funktioon ja sitten tarkastelee tuloksen STDOUT: lle. Lähtö esitetään alla , jonka keskiarvo, jota seuraa ryhmitelty panos, joka muodostaa perustan jokaiselle liikkuvalle keskiarvolle. Erlangilla on sulkimet, mutta muuttumattomat muuttujat Ratkaisu on käyttää prosessia ss ja yksinkertainen viesti kulkee API. Matrix-kielillä on rutiineja laskea liukuva avarages tietylle kohteelle. Se on vähemmän tehokas silmukka kuin seuraavissa komennoissa. Se kehottaa jatkuvasti syöttöä I, joka lisätään loppuun luettelo L1 L1 voidaan löytää painamalla 2ND 1 ja keskiarvo löytyy List OPS. Käytä ON-painiketta ohjelman lopettamiseksi. Toiminto, joka palauttaa luettelon, joka sisältää syötetyn argumentin keskiarvotiedot. Ohjelma, joka palauttaa yksinkertaisen arvon kussakin invocation. list on lista, joka on keskiarvo p on aika 5 palauttaa keskimääräisen luettelon. Esimerkki 2 Ohjelman käyttäminen movinav2 i, 5 - Alustetaan liukuva keskiarvo laskenta ja määritellään 5 movinav2: n jakso 3, xx - uudet tiedot listan arvoksi 3 , ja tulos tallennetaan muuttujaan x ja näytetään movinav2 4, xx - uusi datan arvo 4 ja uusi tulos tallennetaan muuttujaan x ja näytetään 4 3 2.Funktion funktio movinavg muuttuja r - on tulos keskimääräinen luettelo, joka on palasi muuttuja i - on indeksimuuttuja ja se viittaa alaluettelon loppuun listan ollessa keskiarvoinen muuttuja z - avustaja-muuttuja. Funktio käyttää muuttujaa i määrittääkseen mitä listan arvot otetaan huomioon seuraavassa keskiarvossa laskenta Jokaisella iteraatiolla muuttuja i osoittaa viimeisen luettelon arvon, jota käytetään keskimääräisessä laskelmassa. Joten tarvitsemme vain selville, mikä on luettelon ensimmäinen arvo Tavallisesti meillä on otettava huomioon p-elementit, joten Ensimmäinen elementti on ip 1: n indeksoima. Ensimmäisen iteroinnin tapauksessa laskelma kuitenkin yleensä on negatiivinen, joten seuraava yhtälö välttää negatiiviset indeksit max ip 1,1 tai järjestämällä yhtälö max ip, 0 1. elementit ensimmäisillä iteroinneilla ovat myös pienempiä, oikea arvo on pääindeksi - aloittaa indeksi 1 tai järjestää yhtälö i-max ip, 0 1 1 ja sitten i-max ip, 0 muuttuja z pitää yhteisen arvo max ip, 0 niin beginindex on z 1 ja numerofelements on iz. mid list, z 1, iz palauttaa arvoluettelon, joka on keskimäärin summa summaa summa, jonka keskiarvo on ja tallentaa tulos sopivaan paikkaan tulosluettelossa. fp1 luo osittaisen sovelluksen jossa tässä tapauksessa määritetään toinen ja kolmas parametri.

No comments:

Post a Comment