MattieT-tehtäväportaali


Yhteydenotot:

Heikki Apiola
Dept. of Math. Sci.
Aalto-yliopisto
heikki.apiola'at'aalto.fi

Juha Kuortti
Dept. of Math. Sci.
Aalto-yliopisto
juha.kuortti 'at' aalto.fi

Miika Oksman
Dept. of Math. Sci.
Aalto-yliopisto
miika.oksman 'at' aalto.fi

Maple/Käyrän sovitus

Käyrän sovitus, curve fitting
  • Interpolaatio (polynomi-, splini-,muut kantafunktiot)
  • PNS-sovitus
Käytön idea: Kun löydät mieleisesi tehtävän, sen alapuolella on linkki tex-tiedostoon. Lataa tiedosto, ja liitä se harjoituspohjaan tai omaan Latex-pohjaasi

Sisällysluettelo


  1. mplCF01

    mplCF01.tex [Sama Matlab:lla: ...mlCF01.tex]

    Hermiten interpolaatio: Interpolaatioehdoissa esiintyy myös derivaattoja.

    Määritä 4. asteen polynomi \(p\), joka toteuttaa ehdot: \[p(0) = p'(0)= 1, p(1)=p'(1)=p''(1)=2.\]

    (a) Käsittele polynomi lausekkeena.
    Tarkista tulos sopivasti subs-komennoilla ja piirrä kuva/kuvia polynomista ja derivaatoista.

    (b) Käsittele polynomi funktiona.

    Huom: 5 ehtoa ja 5 tuntematonta kerrointa \(\implies\) järkevän tuntuinen tehtävä. Yleisesti “järkevälläkään” Hermiten interpolaatiotehtävällä ei aina ole yksikäsitteistä ratkaisua (kuten ei neliömatriisin määräämällä lineaarisella yhtälöryhmälläkään – siitähän on kyse). Pelkkiä funktion arvoja koskevalla interpolaatiotehtävällä aina on (koska “Vandermonden neliömatriisi” on aina ei-singulaarinen).
    Tässä opetellaan erityisesti Maplen kätevää ratkaisutekniikkaa.

    Vihje
    Kirjoita polynomi lausekkeeksi tyyliin:
    p:=a*x^4+b*x^3 + .... ,
    missä \(a,b,\ldots, e\) ovat määrättävät kertoimet.
    Derivaatta: diff
    Arvojen (x=0,x=1) sijoittaminen p:n lausekkeeseen: subs
    Yhtälön ratkaiseminen: solve

    Kaikista saat tietoa näin ?diff, ...

    Vaativuus: 1+
    Tehtävän Latex-koodi:../mplteht/mplCurveFit/mplCF01.tex
    Ratkaisu:
    pdf-muodossa
    mw-tiedosto

    Avainsanat:MapleCF, Curve fitting,käyrän sovitus, interpolaatio


  2. mplCF03

    [Sama Matlab:lla ...mlCF15.tex]

    Opettajalle: (a)-kohta sopii ensitutustumiseen.
    (b)-kohta on sikäli huono, että virhetermin suuruusluokka on toisesta maailmasta (opettavaista kylläkin, mutta alkajaisiksi vaatii ainakin varoituksen).
    Lisää tehtävän opetuksia ratkaisutiedostoissa.

    (a) Muodosta interpolaatiopolynomi pisteistölle, joka saadaan laskemalla funktion \(\cos (1+x^2)\) arvot tasavälisessä x-pisteistössä, jossa on 7 pistettä välillä \([0,3]\).Piirrä samaan kuvaan funktio, datapisteet ja interpolaatiopolynomi.

    (b) Arvioi (Lagrangen) interpolaatiokaavan virhetermin avulla interpolaatiovirheen yläraja yo. välillä ja vertaa todelliseen.

    Lause Olkoot \(x_0,x_1,\ldots,x_n\) erilliset pisteet ja \(f\) \((n+1)\) kertaa jatkuvasti derivoituva funktio \(x_k-\)pisteet sisältävällä välillä. Jos \(p_n\) on (1-käs) dataan \((x_k,f(x_k))\) liittyvä interpolaatiopolynomi, niin \[f(x)-p_n(x) = \frac{f^{n+1}(\xi)}{(n+1)!}(x-x_0)(x-x_1) \cdots (x-x_n).\]

    Tässä on mahdollista harrastaa Maplen ja Matlabin yhteistyötä. Virhekaavan derivaatta muodostetaan tietysti Maplella ja lauseke sievennetään. Itse asiassa piirtämällä ja poimimalla kuvasta maksimipisteen koordinaatit, saadaan riittävän hyvä arvio.
    Toinen mahdollisuus on käyttää Matlabin symbolic toolboxia.

    Tulotermin voisi hoitaa tehokkaimmin Matlabissa ottamalla tiheän diskretoinnin ja käyttämällä max-funktiota. Maplessakin on max-funktio, lakenta on Matlabissa tehokkaampaa.
    Miten tulotermi lasketaan Matlabissa? Vaikka tähän tapaan:
    1. x=linspace(....,N)
    2. Tedään matriisi X, jossa x-vektoreita allekkain n+1 kpl.
    3. Tehdään matriisi X0, jossa rivit

               x0 x0 ... x0   N kpl.
               x1 x1 ... x1   N kpl.
                ...
               xn xn ... xn   N kpl.
            

    Nämä syntyvät vaikka meshgrid-komennolla tai ulkotuloilemalla ykköspystyvektorilla.
    4. Vähennetään matriisit ja prod()). Sitten vain abs ja max kehiin.

    Tosi Matlabmaista! (Ei moitita, vaikka tekisit for-loopin, vain 8 kertaa käydään, mutta hyvä ymmärtää Matlabin hienoa matriisiajattelua, muistiahan ei nykyisin tarvitse säästellä.)

    Tehtävän Latex-koodi:
    ../mplteht/mplCurveFit/mplCF03.tex
    Ratkaisu:
    pdf-muodossa
    mw-tiedosto

    Avainsanat: Interpolaatio, käyrän sovitus, interpolaatiovirhe, Lagrange MapleCF, Curve fitting


  3. mplCF07

    mlCF07.tex/mplCF07.tex [ H2T12.tex (kevät 2012)]
    Matlab,Maple,[Mathematica]

    W.A Mozartin(1756-1791) sävellyksiä indeksoidaan Köchel-luvuilla, jotka ilmaisevat teosten sävellysjärjestyksen. Alla on eräitä Köchel-lukuja, ja vastaavien teosten sävellysvuosia.

         Number    Year
         1         1761
         75        1771
        155        1772
        219        1775
        271        1777
        351        1780
        425        1782
        503        1786
        575        1789
        626        1791

    Käyttäen tätä dataa, arvioi teoksen Sinfonia Concertanten sävellysvuosi, kun tiedetään, että sen Köchel-numero on 364.

    Vihje:
    Piirrä ensin datapisteet tasoon, ja päätä millaista menetelmää kannattaa käyttää. Epäilemättä sopivan asteista PNS-polynomia. Suorita joitakin sovituksia, ja tarkista sitten tulos vaikka Wikipediasta.

    Vaativuus: 2
    Tehtävän Latex-koodi:
    ../mplteht/mplCurveFit/mplCF07.tex

    Avainsanat:MapleCF, Curve fitting,käyrän sovitus, interpolaatio, ... add more ...


  4. mplCF11

    mplCF11.tex
    Maple tai Matlab
    Tutkitaan nk. Rungen ilmiötä. Laske funktion \(g(x) = 1/(1+x^2)\) arvoja tasaisin välein väliltä \([-5,5]\), ja tee näihin pisteisiin perustuva polynominen interpolaatio. Piirrä sekä \(g(x)\) että \(P(x)\) samaan kuvaan. Mitä huomaat, kun valittujen datapisteiden määrää tihennetään?

    Kokeile interpolointia silloin, kun datapisteitä ei valita tasavälisesti, vaan ne valitaan Chebyshev-pisteiden \[x_j = 5 \cos(\frac{j \pi}{N}), j = 0\ldots N\] mukaan.

    Vihje
    Polynomi-interpolaatio kannattaa tehdä MATLAB-funktiolla polyfit. Funktio \(g\) kannattaa määritellä funktiokahvan avulla: g = @(x)1./(1+x.^2). Tasavälisiä pisteistä saa funktiolla linspace

    Vaativuus: 2-
    Tehtävän Latex-koodi:../mplteht/mplCurveFit/mplCF11.tex

    Avainsanat:MapleCF, Curve fitting,käyrän sovitus, interpolaatio


  5. mplCF13

    H2T14.tex/mlCF13.tex/mplCF13.tex
    Matlab,Maple,[Mathematica]

    Yhdysvaltojen perustuslaki vaatii, että maassa suoritetaan joka kymmenes vuosi väestönlaskenta. Ohessa on väestönlaskennan tuloksia sadoissa miljoonissa asukkaissa viime vuosisadalta.

    1900 1910 1920 1930 1940 1950 1960 1970 1980 1990
    76 92 106 122 132 150 179 203 226 248



    Tee polynomi-interpolointi datalle, ja ennusta väestön määrä vuonna 2010. Kuinka ennusteesi suhtautuu laskennan todelliseen tulokseen: 308,745,538 laskettua asukasta?

    Sovita myös eriasteisia PNS-polynomeja, vrt. Matlab Censusgui, lue Molerista:

    http://www.mathworks.se/moler/interp.pdf Moler: Num. Comp. with Matlab, interpolation

    Vaativuus: 2
    Tehtävän Latex-koodi:
    ../mplteht/mplCurveFit/mplCF13.tex
    Ratkaisu:
    ../mplteht/mplCurveFit/ratkaisut/mplCF13R.pdf
    ../mplteht/mplCurveFit/ratkaisut/mplCF13R.mw [mw-tiedosto, lataa Mapleen]

    Avainsanat:MapleCF, Curve fitting,käyrän sovitus, interpolaatio