Natural cubic spline

Seuraa 
Viestejä45973
Liittynyt3.9.2015

Oletetaan, että jokin kasvavan funktion pistejoukosta (x,y) luodaan natural spline, joka tulos on funktio y=f(x).
Sitten luodaan samasta käänteistä pistejoukosta (y,x) toinen natural spline, joka tuottaa funktion x=g(y).

Nyt minua kummastuttaa, ettei seuraava ole päde: y=f(g(y)).
Pätee tietenkin jollakin tarkkuudella, mutta ei oletamallani tarkkuudella.

Oletukseni eksaktista tarkkuudesta perustuu kuulemaani natural spline-luonnehdintaan, jonka mukaan splinin voisi fyysisesti kuvitella olevan jäykän teräslangan tavutuskäyrä annettujen pisteiden (x,y) mukaan.

Jos taivutan teräslankaa seinään naulaamieni pisteiden mukaan, yhteyden y=f(g(y)) tulisi toteutua tarkasti!
Eihän se teräslanka tiedä kumpi koordinaatti on x ja kumpi y.

Onko nyt kuulemani splinin teräslankaluonnehdinta virheellinen vai onko käyttämässäni splini-algorirmissa virhe?

Luulen, ettei teräslankavertaus toimi natural cubic splinen kanssa, pitäisi ilmeisesti olla jokin muu spline.
Mikä fysikaalinen vertaus sopisi natural cubic splineen?

Kommentit (15)

Stratonovich
Seuraa 
Viestejä358
Liittynyt14.6.2009
Mateo
Oletetaan, että jokin kasvavan funktion pistejoukosta (x,y) luodaan natural spline, joka tulos on funktio y=f(x).
Sitten luodaan samasta käänteistä pistejoukosta (y,x) toinen natural spline, joka tuottaa funktion x=g(y).

Nyt minua kummastuttaa, ettei seuraava ole päde: y=f(g(y)).
Pätee tietenkin jollakin tarkkuudella, mutta ei oletamallani tarkkuudella.

Oletukseni eksaktista tarkkuudesta perustuu kuulemaani natural spline-luonnehdintaan, jonka mukaan splinin voisi fyysisesti kuvitella olevan jäykän teräslangan tavutuskäyrä annettujen pisteiden (x,y) mukaan.

Jos taivutan teräslankaa seinään naulaamieni pisteiden mukaan, yhteyden y=f(g(y)) tulisi toteutua tarkasti!
Eihän se teräslanka tiedä kumpi koordinaatti on x ja kumpi y.

Onko nyt kuulemani splinin teräslankaluonnehdinta virheellinen vai onko käyttämässäni splini-algorirmissa virhe?

Luulen, ettei teräslankavertaus toimi natural cubic splinen kanssa, pitäisi ilmeisesti olla jokin muu spline.
Mikä fysikaalinen vertaus sopisi natural cubic splineen?


Äkkiä ajatellen tuo teräslankavertaus toimii, jos muodostat splinin jonkun kolmannen parametrin t funktiona näin:

f(t) = (x(t),y(t))

Nyt sen toisen derivaatan minimointi vastaa teräslankaa.

Vierailija
Stratonovich

Äkkiä ajatellen tuo teräslankavertaus toimii, jos muodostat splinin jonkun kolmannen parametrin t funktiona näin:

f(t) = (x(t),y(t))

Nyt sen toisen derivaatan minimointi vastaa teräslankaa.




Ehkä en ymmärtänyt vastaustasi, sorry.

Käyttämäni natural cubic spline-algoritmi ei tuota pistejoukosta (x,y) generoidun funktion y=f(x) ja käänteisestä pistejoukosta (y,x) generoidun funktion x=g(y) välille "eksaktia" yhteyttä y=f(g(y)).

Yhteys y=f(g(y)) on "insinöörintarkka" pisteiden määrittelyalueella, ekstrapoloitaessa yhteys y=f(g(y)) katoaa täysin.

Fyysisessä teräslangassa yhteys y=f(g(y)) ei katoa, on ihan sama miten päin käännät seinän, johon olet taivuttanut teräslangan naulaamiesi pisteiden kautta!?
Teräslanka taivutus säilyy samanlaisena riippumatta siitä, miten kierrät seinää tai mistä kulmasta seinää katselet.

Eikä teräslankavertaus oikein voikaan toimia natural cubic splinen kohdalla, vaikka vain siksi, ettet pysty rakentamaan natural cubic splineä spiraaliin taivutetusta teräslangasta.

Minkä tyyppinen spline kuvaa teräslangan taivutuksen?
Mikä fysikaalinen vertaus sopisi natural cubic splinelle, jollei teräslanka sovi?

Wikin "teräslankatarina":
http://en.wikipedia.org/wiki/Flat_spline

Vierailija
Mateo
Käyttämäni natural cubic spline-algoritmi ei tuota pistejoukosta (x,y) generoidun funktion y=f(x) ja käänteisestä pistejoukosta (y,x) generoidun funktion x=g(y) välille "eksaktia" yhteyttä y=f(g(y)).

Yhteys on "insinöörin" tarkka y=f(g(y)) pisteiden määrittelyalueella, ekstrapoloidessa yhteys y=f(g(y)) katoaa täysin.




En selostuksesi pohjalta ole 100% varma miten tarkalleen ottaen konstruoit splinisi f(x) mutta oletan, että kyseessä on paloittain määritelty polynomi x:n funktiona. Samaten oletan, että "käänteisesä joukosta" generoimasi splini g(y) on paloittain määritelty polynomi y:n funtiona.

Jos näin on, ehto y=f(g(y)) ei yleisesti ottaen voi toteutua, sillä polynomin käänteisfunktio ei välttämättä ole polynomi (esim. f(x) = x^3).

Ilmeisesti se mitä olet hakemassa, ovat parametrisoidut splinit, kuten Stratonovich ehdotti. Tsekkaa myös Bezierin käyrät ja NURBSit.

Stratonovich
Seuraa 
Viestejä358
Liittynyt14.6.2009
Mateo
Stratonovich

Äkkiä ajatellen tuo teräslankavertaus toimii, jos muodostat splinin jonkun kolmannen parametrin t funktiona näin:

f(t) = (x(t),y(t))

Nyt sen toisen derivaatan minimointi vastaa teräslankaa.




Ehkä en ymmärtänyt vastaustasi, sorry.

(...)

Eikä teräslankavertaus oikein voikaan toimia natural cubic splinen kohdalla, vaikka vain siksi, ettet pysty rakentamaan natural cubic splineä spiraaliin taivutetusta teräslangasta.

Minkä tyyppinen spline kuvaa teräslangan taivutuksen?
Mikä fysikaalinen vertaus sopisi natural cubic splinelle, jollei teräslanka sovi?


Koitinkin yllä hieman vihjailla, että miten se tulkinta pitäisi tehdä. Teräslankaa pitää ajatella kaksiulotteisena funktiona f, jonka syöte on etäisyys alkupisteestä lankaa pitkin t ja ulos saadaan koordinaatit x(t) ja y(t). Tällöin langan kaarevuus kohdassa t on

k(t)² = |x''(t)|² + |y''(t)|² = ||f''(t)||²

Taivutusenergia on (kai sitten) verrannollinen kaarevuuden neliön integraaliin välin yli:

∫ ||f''(t)||² dt

Ja tuo splinihän nimenomaan on se funktio joka minimoi ym lausekkeen ehdolla, että funktio kulkee kaikkien annettujen pisteiden kautta.

Taas jos sovitat pistejoukkoon (x,y) splinin y = f(x), se minimoi funktionaalin

∫ |f''(x)||² dx

joka ihan suoraan ei ole fysikaalisesti tulkittavissa taivutusenergiaksi.

edit: derivaatan neliö on kaarevuuden neliö (ei kaarevuus)

Vierailija
mal

En selostuksesi pohjalta ole 100% varma miten tarkalleen ottaen konstruoit splinisi f(x) mutta oletan, että kyseessä on paloittain määritelty polynomi x:n funktiona. Samaten oletan, että "käänteisesä joukosta" generoimasi splini g(y) on paloittain määritelty polynomi y:n funtiona.

Oletuksesi on täysin oikea.

mal

Jos näin on, ehto y=f(g(y)) ei yleisesti ottaen voi toteutua, sillä polynomin käänteisfunktio ei välttämättä ole polynomi (esim. f(x) = x^3).

Ilmeisesti se mitä olet hakemassa, ovat parametrisoidut splinit, kuten Stratonovich ehdotti. Tsekkaa myös Bezierin käyrät ja NURBSit.


Olet oikeassa siinä, ettei ^3-polynomin käänteisfunktio ole käytännössä koskaan ^3-polynomi, tämän vuoksi ymmärrän hyvin, ettei insinööreille markkinoitu teräslankavertaus oikein toimi.
Miksi sitä sitten markkinoidaan?
Taitaa olla niin, että insinööritarkkuudella natural cubic spline tuottaa teräslankaan sopivan tuloksen?
Ainakin jos lankaa ei taivuteta spiraalille ja jollei taivutuksen muoto ole muuten hankala siten, että natural cubic spilne-käänteisfunktio ei osaa tuottaa alkuperästä tulosta.
Mitenkähän tällaisia hankalia teräslankataivuksia voitaisiin matemaattisesti luonnehtia?

mal

Bezierin käyrät sopivat kyllä spiraaliin, mallintavatko ne kuitenkaan teräslankaa?

Olen kyllä tutustunut myös Bezier-käyriin, spiraalit kyllä onnistuvat, mutta teräslangasta en tiedä.

Mutta mitä natural cubic spline oikeastaan fysikaalisesti mallintaa?
Onko tämä ainoastaan insinöörityöväline, joka "melkein" mallintaa teräslangan taivutusta "sopivilla" (x,y) lähtöpisteillä.

Käytännössä varsinaisen splinin y=f(x) käänteisfunktio joudutaan sitten laskemaan numeerisesti vaikka puolitusmenetelmällä, kun (y,x)-pistepareista tuotettu x=f(y)-spline ei tuotakaan riittävän tarkkaa tulosta.

Vierailija
Mateo
Mitenkähän tällaisia hankalia teräslankataivuksia voitaisiin matemaattisesti luonnehtia?



Tsekkaa S:n vastaus yllä ja Googlaa "parametric spline".

Mutta mitä natural cubic spline oikeastaan fysikaalisesti mallintaa?



No tuollainen splini on aika lähellä alunperin suoran ja x-akselin suuntaan orientoidun ohuen palkin taivutusratkaisua. Eulerin palkki ("elastica") on esimerkiksi tällainen rakenne.

Mutta eipä tuolla nyt välttämättä tarvitse olla sen kummempaa fysikaalista tulkintaa, splinejä käytetään matemaattisessa mielessä interpolanttina mitä erinäisimmille asioille.

Vierailija
Stratonovich

Koitinkin yllä hieman vihjailla, että miten se tulkinta pitäisi tehdä. Teräslankaa pitää ajatella kaksiulotteisena funktiona f, jonka syöte on etäisyys alkupisteestä lankaa pitkin t ja ulos saadaan koordinaatit x(t) ja y(t). Tällöin langan kaarevuus kohdassa t on

k(t)² = |x''(t)|² + |y''(t)|² = ||f''(t)||²

Taivutusenergia on (kai sitten) verrannollinen kaarevuuden neliön integraaliin välin yli:

∫ ||f''(t)||² dt

Ja tuo splinihän nimenomaan on se funktio joka minimoi ym lausekkeen ehdolla, että funktio kulkee kaikkien annettujen pisteiden kautta.

Taas jos sovitat pistejoukkoon (x,y) splinin y = f(x), se minimoi funktionaalin

∫ |f''(x)||² dx

joka ihan suoraan ei ole fysikaalisesti tulkittavissa taivutusenergiaksi.

edit: derivaatan neliö on kaarevuuden neliö (ei kaarevuus)




Voit hyvin olla oikeassa, ymmärsinkin ainakin osan vastauksestasi.
Laskennallista algoritimia selvityksesi avulla ei kuitenkaan helpolla synny.
Näin "insinööritarkkuudella" taitaa olla parempi, että laskemme standardin x-y-tason natural cubic splinin y=f(x) annetuista (x,y)-lähtöpisteistä ja tarvittaessa laskemme käänteisfunktion jollakin numeerisella menetelmällä (esim. puolitus), mikäli käänteinen natural cubic spline on liian epätarkka.

Vähän minua vieläkin häiritsee tuo teräslankavertaus.
X-y-tason pisteistä laskettu natural cubic spline kun ei voi kuvata teräslankaa, ilmeisesti se on kuitenkin aika lähellä?

Onko teräslangan taivutustuloksen ja tason x-y-pisteiden avulla rakennetun y=f(x)-splinifunktion välille mahdollista saada matemaattista arviota y=f(x)-sovituksen kelvollisuudesta teräslankaan nähden?

Miten kuvailisit natural cubic spline-sovitusta asiakkaillesi, jollei teräslankavertaus toimi?
Teräslankavertaus taitaa kuitenkin toimia "insinööritarkkuudella"!?

Vierailija
mal
Mutta eipä tuolla nyt välttämättä tarvitse olla sen kummempaa fysikaalista tulkintaa, splinejä käytetään matemaattisessa mielessä interpolanttina mitä erinäisimmille asioille.



Näin ajattelinkin, olisi silti ollut hyvä jos olisin voinut vääntää y=f(x)-splinisovituksen idean "rautalangasta" kuulijakunnalleni.

Nyt tämä teräslankavertaus jää vähän avoimeksi.
Ilmeisesti mitä suorempi teräslanka, sitä paremmin natural cubic spline toimii.
No onneksi tässä tapauksessa "lanka" on aika suora.

Stratonovich
Seuraa 
Viestejä358
Liittynyt14.6.2009
Mateo
Vähän minua vieläkin häiritsee tuo teräslankavertaus.
X-y-tason pisteistä laskettu natural cubic spline kun ei voi kuvata teräslankaa, ilmeisesti se on kuitenkin aika lähellä?

Onko teräslangan taivutustuloksen ja tason x-y-pisteiden avulla rakennetun y=f(x)-splinifunktion välille mahdollista saada matemaattista arviota y=f(x)-sovituksen kelvollisuudesta teräslankaan nähden?

Miten kuvailisit natural cubic spline-sovitusta asiakkaillesi, jollei teräslankavertaus toimi?
Teräslankavertaus taitaa kuitenkin toimia "insinööritarkkuudella"!?


Tässä jotain analyysia:

Funktio y = f(x) voidaan myös esittää parametroituna funktiona näin: (x(t),y(t)) = (t,f(t)), jolla on kaarevuus

k(t)² = |f''(t)|² / (1+f'(t)²)³

jolloin taivutusenergia on

E = ∫ |f''(x)|² / (1+f'(x)²)³ dx

Tämä on lähellä spliniä, joka siis minimoi funktionaalin ∫ |f''(x)|² dx, silloin kun f'(x) on hyvin pieni. Siitä, että kuinka paljon nuo energiaminimit sitten oikeasti eroavat en lonkalta osaa sanoa mitään.

Lisäksi jotta parametrinen funktio (x(t),y(t)) on esitettävissä muodossa y = f(x), täytyy jokaisella x olla vain yksi mahdollinen y-arvo eli mikään spiraali tai vastaava ei käy.

heskam
Seuraa 
Viestejä935
Liittynyt16.11.2006

Tuo "spline" on nimitys tuollaiselle ohuesta rimasta tehdylle viivaimelle, jossa on sopivin välein asetettu masiivisia kalankuvatuksia.
http://images.google.fi/imgres?imgurl=h ... N%26um%3D1
Se siis asetetaan annettujen pisteiden kautta ja sen avulla piirretään esimerkiksi alusten linjapiirroksia. Matemaattinen splini saa nimensä pelkästään siitä, että sen tulee kulkea "annettujen pisteiden kautta". Matemaattinen splini on siis korkeintaan n-asteinen sekapolynomi. Se ei siten ole fysikaalinen. Kuutiollinen splini koostuu korkeintaan 3-asteisista polynomeista.
Muistaakseni esimerkiksi Autocadin splini ei kulje annettujen pisteiden kautta, eikä niinmuodoin olekaan splini.
Spline viivain on fysikaalinen olio.

Vanha jäärä
Seuraa 
Viestejä1557
Liittynyt12.4.2005
heskam
Muistaakseni esimerkiksi Autocadin splini ei kulje annettujen pisteiden kautta, eikä niinmuodoin olekaan splini.
Spline viivain on fysikaalinen olio.

Olen joskus värkännyt splinien kanssa, mutta en - tässäkään asiassa - ole mikään guru.

Ensinnäkin matemaattiset splinit ovat parametrisia approksimaatiokäyriä eli käyrät eivät kulje käyrää määrittävien pisteiden kautta kuin poikkeustapauksissa. Määrityspisteitä kutsutaan ohjauspisteiksi, ja kun ne yhdistetään järjestyksessä, muodostuu ohjausmonikulmio.

Tietyillä matemaattisilla tempuilla splinien ohjausmonikulmio voidaan laskea käänteisesti käyrän pisteistä, eli silloin on kyse alkuperäisten määrityspisteiden osalta interpolaatiokäyrästä. Tällöin tunnettuja käyrän pisteitä vastaavien parametriarvojen määrittäminen voi olla varsinainen taiteenlaji. Uniformilla määrityksellä (esim. että ensimmäisessä pisteessä parametri saa arvon yksi, toisessa arvon kaksi jne.) saa joskus aikaan hassuja tuloksia.

Lisäksi splinejä voidaan määrittää sovittamalla käyrä pistejoukkoon esimerkiksi pienimmän neliösumman menetelmällä, jolloin käyriä voidaan mallintaa mm. mitatuista pistejoukoista, mutta tämän matemaattisesta perustasta minulla ei juurikaan ole kokemusta.

Vanha jäärä

Vierailija
Vanha jäärä
Ensinnäkin matemaattiset splinit ovat parametrisia approksimaatiokäyriä eli käyrät eivät kulje käyrää määrittävien pisteiden kautta kuin poikkeustapauksissa

Approksimaatiokäyrinä splinejä toki käytetään.
Natural cubic spline kulkee kuitenkin aina sitä määrittävien pisteiden kautta, jos ei kulje, se ei ole natural cubic spline.

Seuraavalla sivulla voit itse piirtää splinin määrittämällä pisteet, joiden kautta haluat natural cubic splinen kulkevan:
http://www.math.utah.edu/~wright/applet ... pline.html

Vanha jäärä
Seuraa 
Viestejä1557
Liittynyt12.4.2005
Mateo

Natural cubic spline kulkee kuitenkin aina sitä määrittävien pisteiden kautta, jos ei kulje, se ei ole natural cubic spline.

Oikeassa olet tuon splinityypin osalta. Tosin sellaisia ei tietääkseni käytetä mallintamistarkoituksiin. Parametriset splinit ovat tuossa käytössä monessa suhteessa ylivoimaisia tämän tyyppisiin analyyttisiin funktioihin nähden.

Vanha jäärä

visti
Seuraa 
Viestejä6331
Liittynyt16.11.2009
Mateo

Voit hyvin olla oikeassa, ymmärsinkin ainakin osan vastauksestasi.
Laskennallista algoritimia selvityksesi avulla ei kuitenkaan helpolla synny.
Näin "insinööritarkkuudella" taitaa olla parempi, että laskemme standardin x-y-tason natural cubic splinin y=f(x) annetuista (x,y)-lähtöpisteistä ja tarvittaessa laskemme käänteisfunktion jollakin numeerisella menetelmällä (esim. puolitus), mikäli käänteinen natural cubic spline on liian epätarkka.

Vähän minua vieläkin häiritsee tuo teräslankavertaus.
X-y-tason pisteistä laskettu natural cubic spline kun ei voi kuvata teräslankaa, ilmeisesti se on kuitenkin aika lähellä?

Onko teräslangan taivutustuloksen ja tason x-y-pisteiden avulla rakennetun y=f(x)-splinifunktion välille mahdollista saada matemaattista arviota y=f(x)-sovituksen kelvollisuudesta teräslankaan nähden?


Ei taatusti. Silloinhan meillä olisi täysin oikea malli rautalangan käyttäytymisestä, kun se naulataan seinään. Ei silloin näitä splinejä tarvittaisikaan. Saat oikeaa tietoa, kun naulaat langan, syötät arvoparit, jotka tuottavat funktion . Sitten syötät ylimääräisiä arvoja ja mittaat seinältä paljonko tulee heittoa.

heskam
Seuraa 
Viestejä935
Liittynyt16.11.2006

Kiitos vaan Mateo. On ikävä, jos työkalut pöllitään vääriin käyttötarkoituksiin.
Nuo linjat ( tai siis kaaret) annetaan yleensä "uloslyöntitaulukoina". On siis sopivaista, että nuo pisteet ovat todellisia. Niihinhän koko alus komeudessaan on zipattu!

Köysikäyrä(ketjukäyrä) kai on sopiva osoitus, tuosta, että polynomi ei yleensä kuvaa tuollaisia fysikaalisia tilanteita kuin approksimatiivisesti.

Toisaalta mistään ei tulisi mitään, jos polynomiavaruus ei olisi "tiheä" jossain sopivassa avaruudessa. Sehän takaa, että ylipäätään voimme laskea jotain jollakin tarkkuudella.

Niin tuo funktion kääntäminen:
eka splinihän on polynomi, ja käänteisjoku on juurifunktio.
x^2-1=y kontra sqrt(y+1) = x eli (y+1)^½. Tuo taitaa mennä jo sarjaksi...

Uusimmat

Suosituimmat