Miten luodaan polynomi-aproksimaatio xy-datajoukolle?

Hei, tarvitsen luokkaa 12 asteen likimääräistysfunktion joukolle mittausdataa, muotoa y = a*x^12 b*x^11 c*x^10 jne vakio. Data on x= virta, y=lämpötila ja mitauspisteitä on ainakin tuhat. Tiedän, että kun teen datajoukosta graafin, voin lisätä sille kuudennen asteen polynomilikimääräisfunktion ja voin valita tuon funtion esitettäväksi graafin otsikkotaulussa josta funktion voi kopioida. Mutta Excel sallii vain kuudennen asteen polynomin, se ei ole riittävän tarkka. Tarvitsisi siis oikeasti laskea tuo jotenkin enkä tiedä edes mistä aloittaisin. Kiireen tuntuakin on ilmassa, olisiko jollakin aikaa auttaa.

Pieni esimerkkipätkä datasta (mittalaitteet ovat paljon tarkempia kuin esimerkissä) :

I(uA) > T ©
1.01 > 20.10
1.10 > 20.12
1.21 > 20.13
1.31 > 20.14
1.41 > 20.15
1.52 > 20.15
1.61 > 20.17
1.72 > 20.18
1.81 > 20.18
1.90 > 20.19
7385
Äänestä

Muut lukivat myös

Vastaukset 7

Vanhimmat

Olet siis sovittamassa pienimmän neliösumman menetelmällä 12 - asteista polynomia lämpötiladataan. Siinä sovituksessa tulee aika laaja parametriavaruus kyseeseen eli voi olla vaikea löytää todellista minimiä paikallisten minimeiden joukosta.

Kysymys: Miksi pitää olla 12 sovitettavaa parametriä? Onko tuolle oikeasti joku tilanteen fysiikasta aiheutuva peruste?

Oikea työkalu voisi olla Octave (tai Matlab, jos löytyy lisenssi) tai sitten R. Kun siis Excelin kyvyt asiassa ovat rajoittuneita. Myös Igor Pro osaa asia, https://www.wavemetrics.com/products/igorpro/dataanalysis/curvefitting

Äänestä
  • Onnistuu Excelilläkin kun vain tekee sen PNS-sovittelemaan etsinnän VBA:lla. Valmiina funktiona sitä ei taida löytyä. Jos ei ole koodausosaamista tai ei osaa VBA-kieltä, niin Octave ja R ovat ihan hyviä vaihtoehtoja.

    Äänestä

  • Anonyymi kirjoitti:

    Onnistuu Excelilläkin kun vain tekee sen PNS-sovittelemaan etsinnän VBA:lla. Valmiina funktiona sitä ei taida löytyä. Jos ei ole koodausosaamista tai ei osaa VBA-kieltä, niin Octave ja R ovat ihan hyviä vaihtoehtoja.

    *PNS-sovitteen. Pahuksen autocorrect.

    Äänestä

  • Täsmälleen, pienimmän neliösumman menetelmällä (saa kyllä olla parempikin menetelmä). Noin 12 asteinen polynomi tarvitaan, koska 6 asteinen ei taivu niin hyvin/tiukasti. Tässä on rajoitteina lopullisen hinta, koko ja virrankulutus. Sensoreilla on melkoisen omalaatuinen ominaiskäyrä mutta systemaattisesti sellainen. Datajoukkoja tullee olemaan noin 6 kpl, jokaisessa tuhansia pisteitä. Näen Excelissä, kun interpoloin raakadatasta on tulos paljon tarkempi kuin 6 asteen polynomiaproksimaation avulla. Mutta raakadatalle ei ole muistitilaa (paitsi jos lisään muistipiirin joka vie fyysystä tilaa ja virtaa), useille korkean asteen polynomeille on hyvin muistitilaa.

    Excel osaa luoda 6-asteen polynomin silmänraäpäyksessa (graafikäyrälle), joten täyyhän sen olla mahdollista taulukkosivullakin (?). En tiedä miksi graafikäyrien aproksimaatioon ei saa valita enemmän kuin 6 asteinen, luultavasti kyseessä on toiminta-aika, mutta tässä tapauksessa ei ole väliä vaikka kestäisi sekunteja.

    Äänestä

  • Anonyymi kirjoitti:

    *PNS-sovitteen. Pahuksen autocorrect.

    Tuo auttoikin paljon. Nyt tiedän mitä "PNS-menetelmä" tarkoittaa.

    Äänestä

Kuka kärsii alemmuuskompleksista, noin pahasti?

Äänestä

Avauksen esimerkille kertoimet ovat (laskevassa järjestyksessä eli 'a' on 12.asteen termin kerroin):

a: -27.3658794661747
b: 401.252089302067
c: -2474.57689558702
d: 8019.96561586043
e: -12772.1513183952
f: 0
g: 42153.8536455465
h: -87016.9751920586
i: 86484.9179192169
j: -40358.2533134018
k: 0
l: 7956.14532955263
vakio: -2346.72396451096

Excel laskee nuo yhdellä array-formulalla.

Äänestä

Kommentoi aloitusta


Anonyymi kirjoitti:

Hei, tarvitsen luokkaa 12 asteen likimääräistysfunktion joukolle mittausdataa, muotoa y = a*x^12 b*x^11 c*x^10 jne vakio. Data on x= virta, y=lämpötila ja mitauspisteitä on ainakin tuhat. Tiedän, että kun teen datajoukosta graafin, voin lisätä sille kuudennen asteen polynomilikimääräisfunktion ja voin valita tuon funtion esitettäväksi graafin otsikkotaulussa josta funktion voi kopioida. Mutta Excel sallii vain kuudennen asteen polynomin, se ei ole riittävän tarkka. Tarvitsisi siis oikeasti laskea tuo jotenkin enkä tiedä edes mistä aloittaisin. Kiireen tuntuakin on ilmassa, olisiko jollakin aikaa auttaa.

Pieni esimerkkipätkä datasta (mittalaitteet ovat paljon tarkempia kuin esimerkissä) :

I(uA) > T ©
1.01 > 20.10
1.10 > 20.12
1.21 > 20.13
1.31 > 20.14
1.41 > 20.15
1.52 > 20.15
1.61 > 20.17
1.72 > 20.18
1.81 > 20.18
1.90 > 20.19

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu