NIVELIKKÄIDEN MEKANISMIEN TOTEUTUS TIETOKONEANIMAATIOSSA
|
|
- Ilona Halttunen
- 9 vuotta sitten
- Katselukertoja:
Transkriptio
1 NIVELIKKÄIDEN MEKANISMIEN TOTEUTUS TIETOKONEANIMAATIOSSA Marko Aho Helsinki PRO GRADU Tutkielma HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
2 HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET Tiedekunta/Osasto Matemaattis-luonnontieteellinen Tekijä(t) Laitos Institution Tietojenkäsittelytieteen laitos Författare Marko Aho Työn nimi Arbetets titel Nivelikkäiden mekanismien toteutus tietokoneanimaatiossa Oppiaine Läroämne Tietojenkäsittelytiede Työn laji Arbetets art Pro Gradu tutkielma Tiivistelmä Referat Aika Datum Sivumäärä Sidoantal 41 Tutkielmassa esitellään nivelikkäiden mekanismien teoria ja toteutus kolmiulotteisessa tietokoneanimaatiossa. Käänteiskinematiikan ratkaisuna esitetään yksinkertainen rekurssiomenetelmä, Jacobin matriisiin perustuva iteratiivinen menetelmä sekä ratkaiseminen minimointiongelmana. Tuloksena on suunnitelma reaaliaikaisesti laskettavasta nivelikkäiden mekanismien animointijärjestelmästä, jota voisi käyttää interaktiiviseen asennon määrittelyyn. Järjestelmä käyttää suoraa kinematiikkaa ja käänteiskinematiikkaa nivelikkään mekanismin reaaliaikaiseen ohjaamiseen. Työn kokeellisessa osuudessa on tehty nivelikkäiden mekanismien reaaliaikaisen ohjausjärjestelmän prototyyppi. CR-luokitus: I Three dimensional graphics and realism - animation Avainsanat Nyckelord reaaliaikainen interaktiivinen kolmiulotteinen animaatio, nivelikkäät mekanismit, käänteiskinematiikka Säilytyspaikka Förvaringställe Tietojenkäsittelytieteen laitoksen kirjasto, sarjanumero C Muita tietoja Övriga uppgifter CD-ROM-levy
3 Sisältö Esipuhe iii 1. Johdanto Tutkimusongelma Rajoitukset Toteutusympäristö 2 2. Käsitteet Kinematiikka Vapausasteet Nivelikkäät mekanismit Ketju ja loppuvaikuttaja Ohjaaminen Suora kinematiikka Käänteiskinematiikka Animointi 6 3. Nivelmekanismit Nivelten esitystavat Denavit-Hartenberg -määrittely Akseli-paikka-määrittely Nivelten esittäminen tietuetasolla Nivelhierarkia Prototyypissä käytettävä tietorakenne Nivelten ohjausmenetelmät Suora kinematiikka Ongelma Laskenta Esimerkki Kierto vapaavalintaisen akselin ympäri Pisteen kiertäminen akselin ympäri Käänteiskinematiikka Ongelma Käänteiskinematiikan yleiset ratkaisumahdollisuudet Käänteiskinematiikan ratkaisu rekursiivisesti Algoritmi Käänteiskinematiikan ratkaisu Jacobin matriisilla Jacobin matriisi Jacobin matriisin kääntäminen Ongelmat käänteiskinematiikassa Numeeriset virheet Laskennan raskaus Matriisi ei ole neliömatriisi Redundanttiset asennot Singulariteetti Pahat asennot Käänteiskinematiikan toteutus Jacobin matriisilla Jacobin matriisin rakentaminen Algoritmi 23 i
4 4.6.3 Iterointi Käänteiskinematiikka minimointiongelmana Loppuvaikuttajan kuvaaminen Maalin kuvaaminen Maalityypit Tavoitefunktio Ratkaisun laskenta Useat yhtäaikaiset rajoitteet Nivelikkäät mekanismit animaatio-ohjelmistossa TrueSpace Nivelikkäiden mekanismien tekeminen Nivelen lisäys ja asennon muutos Nivelhierarkia Nivelten ominaisuudet Animointi Käyttötapausesimerkki Sovelluskohteet Ihmisen animointi Kävely Kokeellinen osuus Prototyyppi Prototyypin perusta Nivelten esittämiseen tarkoitetut luokat Testiympäristön toteutus OpenGL:n osuus Kokeet Testit Testit Testit ja Testit yksinkertaisella rekursioratkaisulla Johtopäätökset Jatkotutkimuskohteita Yhteenveto 41 Lähteet 42 Liitteet Liite 1 CD-ROM-levy ii
5 Esipuhe Tämä kirjoitus on tuotettu Helsingin yliopistossa Tietojenkäsittelytieteen laitoksella Pro Gradu työnä lukukausilla Haluan kiittää kaikkia saamastani tuesta, erityisesti ohjaajiani apulaisprofessori Matti Mäkelää ja lehtori Harri Lainetta. Marko Aho iii
6 1. Johdanto Interaktiivinen kolmiulotteinen tietokoneanimaatio asettaa käytettävälle laitteistolle, algoritmeille ja malleille suuria vaatimuksia. Koska animaatio on interaktiivista, se pitää laskea reaaliajassa. Tällöin yleensä rajoitetaan käytettävien mallien realistisuutta. Yksinkertaisimmillaan joudutaan tyytymään piste- tai viivajoukkoihin. Nivelikkäät mekanismit ovat yksi tapa muodostaa mielenkiintoisia liikkuvia kappaleita interaktiiviseen animaatioon. Esimerkiksi ihminen voidaan esittää nivelikkäänä mekanismina. Pelkistettynä tukirankana esitetty ihmishahmo saadaan vastaamaan hyvin käyttäjän antamiin käskyihin. Animaatio nopeasti reagoivalla tukirangalla tuntuu realistisemmalta kuin jos hahmo näyttää ihmiseltä, mutta se vastaa käyttäjän toimiin vain muutaman kerran sekunnissa. Kehittyneissä laitteistoissa, joissa animaation laskenta on erotettu kuvien muodostamisesta nämä tukirangat voidaan päällystää kolmiulotteisilla kappaleilla, tekstuureilla, jopa elastisella nahalla. Tietokoneanimaatio-ohjelmistot ovat sisältäneet nämä ominaisuudet jo vuosia. Näissä ohjelmistoissa animaatio tuotetaan valmistamalla kuvat eräajopohjaisesti ja vain animaation ohjaus on interaktiivista. Toisaalta esimerkiksi kotitietokoneiden pelit pystyvät käyttämään ennalta tuotettuja liikkumistapoja hahmojen interaktiiviseen liikuttamiseen. Nivelikäs hahmo voi liikkua kolmiulotteisessa ympäristössä vaikkapa kävellen, juosten tai lentäen - usein pelaajaa kohden [Car96]. 1.1 Tutkimusongelma Kirjallisessa osassa on tutkittu, miten nivelikkäitä mekanismeja saadaan toteutettua tietokoneanimaatioon. Vertailukohdaksi on otettu kolmiulotteisen animaation tekemiseen tarkoitettu ohjelmisto, jossa on nivelikkäät mekanismit. On tuotettu suunnitelma, miten nivelikkäitä mekanismeja voidaan toteuttaa interaktiiviseen kolmiulotteiseen tietokoneanimaatioon tai virtuaalitodellisuusympäristöön. Kokeellisessa osassa on tuotettu interaktiivisen nivelikkään mekanismin prototyyppi. Mekanismeja voi rakentaa osoittamalla lapsi-vanhempi-suhde ja mekanismi sallii haarautumisen eli hierarkiset rakenteet. Mekanismia voi ohjata suoraan niveliä ohjaamalla eli suoralla kinematiikalla sekä epäsuorasti tavoiteohjaamalla eli käänteiskinematiikalla. 1
7 Mekanismilla on jokin alkuasento. Alkuasentona käytetään joko mekanismin nykyistä asentoa tai sitä muutetaan suoralla kinematiikalla. Mekanismi halutaan saada johonkin toiseen asentoon - loppuasentoon. Mekanismista osoitetaan paikallaan pysyvä kohta ja tavoitteeseen kiinnitetty kohta, mihin ohjaus kohdistetaan. Asennon ohjauksessa käytetään sellaisia komentoja kuin mene tuonne, katso tuohon suuntaan tai katso tuohon pisteeseen. Ohjelman on tuotettava lopputulos mahdollisimman nopeasti siten, että interaktiivisuus säilytetään. Loppuasentoa ei voida kuitenkaan aina saavuttaa, jolloin tyydytään paikalliseen minimiin. Kun loppuasento on saavutettu, tavoitetta voidaan animoida. Esimerkiksi tavoitteena olevaa paikkaa voidaan muuttaa hieman, kuitenkin siten, että uusi paikka on lähellä vanhaa paikkaa. Ohjelma laskee uuden asennon ja tästä syntyy animaation toinen kuva. Kokeiden tuloksena saadaan vastaus kysymyksiin: Voiko käänteiskinemaattista ohjausta käyttää reaaliaikaisesti? Jos voi, miten monimutkaista mekanismia voidaan ohjata? Alkuasennon ja loppuasennon välinen siirtymä voidaan tallettaa skriptiksi, ja toistaa nopeasti. Toiston aikana ei käytetä käänteiskinematiikkaa, vaan pelkkiä kulmanopeuksia tai kulmainterpolaatioita. Tällä tavalla voidaan määritellä esimerkiksi kävelysykli, jota toistetaan nopeasti uudelleen ja uudelleen. 1.2 Rajoitukset Työssä keskitytään animaatioon eli liikkeen tuottamiseen. Kuvien tuottamista eli renderöintiä ei käsitellä. Animoinnissa ei tarkastella mekanismien massoja eikä tällaisen järjestelmän dynamiikkaa. Kappaleiden pintamalleja ei oteta huomioon, eikä niiden välisiä törmäyksiä. Kokeellisessa osassa animoitavat kappaleet esitetään vain tukirankoina, joiden päälle voidaan kuitenkin myöhemmissä toteutuksissa ripustaa pintamalli. Muita kuin edellä mainittuja ohjausmenetelmiä ei tutkita kokeellisessa osassa. 1.3 Toteutusympäristö Toteutus on tehty C++-ohjelmointikielellä OpenGL-kirjaston avulla. Toteutus on siirrettävissä eri käyttöjärjestelmien välillä. 2
8 2. Käsitteet 2.1 Kinematiikka Tietokoneanimaation ohjaaminen voidaan jakaa kolmeen ryhmään: avainkuvaanimaatio, proseduraalinen animaatio ja dynaaminen simulointi. Avainkuvaanimaatiossa ohjaaja määrittelee mallien asennot tietyissä avainkuvissa, ja tietokone interpoloi väliin tarvittavat kuvat [IsC87]. Proseduraalisessa animaatiossa käsitellään kappaleen paikkaa ja asentoa avaruudessa algoritmisesti. Kappaleille voidaan asettaa myös nopeus ja kiihtyvyys. Näin määritellään kappaleiden liike kinematiikassa. Vastaavasti dynaamisessa simuloinnissa määritellään kappaleiden liike kappaleisiin kohdistuvilla voimilla [Bad87]. 2.2 Vapausasteet Vapausasteet (Degrees of freedom, DOF) ilmoittavat, miten monta muuttujaa tarvitaan ilmaisemaan kappaleen paikka ja asento yksikäsitteisesti avaruudessa. Jos kappaleella on yksi vapausaste, se voi joko pyöriä jonkin akselin ympäri tai se voi liikkua akselin suuntaisesti. Kahdella vapausasteella se voi joko pyöriä kahden akselin ympäri, liikkua tasossa tai pyöriä akselin ympäri ja liikkua sen suuntaisesti. Vastaavasti vapausasteiden kasvaessa päästään kolmiulotteisessa avaruudessa aina kuuteen vapausasteeseen (Kuva 2.1), jolloin kappale voi sekä liikkua kaikkien kolmen akselinsa suhteen, että kiertyä niiden ympäri [IsC87]. Kuva 2.1 Vapausasteita 3
9 2.3 Nivelikkäät mekanismit Nivelikäs mekanismi (articulated figure) on rakenne, joka koostuu sarjasta jäykkiä varsia (links), jotka kytkeytyvät toisiinsa nivelin (joints). Tietokoneanimaatiossa rajoitutaan usein vain kiertoliikkeeseen pystyviin niveliin. Yhdellä nivelellä on tällöin yhdestä kolmeen vapausastetta. Nivel voidaan toteuttaa myös siten, että samassa kohdassa on kolme niveltä, joilla on vain yksi vapausaste kullakin [Kob82]. Robotiikassa on käytössä myös prismaattiset nivelet - mäntäliitokset [WaW92]. Käänteiskinematiikan käyttöä robotiikassa on selostettu muun muassa Chinin tutkielmassa [Chi96]. 2.4 Ketju ja loppuvaikuttaja Nivelin toisiinsa yhteenliitetyt jäykät kappaleet muodostavat avoimen kinemaattisen ketjun [KoB82]. Ketjun toinen pää (fixed end, proximal end) kytketään paikoilleen - usein maailmankoordinaatistoon. Ketjun vapaata päätä (free end, distal end) kutsutaan loppuvaikuttajaksi (end effector). Loppuvaikuttajan paikka ja asento määräytyy kaikkien ketjun kappaleiden asentojen perusteella. Loppuvaikuttajan vapausaste saadaan laskemalla yhteen kaikkien ketjun nivelten vapausasteet [WaW92]. Kuvassa Kuva 2.2 olevassa käsivarressa loppuvaikuttajalla on kolme vapausastetta. Kuva 2.2 Robottikäsivarsi, jossa on kolme vapausastetta 2.5 Ohjaaminen Nivelikäs mekanismi voidaan ohjata haluttuun asentoon joko suoraan nivelten asentoihin vaikuttamalla tai epäsuorasti määrittämällä loppuvaikuttajalle haluttu paikka tai asento. Suoraan ohjaamiseen tarkoitetut asentokäskyt voidaan antaa käyttöliittymästä 4
10 lukuarvoina tai osoitinlaitteella ja käskyt voidaan tallettaa myöhempää toistoa varten skripteihin. Vaihtoehtoisesti käskyt voidaan laskea proseduraalisesti kuten esimerkiksi partikkelianimaatiossa. Epäsuoraa ohjaamista sanotaan tavoiteohjatuksi asennon määritykseksi tai tavoiteohjatuksi animoinniksi [KoB82]. Tavoiteohjauksessa ohjaajan tulee voida antaa myös useita yhtäaikaisia tavoitteita eli kinemaattisia rajoitteita (kinematic constraints). Tavoitteena on saada ohjaajan käyttöön yhä abstraktimpia ohjausmenetelmiä. Pisimmälle vietyinä ohjausmenetelmät perustuvat käyttäytymismalleihin [BlG95], jotka piilottavat alla olevat nivelikkäät mekanismit korkean tason käyttöliittymän alle. Tällöin nivelikkäiden mekanismien suoran ohjauksen tarve saada saadaan minimoitua. 2.6 Suora kinematiikka Suoran ohjauksen menetelmää kutsutaan suoraksi kinematiikaksi (forward kinematics). Ketjun jokaiselle nivelelle annetaan jokin asento. Jokaisen ketjussa olevan kappaleen liike ja asento määräytyy suhteessa kappaleen vanhemman koordinaatistoon. Jos vanhempi pyörii origonsa ympäri myös kaikki vanhemman lapsikappaleet pyörivät vanhemman origon ympärillä. Ohjaamiseen menetelmä on työläs. Halutunlaisen asennon löytäminen voi osoittautua hankalaksi - kun alaraajan on saanut oikeaan asentoon, ohjaaja huomaakin, että se ei aivan yllä kohteeseen, joutuu liikuttamaan yläraajaa ja taas säätämään alaraajaa. Tällä menetelmällä ei myöskään pystytä antamaan rajoitteita kappaleiden liikeradoille: kun lasketaan jalan askellusta avainkuvien välillä, on melko todennäköistä, että jossain ruudussa jalka läpäisee lattian [GiM85]. 2.7 Käänteiskinematiikka Käänteiskinematiikka (inverse kinematics, IK) ratkaisee tavoiteohjatun tehtävän nivelikkäälle mekanismille. Loppuvaikuttajalle annetaan jokin paikka tai asento mihin loppuvaikuttajan tulee pyrkiä. Kun tavoite on annettu, lasketaan ketjun nivelille algoritmisesti sellaiset asennot, jotka mahdollistavat tavoitteen saavuttamisen [WaW92]. Koska ketjun toinen pää on kuitenkin kiinnitetty, tavoitteiseen ei ole aina mahdollista päästä. Jos tavoitetta ei pystytä saavuttamaan, joudutaan tyytymään johonkin ketjun asentoon, joka on mahdollisimman lähellä annettua tavoitetta. Tämä asento voi olla paikallinen minimi, koska globaalin minimin etsiminen vie useimmiten liian kauan aikaa [ZhB94]. 5
11 2.8 Animointi Käänteiskinematiikassa algoritmin tuottama nivelikkään mekanismin loppuasento on ainoa, mitä animaatiossa voidaan käyttää. Asennon etsimisen välivaiheita ei tulisi näyttää. Animaatio saadaan syntymään siten, että jokaisessa aikayksikössä tavoitetta muutetaan hieman ja käänteiskinematiikka-algoritmi laskee uuden asennon. Kun tavoitteen muutos on tarpeeksi pieni aikayksikköön nähden, on lopputulos sulavaa animaatiota. Hyvän animaation aikaansaamiseksi on tärkeää osata valita oikea osa mekanismista loppuvaikuttajaksi [PhB91]. Valintaa voidaan muuttaa animaation aikana. Samoin on tärkeää miten tavoite asetetaan ja miten sitä animoidaan. Mikäli nivelketju jää paikalliseen minimiin nivelten rajoitteiden vuoksi, jää rajoitteiden kiertäminen ohjaajan vastuulle. Yleensä tarvitaan useita yhtäaikaisia rajoitteita realistisen animaation aikaansaamiseksi [BPW93]. 6
12 3. Nivelmekanismit 3.1 Nivelten esitystavat Denavit-Hartenberg -määrittely Denavit-Hartenberg-notaatio (DH) on varhaisimpia kinemaattisia määritelmä nivelikkäille mekanismeille. Se kehitettiin jo 1950-luvulla [WaW92] ja on ollut käytössä etenkin robotiikassa [ZhB94]. DH-notaatiossa käytetään neljää parametriä määrittelemään kappaleen asento vierekkäisten koordinaattijärjestelmien välillä. Kuvassa Kuva 3.1 varren pituutta merkitään a:lla, nivelen kiertymää α:lla, nivelen pituutta d:llä sekä nivelen asentoa eli kahden varren välistä kulmaa θ:lla [GiM85]. α i z i varsi i+ 1 a i z i -1 nivel i + 1 x i varsi i Θ i nivel i varsi i-1 d i x i- 1 Kuva 3.1 DH-notaatio [GiM85] DH-määrittelystä saadaan kahden vierekkäisen koordinaattikehyksen i ja i-1 välinen orientaatiomatriisi: missä i 1 T i H H H H n o a p =, (1) 7
13 p x = a i cos θ i, p y = a i sin θ i, p z = a i d i, n x = cos θ i, n y = sin θ i, n z = 0, o x = - cos α i sin θ i, o y = cos α i cos θ i, o z = sin α i, a x = sin α i sin θ i, a y = - sin α i cos θ I ja a x = cos α i [GiM85]. Kahden minkä tahansa kappaleen i ja j välinen asentomatriisi saadaan laskemalla toistuvasti ketjun vierekkäisten nivelten asentoja [GiM85]: i T j = i T i+1 i+1 T i+2 j-1 T j. (2) Nollakehys on maailmankoordinaatisto, joten minkä tahansa kappaleen asento saadaan tällä tavalla ilmaistuksi maailmankoordinaatistossa. Myös vapausasteet saadaan määrittelystä tarvittaessa [GiM85] Akseli-paikka-määrittely Sims ja Zeltzer kehittivät akseli-paikka-määrittelyn, mikä soveltuu myös haarautuviin nivelhierarkioihin. Määrittelyssä merkitään isäntäkappaleen koordinaatistossa nivelen paikka, nivelen akselin orientaatio, ja nivelen kiertymäkulma. Lisäksi tarvitaan osoittimia. Isäntäkappaleessa on osoitin nivelessä olevaan kappaleeseen (tai useampaan) ja lapsikappaleessa on osoitin isäntään [WaW92] Nivelten esittäminen tietuetasolla Badler, Manoochecri ja Walters [BMW87] esittävät nivelten toteutuksen tietorakenteena. Tietorakenne on kuvassa Kuva 3.2. Nivelhierarkiassa on rankasolmu, johon liittyy maailmassa näkyvä varsi, ja nivel jolla solmu liittyy isäntäänsä. Nivelellä on paikka, origo, joka ilmaistaan isännän koordinaatistossa, sekä nivelen orientaatio, jolla ilmaistaan kappaleiden keskinäinen asento. Sama asia ilmaistaan myös paikallisessa transformaatiomatriisissa isännän koordinaatistosta varren koordinaatistoon. Lisäksi on globaali matriisi, johon talletetaan muunnos maailman koordinaatistosta rankasolmuun. Nivelhierarkian juurisolmun isäntä on maailman koordinaatisto, joten sen paikallinen ja globaali muunnosmatriisi ovat samat. Origoa liikuttelemalla voidaan toteuttaa myös prismaattisia liitoksia. Varsi koostuu näkyvästä kappaleesta, nimestä ja kosketuspisteestä. Näkyvä kappale on varren pintamalli, joka ilmaistaan varren omassa koordinaatistossa. Kosketuspiste on 8
14 paikka varren omassa koordinaatistossa, johon voidaan kohdistaa tavoitteet. Tämä paikka on yleensä varren päässä oleva kohta, jossa nivel sijaitsee. Rankasolmussa oleva kosketuspiste on sama piste ilmaistuna maailmankoordinaateissa. Maalilla on paikka sekä paino. Paikka on se tavoitepiste maailmankoordinaateissa, johon kosketuspiste yritetään saada. Painolla voidaan säädellä miten tärkeää tavoitteen saavuttaminen on muihin nivelhierarkiassa oleviin tavoitteisiin nähden. Nollapainoinen tavoite jätetään kokonaan huomiotta. On huomattava, että maalilla ei ole tavoitteenaan kappaleen asentoa. Tämä puute on korjattu Badlerin myöhäisemmissä tutkimuksissa [ZhB94]. RANKASOLMU { RANKASOLMU *vanhempi; int lastenlkm; RANKASOLMU *lapset[]; VARSI varsi; NIVEL nivel; MAALI maali; VEKTORI kosketuspiste; // Maailman koordinaatistossa } NIVEL { VEKTORI paikka; // Isännän koordinaatistossa ORIENTAATIO orientaatio; MATRIISI paikallinen; // Muunnos isäntäkoordinaatistosta MATRIISI globaali; // Maailman koordinaatistosta } VARSI { KAPPALE pintakappale; char nimi[]; VEKTORI kosketuspiste; } ORIENTAATIO { float puolitaso, poikkeama, kierto; } VEKTORI { float x, y, z; } MATRIISI{ float elementti[4][4]; } MAALI { VEKTORI paikka; float paino; } 3.2 Nivelhierarkia Kuva 3.2 Tietorakenne nivelikkäälle mekanismille [BMW87] Nivelet muodostavat rankaan nivelhierarkian. Hierarkialla on yksi juurisolmu (root node) ja tämän solmun alla olevat solmut ovat juurisolmun perillisiä. Käänteistä kinematiikkaa käytetään ratkaisemaan hierarkian sisällä olevia yksittäisiä ketjuja. Nämä ketjut pitää voida osoittaa hierarkiasta. Aina ei välttämättä haluta mukaan koko ketjua 9
15 juuresta lehtisolmuun. Käänteiskinematiikkaa voidaan käyttää kahden minkä tahansa solmun välille valitsemalla tukisolmu (base node) ja loppuvaikuttaja. Loppuvaikuttajan on oltava hierarkiassa suoraan alenevassa polvessa tukisolmun suhteen. Käänteiskinematiikkamoottorin tehtävänä on ratkaista välissä olevien solmujen paikka ja asento. Väliin jääneitä solmuja kutsutaan tyhjiksi solmuiksi (empty node) [WaW92]. Kuvan Kuva 3.3 hierarkiassa juurisolmu on alaruumis, tukisolmuksi voidaan valita vaikkapa oikea käsivarsi ja loppuvaikuttajaksi oikea kämmen. Oikea käsivarsi olisi tällöin tyhjä solmu. Ketjun juurisolmua pitää voida vaihtaa kesken animaation. Tällä saavutetaan esimerkiksi tilanne, jossa paino siirtyy jalalta toiselle kävelysyklin aikana [PhB91]. Samaan rankaan voidaan asettaa useita tuki-loppuvaikuttaja solmupareja. Mikäli ne ovat päällekkäisiä, niiden vaikutusta lopputulokseen voidaan säätää priorisoinnilla. Korkeammalla prioriteetilla olevat ketjut arvioidaan ensiksi ja alemman prioriteetin ketjut täyttävät tyhjiä solmuja [WaW92]. Mikäli tavoitetta ei voida saavuttaa, korkeamman prioriteetin loppuvaikuttajat pääsevät lähemmäksi tavoitettaan kuin alaruumis vasen reisi oikea reisi yläruumis vasen sääri oikea sääri vasen olkavarsi kaula oikea olkavarsi vasen jalkaterä oikea jalkaterä vasen käsivarsi pää oikea käsivarsi vasen kämmen oikea kämmen alemmalla prioriteetilla olevat [BMW87]. Kuva 3.3 Kädellisen nivelhierarkia 10
16 3.3 Prototyypissä käytettävä tietorakenne Nivelhierarkia tarvitsee toimiakseen välttämättä paikan ja asennon maailmassa sekä hierarkiaa varten lapsilistan ja osoittimen vanhempaan. Paikka ja asento esitetään globaaleissa koordinaateissa ja asento talletetaan matriisina. Lisäksi maalin kiinnittämistä varten tarvitaan kosketuspiste loppuvaikuttajan koordinaatistossa. Koska mikä tahansa hierarkian osa voi olla loppuvaikuttaja, talletetaan jokaiselle kappaleelle kosketuspiste. Loppuvaikuttajan kosketuspiste tulee olla ilmaistavissa myös globaaleissa koordinaateissa. Tämä saadaan kertomalla kosketuspiste kappaleen orientaatiomatriisilla. Nivelen asento voidaan tarvita suhteessa vanhempaan. Tämä saadaan kahden asennon välisenä erotuksena. Matriisi M k ilmoittaa kappaleen asennon ja M v kappaleen vanhemman asennon. Näiden välinen erotus on: M delta = M v T M k, (3) mikä voidaan laskea kaavasta (12). 11
17 4. Nivelten ohjausmenetelmät 4.1 Suora kinematiikka Ongelma Kolmiulotteisessa avaruudessa olevan jäykän kappaleen paikkaa merkitään vektorilla (x, y, z) ja asentoa vektorilla (φ, θ, ψ) [KoB82]. Nämä muodostavat kappaleen tilavektorin θ = (x, y, z, φ, θ, ψ). Yleisesti animoitavan ketjun tilavektori on θ = (θ 1,..., θ n ). Tilavektorin ulottuvuus on sama kuin ketjun vapausasteiden lukumäärä. Suoran kinematiikan ongelmana on ratkaista X, kun θ on annettu eli X = f ( θ ). (4) Loppuvaikuttajan tila X määräytyy epäsuorasti kaikkien ketjun nivelten asentojen kautta [WaW92] Laskenta Suoran kinematiikan laskenta on suhteellisen yksinkertaista ja laskennallisesti nopeata. Laskenta redusoituu pisteen pyörittämiseen kolmiulotteisessa avaruudessa vapaavalintaisen akselin ympäri [HeB94]. Vanhempien liike periytyy lapsille. Vaikka suora kinematiikka soveltuu huonosti interaktiiviseen ohjaukseen, se tarjoaa kuitenkin täyden vapauden muokata nivelikästä mekanismia. Ohjaustapana suora kinematiikka on paljon voimakkaampi kuin pelkkien skriptien käyttämisen asennon määrittelyssä. Avainkuva-animaatiossa käytetään suoraa kinematiikkaa laskemaan avainkuvien väliset asennot interpoloimalla nivelten asentoja. Skripteillä voidaan ohjata nivelmekanismi esimerkiksi toistamaan kävelysykliä. 12
18 4.1.3 Esimerkki Kuvassa 4.1 on esimerkki suorasta kinematiikasta. Kuvassa on kolmen kuvan sarja, missä kädet heiluvat puolelta toiselle. Kumpikin käsi on koottu kolmesta osasta: olkavarresta, käsivarresta ja kämmenestä. Käsivarsi on kiinnitetty olkavarteen ja kämmen käsivarteen. Kaikissa kappaleissa origo vastaa kiinnityspistettä vanhempaan. Kiinnityspiste on määritelty siihen kohtaan, missä ihmisellä on nivel. Kun olkavartta pyöritetään z-akselin (lukijan katseen suuntainen akseli) ympäri, muu käsi seuraa mukana. Kuva 4.1 Animaatio toteutettuna suoralla kinematiikalla Kierto vapaavalintaisen akselin ympäri Asetetaan kolmiulotteiseen avaruuteen akseli a, joka kulkee origon kautta. Akselin a ympäri tapahtuva kierto kulman θ verran voidaan ilmaista ortogonaalisella matriisilla R(θ) = R(u) -1 R z (θ)r(u). (5) R(u) on ortogonaalinen orientaatiomatriisi, jolla akselin a suuntainen yksikkövektori u kierretään globaalien koordinaattiakselien suuntaisiksi. Vektori u on omassa koordinaatistossaan z-akselilla ja kiertämisen jälkeen u asettuu samansuuntaiseksi kuin globaali z-akseli [HeB94]. Normaalisti ohjelmisto säilyttää kappaleen asennon sellaisenaan orientaatiomatriisina R(u), joten se on saatavissa suoraan nivelestä. R(u) -1 on tämän matriisin käänteismatriisi, mikä ortogonaalisten matriisien tapauksessa on transpoosi R(u) T [HeB94]: R(u) -1 = R(u) T. (6) 13
19 Matriisi cosθ sinθ 0 0 sinθ cosθ 0 0 R z ( θ ) = ilmaisee kulman θ suuruisen kierron z-akselin ympäri. (7) Aina matriisia R(u) ei kuitenkaan ole sellaisenaan saatavissa tai se halutaan muodostaa parametreja antamalla. Yleisesti asento voidaan antaa joko Eulerin kulmina, suunta- ja ylösvektorina tai kvaterniona [WaW92]. Näistä kaikista voidaan muodostaa yllä mainittu orientaatiomatriisi. Mikäli akseli a on ilmaistu Eulerin kulmina ψ,θ,φ, eli kiertoina z, y ja x -akselien ympäri (roll, pitch, yaw) [Sho85], niin cosθ cosφ R( u) = sinψ sinθ cosφ cosψ sinφ cosψ sinθ cosφ + sinψ sinφ cosθ sinφ sinψ sinθ sinφ + cosψ cosφ cosψ sinθ sinφ sinψ cosφ sinθ cosθ sinψ. cosθ cosψ (8) Jos taas asento on ilmaistu akselin a suuntaisena (yksikkö)vektorina u, niin missä u' R( u) = u' u' x1 y1 z1 u' u' u' x2 y2 z2 u' u' u' x3 y3 z3, (9) u ' z = u (10) u' y = u u u u x x u ' = u' u' x y z ja u x =(u x1, u x2, u x3 ), u y =(u y1, u y2, u y3 ) ja u z =(u z1, u z2, u z3 ) [HeB94]. Kolmas tapa olisi ilmaista asento käyttämällä kvaternioita (quaternion) ja muuttaa kvaternio orientaatiomatriisiksi [Sho85]. Kvaterniot ovat ylivoimaisia interpoloitaessa asentoja avainkuvatekniikassa. Ne myös välttävät Eulerin kulmilla esiintyvän Gimbal lukon [WaW92]. 14
20 4.1.5 Pisteen kiertäminen akselin ympäri Kierretään pistettä P orientaatiomatriisilla M delta pisteen O suhteen. Pisteet P ja O on ilmaistu globaaleissa koordinaateissa. Muodostetaan vektori v = P - O, mikä ilmaisee siirtymän pisteestä O pisteeseen P. Vektorin v ilmaisema siirtymä kierretään orientaatiomatriisin M delta verran eli kerrotaan vektori v oikealta orientaatiomatriisilla M delta. Lisätään tämä tulovektori pisteeseen O ja näin saadaan pisteen P uusi paikka. Kaavana: P = O + ( P - O ) M delta. (11) Tässä piste P voidaan ajatella kappaleen origoksi, joka siirtyy esivanhemman origon O ympäri orientaatiomuutoksen M delta verran, kun esivanhempi on kiertynyt tämän verran. Kappaleen orientaatio muuttuu myös matriisin M delta ilmoittaman muutoksen verran. Tämä saadaan kertomalla kappaleen orientaatiomatriisi M k oikealta matriisilla M delta : M k = M k M delta. (12) Kiertymämatriisi M delta ja esivanhemman origo O välitetään edelleen kaikille kappaleen lapsille, jotka puolestaan kiertävät paikkaansa ja asentoaan kaavojen (11) ja (12) ilmaisemilla tavalla. 4.2 Käänteiskinematiikka Ongelma Käänteiskinematiikan ongelmana on ratkaista θ, kun X on annettu [WaW92], toisin sanoen: θ = f -1 ( X ). (13) Kun loppuvaikuttajan tila tunnetaan, pitää selvittää kaikki ketjun nivelten paikat ja asennot. Kun tilavektorin ulottuvuus kasvaa, järjestelmä muuttuu alimääritetyksi. Tällöin siinä on redundanttisuutta eli sama lopputilan asento voidaan saavuttaa useilla nivelten asennoilla. Tilannetta voidaan kuitenkin helpottaa asettamalla nivelille liikerajoitteita (constraints). Esimerkiksi kyynärnivel taipuu vain asentoihin, joissa sen kulma on välillä 20º - 180º. Järjestelmän tulee tuottaa vastaukseksi vain yksi nivelten asento. Yksi tyypillisimmistä rajoitteista on, että nivelen loppuasennon tulee olla mahdollisimman lähellä vanhaa asentoa. Tällä pyritään minimoimaan siirtymiseen tarvittava energia. 15
21 4.2.2 Käänteiskinematiikan yleiset ratkaisumahdollisuudet Käänteiskinematiikan ongelman ratkaisu on epälineaaristen yhtälöryhmien ratkaisua. Ongelma voidaan ratkaista joko suljetussa muodossa, iteroimalla käyttäen Jacobin matriisin pseudokäänteismatriisia, minimointiongelmana tai deformoitavana kappaleena [ZhB94]. 4.3 Käänteiskinematiikan ratkaisu rekursiivisesti Kirjallisuudessa viitataan yksinkertaisen rekursiivisen ratkaisumahdollisuuden olemassaoloon. Badler ja Manoochechri ja Walters [BMW87] mainitsevat käyttävänsä kolmiepäyhtälöä ja ahnetta algoritmia, mutta muuta tietoa ei anneta. Ratkaisun sanotaan käyttäytyvän huonosti nivelten liikerajoitteiden kanssa ja siitä onkin luovuttu myöhäisemmissä töissä voimakkaampien algoritmien hyväksi [ZhB94]. Kehitin itse algoritmin rekursiiviseen ratkaisemiseen. Rekursiivisen ratkaisun idea on esitetty kuvassa 4.2. Maalina käytetään vain paikkaa. Mikäli ensimmäinen varsi ketjun päässä voi yltää maaliin, kierretään vain ensimmäistä niveltä. Mikäli vartta pitää myös liikuttaa, liikutetaan vartta (ja nivelen paikkaa). Lasketaan varrelle ja sen edeltäjälle kohtauspaikka. Mikäli paikka on olemassa, liikutetaan varsi kohtauspaikkaan ja asetetaan se katsomaan maaliin sekä kierretään varren edeltäjää katsomaan kohtauspaikkaan. Kuvassa tämä on tapaus, jossa toinen nivel yltää maaliin. Mikäli kohtauspaikkaa ei ole, annetaan tarvittava liike edelleen rekursiivisesti maalina varren edeltäjälle. Näin jatketaan aina ketjun juureen asti. Mikäli juurtakin jouduttaisiin vielä siirtämään, ei maali ole tavoitettavissa ja rekursiossa paluuarvona palautetaan tieto epäonnistumisesta. Tällöin jo toteutetut varren liikuttamiset pitää purkaa. Ensimmäinen nivel yltää maaliin Toinen nivel yltää maaliin Kuva 4.2 Rekursiivinen ratkaisu Kolmas nivel yltää maaliin 16
22 4.3.1 Algoritmi Algoritmi puoliohjelmana: Liikuta_rekursiivisesti (Paikka maali, Indeksi i) { Jos (i > 0) { nivel := nivelketju[i] Aseta_katsomaan_kohti(nivel, maali) etäisyys_maaliin := maali nivel.kosketuspiste Jos (etäisyys_maaliin < epsilon) { // Maali löydetty Palauta tosi } muuten { Liikuta(nivel, etäisyys_maaliin) // Nivel liikkuu maaliin kohtaavat := Laske_kohtauspaikka( nivelketju[i-1], nivel, kohtauspaikka) Jos (kohtaavat) { Liikuta(nivel, kohtauspaikka) Aseta_katsomaan_kohti(nivel, maali) Aseta_katsomaan_kohti(nivelketju[i-1], kohtauspaikka) Palauta tosi } muuten { Jos (Liikuta_rekursiivisesti( kohtauspaikka, i-1) ) { Liikuta(nivel, kohtauspaikka) Aseta_katsomaan_kohti(nivel, maali) Palauta tosi } muuten { // Maali ei tavoitettavissa // palauta nivel alkuperäiseen paikkaansa Liikuta(nivel, -etäisyys_maaliin) Palauta epätosi } } } } muuten Palauta epätosi } Algoritmissa on tosiarvoinen funktio Laske_kohtauspaikka, joka laskee kahden nivelen (tai oikeastaan varren) välisen kohtauspaikan. Kohtauspaikka on kolmiulotteisessa avaruudessa kahden pallon leikkauksella. Kohtauspaikka voidaan laskea esimerkiksi iteroimalla. Iteraatiossa muutetaan nivelten asentoja katsomaan vuoron perään toistensa joko paikkaan (nivel) tai kosketuspisteeseen (nivel-1). Laskettu kohtauspaikka palautetaan muuttujassa kohtauspaikka. Mikäli nivelet eivät voi kohdata, kohtauspaikkaan on kuitenkin laskettu paikka, jolla nivel olisi lähinnä edeltäjäänsä. Funktio Aseta_katsomaan_kohti asettaa nivelen katsomaan kohti annettua maalia. Funktio on yleinen Look at -algoritmi [HeB94], jonka periaate on esitetty kaavoissa 9 ja 10. Rekursiivinen algoritmi saa lähtöparametreikseen alkuperäisen maalin paikan ja nivelketjun pään eli loppuvaikuttajan. 17
23 4.4 Käänteiskinematiikan ratkaisu Jacobin matriisilla Jacobin matriisi Loppuvaikuttajan nopeuden X suhde nivelten kulmanopeuksiin θ on Jθ, X = missä J on nimeltään Jacobin matriisi [Mac90]. Matriisi voidaan esittää sarakevektoreina, joka on kolminivelisessä kaksiulotteisessa (Kuva 4.3) tapauksessa: J = [ j 1 j 2 j 3 ]. Tässä sarake j i esittää nivelen i tuottamaa liikevaikutusta loppuvaikuttajaan. Vaikutus on verrannollinen nivelen kulmanopeuteen θ i yksikköympyrällä. Vaikutuksen suuruus saadaan laskettua asettamalla vektori p i nivelen i pyörimisakselista loppuvaikuttajaan. j i ja p i ovat samansuuruisia mutta kohtisuorassa toisiaan vastaan. Tämä suhde laajennetaan kolmiulotteiseksi kertomalla p i ristitulolla nivelen i pyörimisakseliin asetetulla yksikkövektorilla [Mac90]. Kuten huomataan, J muuttuu koko ajan. Se pitää muodostaa uudelleen jokaisessa simulaatioaskeleessa. (14) θ1 θ2 p2 p1 j3 j2 j1 p3 θ3 Kuva 4.3 Jacobin matriisin sarakkeiden fyysinen tulkinta [Mac90] 18
24 4.4.2 Jacobin matriisin kääntäminen Yhtälö θ = f -1 ( X ) saadaan periaatteessa ratkaistua muodostamalla Jacobin matriisin käänteismatriisi. Nivelten asennot nivelhierarkiassa saadaan loppuvaikuttajan liikkeestä yhtälöllä: dθ = J -1 (dx). (15) Koska niveliä voi olla mielivaltainen määrä ja jokaisella nivelellä on esimerkiksi kuusi vapausastetta, niin Jacobin matriisi ei yleensä ole neliömatriisi. Ja vain neliömatriisilla on käänteismatriisi. Yhtälölle (15) saadaan kuitenkin ratkaisu käyttämällä pseudokäänteismatriisia [GiM85]. Merkitään Jacobin matriisin J pseudokäänteismatriisia J + :lla. Tällä on seuraavanlaiset ominaisuudet: J J + J = J J + J J + = J + (J + J) T = J + J (J J + ) T = J J +. (16) Pseudokäänteismatriisi tuottaa pienimmän neliösumman suoran ratkaisun (least squares minimun norm solution) yhtälölle (15). Siten se tuottaa ratkaisun myös yli- että alimääritetyissä tapauksissa. Pseudokäänteismatriisi voidaan laskea täyttä astetta r oleville m * n -matriiseille kaavalla: (A T A) -1 A T, kun m > n = r, ja A + = A T (A A T ) -1, kun r = m < n. (17) Yleensä yhtälö (15) kuitenkin ratkaistaan käyttämällä Gaussin eliminointia vaihtokaaviolla, joten varsinaista pseudokäänteismatriisia ei tarvitse muodostaa [Väl87]. 4.5 Ongelmat käänteiskinematiikassa Käänteiskinematiikassa ongelmina ovat redundanttiset asennot [WaW92] ja yleisesti laskennan raskaus. Ongelmana on myös Jacobin matriisissa esiintyvät singulariteetit, jotka johtuvat pahoista asennoista [Mac90] sekä se, että Jacobin matriisi ei yleensä ole neliömatriisi, jolloin ratkaisuun joudutaan käyttämään pseudokäänteismatriisia [GiM85]. Lisäksi numeeriset virheet vaivaavat yleensä kaikkea realistiseen simulointiin pyrkiviä ohjelmia. 19
25 4.5.1 Numeeriset virheet Simulaation laskemisessa pitää aina varautua numeeriseen epätarkkuuteen. Prototyypissä tästä on huolehdittu kahdella tavalla: pitämällä riittävän lähellä olevia lukuja samoina vertailun avulla (etenkin nollaan verrattaessa) sekä huolehtimalla kappaleiden asentomatriisien ortonormaaliudesta [Gems]. Pseudokäänteismatriisi tuottaa vain paikallisia muunnoksia. Sen laskeminen liian suurella maalin etäisyydellä tuottaa varmasti liian suuria muutoksia niveliin. Tätä varten tavoitetta pitää lähestyä iteratiivisesti [WaW92] Laskennan raskaus Jacobin matriisin muodostaminen jokaisella simulaatioaskeleella ja matriisin kääntäminen tuottaa laskentaan reaaliaikaisuutta rajoittavaa raskautta. Pseudokäänteismatriisin tuottaminen on vaativuudeltaan luokkaa O(n 2 ), kun n on vapausasteiden määrä [PZB90]. Laskenta tulee entistä raskaammaksi, mikäli tavoitteeseen joudutaan iteroimaan Matriisi ei ole neliömatriisi Nivelketjut ovat yleensä pitkiä ja loppuvaikuttajan vapausaste on suurempi kuin kuusi. Tällöin J ei ole neliömäinen eikä siten käännettävissä. Matriisin kääntämiseen voidaan käyttää pseudokäänteismatriisia [GiM85] Redundanttiset asennot Redundanttinen asento (Kuva 4.4) syntyy, kun nivelketju voi yltää lopputulokseen kahdella tai useammalla nivelten asennolla. Näin yleensä onkin. Redundanttisuus johtaa siihen, että J on alimääritetty. Redundanttisuutta voi vähentää asettamalla nivelille jäykkyyksiä [GiM85] tai mukavuus-rajoitteita (comfort) [BPW93]. Nivel pyrkii valitsemaan sen asennon, jossa se on lepoasennossa. Kuva 4.4 Redundanttinen asento 20
26 4.5.5 Singulariteetti Mikäli raaja venytetään suoraksi, sen nivelet osuvat samalle linjalle (kuva 4.5). Tällöin nivelten liike ei ole enää toisistaan riippumattomia. Nivelet ovat tulleet lineaarisesti riippuvaisiksi eli J on singulaarinen [Mac90]. Tällöin menetetään yksi tai useampi vapausaste raaja ei voi liikkua ketjun kiinnityskohtaa lähemmäksi tai poispäin. Vapausasteita menetetään myös silloin, kun mitkä tahansa ketjun osat sattuvat samalle linjalle toistensa kanssa. θ1 p1 θ2 p2 θ3 p3 j3 j2 j1 Kuva 4.5 Raaja lähestyy singulaarista asentoa [Mac90] Singulariteetin voi havaita siitä, että J:n determinantti on 0 (mikäli J on neliömäinen ylipäänsäkään). Singulariteetin voi välttää poikkeuttamalla raajan asentoa hieman täydestä ojennuksesta [WaW92]. Toisaalta pseudokäänteismatriisi tuottaa ratkaisun myös singulaarisille matriiseille. Maciejevski käyttää singulaarisen arvon osiinjakamisen menetelmää (singular value decomposition) singulariteetin välttämiseksi [Mac90]. 21
27 4.5.6 Pahat asennot Pahalla asennolla (ill conditioning) tarkoitetaan sellaista asentoa (Kuva 4.6), joka tuottaa suuria liikkeitä nivelketjuun, kun loppuvaikuttaja liikkuu vain hieman [Mac90]. Pahat asennot aiheutuvat mekanismeista itsestään, eikä niitä voi helposti välttää. Pahimmassa tapauksessa nivelketju oskilloi kahden ratkaisun välillä. Yksi keino välttää niitä, on minimoimalla siirtymiseen tarvittava energia [ZhB94]. Kuva 4.6 Paha asento 22
28 4.6 Käänteiskinematiikan toteutus Jacobin matriisilla Jacobin matriisin rakentaminen Nivelikkään mekanismin n+1:stä ei-prismaattisesta varresta {{0}, {1},, {n}} koostuvan loppuvaikuttajan nopeus V n0 ja kulmanopeus Ω n0 {0}-kehyksestä katsottuna liittyvät nivelten paikallisiin kulmanopeuksiin suhteessa vanhempiin Jacobin matriisin kautta [WaW92]: V Ω n0 n0 bx 1, by1, b = ax1, a y1, a z1 z1,..., b,..., a xn 1 xn 1, b, a yn 1 yn 1, b, a θ x θ x θ x θ xn θ xn θ xn Tässä (a xi, a yi, a zi ) ovat ketjun i:nnen kappaleen x, y, z akselit muunnettuina {0}- kehykseen eli maailmankoordinaatistoon. Ne saadaan suoraan kappaleen i asentomatriisin kolmesta ensimmäisestä rivistä. Lasketaan vektori P = P n - P I, missä P n on ketjun loppuvaikuttaja ja P i on kappaleen i paikka maailmankoordinaatistossa. Lasketaan edelleen kukin vektori b kertomalla a ristitulolla P:n kanssa: b b b xi yi zi = a = a = a xi yi zi ( P n ( P n ( P n P ) i P ) P ) i i Tässä a- ja b-vektorien muodostama matriisi on Jacobin matriisi [WaW92], kuten yhtälö (16) ilmaisee. Sen muoto on 6 x (3*n), kun n on ketjun nivelten lukumäärä. zn 1 zn (18) (19) Algoritmi Lasketaan maalin ja loppuvaikuttajan etäisyyden ja asennon erotus ja derivoidaan ne saadaksemme nopeuden ja kulmanopeuden. Muodostetaan Jacobin matriisi kuten yllä kuvattiin. Lasketaan Jacobin matriisin pseudokäänteismatriisi kaavan (17) mukaan. Nivelten kulmanopeudet θ saadaan kaavan (15) mukaan. Nopeudet integroidaan [Gim85], eli nivelen uusi kiertokulma saadaan kaavasta ϕ = ϕ 0 + ω 0 t, missä ϕ 0 on alkuperäinen kiertokulma, ω 0 on kulmanopeus (eli θ) ja t on simulaatioaskeleen aika [Sep95]. Koko nivelketjulle saadaan uudet asennot kuten kappaleessa selitetään. Laskeminen voidaan tehdä myös pelkillä paikan ja asennon erotuksilla, jolloin 23
29 vastauksena saadaan nivelten asennon eroja. Vastaavasti laskenta voidaan tehdä myös korkeamman kertaluvun derivaatoilla kuten kiihtyvyydellä [Mac90]. Ratkaisualgoritmi C++-syntaksia mukaellen puoliohjelmana: solve_goal_once(goal) { int n = chain.size(); VectorN goal_delta[6]; VectorN joints_delta[n*3]; MatrixMN jacobian[6,n*3]; // Calculate goal and end effector difference vec3 position_delta = goal.get_position() chain[n-1].get_touchpoint_in_world(); mat3 orient_delta = (chain[n-1].get_orientation()).transpose() * goal.get_orientation(); vec3 orientation_delta = matrix_to_euler_angles(orientation_delta); goal_delta = VectorN(position_delta, orientation_delta); Pn = chain[n-1]->get_touchpoint_in_world(); // Construct Jacobian for (int i = 0; i < n; i++) { vec3 axi, ayi, azi, bxi, byi, bzi; mat3 matrix = chain[i]->get_orientation(); ax = matrix.row(1); ay = matrix.row(2); az = matrix.row(3); vec3 P = chain[i]->get_position(); bx = ax ^ (Pn - P); // Crossproduct of ax and (Pn - P) by = ay ^ (Pn - P); bz = az ^ (Pn - P); jacobian.column[i*3] = VectorN(bx,ax); jacobian.column[i*3+1] = VectorN(by,ay); jacobian.column[i*3+2] = VectorN(bz,az); } // Invert Jacobian with pseudoinverse and calculate joint angle deltas joints_delta = jacobian.inverse() * goal_delta; // Apply joint angles to chain for (int i = 0; i < n; i++) { vec3 euler_angles = joints_delta[i*3]; mat3 or_delta = euler_angles_to_matrix(euler_angles); chain[i]->add_orientation(or_delta); } } Iterointi Ratkaisun laskeminen on virhealtista ja paikallista. Mikäli maali on liikkunut liian pitkän matkan, nivelten tuottama asento ei osu maaliin. Tämän takia maalin etsintä joudutaan tekemään iteratiivisesti. Mikäli asento ei ole riittävän lähellä maalia, asennon muutos hylätään, maali puolitetaan ja yritetään osua tähän uuteen puolimaaliin. Mikäli osutaan, jatketaan puolimaalista alkuperäiseen maaliin tai jaetaan maali edelleen rekursiivisesti puoliksi [WaW92]. 24
30 Iteraatioalgoritmi C++-syntaksia mukaellen puoliohjelmana: iterate(goal){ int iterations = 1, sub_iterations = 0; current_goal = final_goal = goal; save_old_joints(); previous_tracking_error_to_final_goal = calculate_tracking_error(final_goal); while (iterations <= iteration_limit) { set_goal_delta(current_goal); solve_goal_once(current_goal); tracking_error = calculate_tracking_error(current_goal); if (tracking_error < tracking_error_epsilon) { // See, if we reached the final goal tracking_error = calculate_tracking_error(final_goal); if (tracking_error < tracking_error_epsilon) { // Achieved final goal. return; } // Still needs iterations if (tracking_error <= previous_tracking_errorto_final_goal) { // Iteration neared to final goal. // Continue iteration from this point to final goal previous_tracking_error_to_final_goal = tracking_error; iterations++; sub_iterations = 0; save_old_joints(); current_goal = final_goal; } else { // Iteration did not near to final goal. // Retract joints and halve goal. sub_iterations++; retract_joints(); halve_goal(current_goal); if (sub_iterations > sub_iteration_limit) { // Subiteration limit exceeded. No point to continue... iterations += iteration_limit; sub_iterations = 0; } } } else { // Did not reach goal. Retract and halve goal. sub_iterations++; retract_joints(); halve_goal(current_goal); if (sub_iterations > sub_iteration_limit * iteration_limit) { // Iteration limits exceeded. No point to continue iterations++; sub_iterations = 0; } } } // Iteration limit exceeded, goal not reached. Might retract joints. } 25
31 4.7 Käänteiskinematiikka minimointiongelmana 1 Zhao ja Badler esittävät käänteiskinematiikan minimointiongelmana ja ratkaisevat ongelman epälineaarisella ohjelmoinnilla [ZhB94]. Heidän tekniikkansa on käytössä ihmishahmojen interaktiivisessa manipuloinnissa Jack-ohjelmistossa [Jack]. Järjestelmässä maalia ja loppuvaikuttajaa käsitellään erillisinä toisistaan. Rajoitteita voi olla useita yhtä aikaa ja ne ratkaistaan painojensa mukaisissa suhteissa. Nivelillä voi olla liikerajoitteita ja jäykkyys Loppuvaikuttajan kuvaaminen Loppuvaikuttajan tila kuvataan yhdeksänulotteisena (9D) vektorina e, mikä koostuu paikka-, suunta- ja ylöspäinvektoreista. Periaatteessa riittää tallettaa paikka ja suuntakulmat, kuten kappaleessa 4.1 on esitetty. Loppuvaikuttaja voidaan asettaa tavoitteiden kuten paikan, suunnan tai kiertokulman tai näiden yhdistelmien alaisiksi. Loppuvaikuttajan liike on samalla tavalla nivelistä riippuvaista kuin kappaleessa Riippuvuutta kuvataan Jacobin matriisilla e e = θ θ1 e e θ 2 θ n Merkitään v = loppuvaikuttajan (yksikkö)suuntavektori, r = loppuvaikuttajan paikka, u = nivelen kiertymäakseli. Koska ihmisellä on vain kiertoliikkeeseen kykeneviä niveliä, niin järjestelmä ei käsittele mäntämäisiä niveliä. Ne on kuitenkin tarvittaessa kiertoniveliä helpompi toteuttaa Maalin kuvaaminen Maali kuvataan potentiaalifunktiona, jonka lähtöalue pitää olla sama kuin loppuvaikuttajan maalialue. Potentiaalifunktio mittaa loppuvaikuttajan etäisyyttä (paikka tai asento) maalista ei-negatiivisena reaalilukuna. Merkitään potentiaalifunktiota P(x):llä. Funktion gradienttia merkitään x P(x):llä ja se muodostetaan vektorin x osittaisderivaatoista. Gradientti on useamman muuttujan skalaarifunktion muutoksen suuruutta ilmaiseva vektorifunktio. Jos funktio f on differentioituva, niin f kasvaa nopeimmin gradientin osoittamaan suuntaan [Gro95]. 1 Kappale 4.7 perustuu Zhaon ja Badlerin lähteeseen [ZhB94] milloin ei muuta ilmaista. 26
32 4.7.3 Maalityypit Maaleina esitetään paikka, asento, paikka ja asento, tähtäys, viiva, taso ja puoliavaruus. Paikkamaali määritellään paikkana P kolmiulotteisessa avaruudessa. Sen lähtöalue on R 3. Potentiaalifunktio on P(r) = (p - r) 2 ja gradientti r P(r) = 2(p - r). Asentomaali on pari ortonormaaleja vektoreita {x g, y g }, missä alaviite g viittaa maaliin (goal). Lähtöalue on tällöin S 2 *S 2, missä S 2 on 3D yksikkövektori. Potentiaalifunktio on P(x e, y e ) = c 2 dx (x g - x e ) 2 + c 2 dy (y g - y e ) 2, missä alaviite e viittaa loppuvaikuttajaan (end effector). Tässä c d on skaalaustekijä, jolla yksi pituusyksikkö saadaan vastaamaan d- asteista kulmaa. Merkitään c d = 360/(2πd). Gradientti on xe P(x e, y e ) = 2c 2 dx (x e x g ) ja ye P(x e, y e ) = 2c 2 dy (y e y g ). Asentomaalissa voidaan jättää toinen maali (suunta- tai ylöspäinvektori) rajoittamattomaksi asettamalla vastaava c d nollaksi. Edelliset maalit voidaan yhdistää, jolloin niiden vaikutus potentiaalifunktioon painotetaan. Vastaavalla tavalla kuin edellä määritellään muutkin maalit. Tähtäysmaalissa esimerkiksi ihminen saadaan katsomaan johonkin pisteeseen. Viivamaalissa loppuvaikuttajan pitää osua jollekin viivalle, tasomaalissa tasolle. Puoliavaruutta voidaan käyttää esimerkiksi törmäysten välttämiseen, rajoittamalla loppuvaikuttaja vaikkapa seinän toiselle puolelle Tavoitefunktio Loppuvaikuttajan etäisyyttä maaliin nykyisillä nivelten asennoilla θ kutsutaan tavoitefunktioksi ja se merkitään G(θ) = P(e(θ)). Haluttaisiin ratkaista yhtälö G(θ) = 0. Tämä ei ole kuitenkaan aina mahdollista, koska maali ei ole välttämättä saavutettavissa. Yritetään minimoida G(θ). Suurella osalla nivelistä on liikerajoitteita pienin ja suurin kulma, johon nivel voi taipua. Nämä rajoitteet ilmaistaan lineaarisina epäyhtälöinä. Esitetään ongelma epälineaarisena ohjelmointiongelmana, jossa on lineaarisia rajoitteita muuttujina: minimoi G(θ), kun a T iθ = b i, i = 1,2,,l (20) a T iθ b i, i = l+1,l+2,,k, missä a i, i=1,2,,k ovat sarakevektoreita, joiden ulottuvuus on sama kuin θ:jen. Yhtälöt mahdollistavat lineaarisia suhteita nivelten välillä, kuten olkapäässä. Epäyhtälöt mahdollistavat pienimmän ja suurimman kulman esittämisen nivelille. 27
33 4.7.5 Ratkaisun laskenta Epälineaarisen ohjelmoinnin avulla löydetään useimmiten paikallinen minimi. Tämä on yleensä riittävä. Mikäli asento ei ole tyydyttävä, jokin toinen paikallinen minimi voidaan saavuttaa toisella yrittämällä alkuasentoa hieman muuttamalla. Paikalliseen minimiin on tyytyminen myös siksi, että ohjelma pysyisi interaktiivisena. Ongelma ratkaistaan Davidonin muuttuvan metriikan menetelmällä. Menetelmässä käytetään BFGS (Broyden, Fletcher, Goldfarb, Shanno) toisen asteen ylläpitosääntöä. Muuttujien lineaariset rajoitteet käsitellään Rosenin projektiomenetelmällä [BPW93]. Laskemisessa käytetään hyväksi potentiaalifunktiota sekä sen gradienttia. Laskenta on lineaarisesti riippuvaista nivelten lukumäärästä ja nivelketjulle asetettujen maalien lukumäärästä. Ratkaisu löytyy iteratiivisesti. Jokaisella iteraatiolla minimiä etsitään tietystä suunnasta. Gradientti otetaan huomioon useammalta iteraariokierrokselta. Menetelmä lähestyy aina monotonisesti minimiä. Menetelmä on globaalisti konvergoiva eli se löytää aina jonkin (paikallisen) ratkaisun oli lähtöpiste mikä tahansa Useat yhtäaikaiset rajoitteet Yleensä käänteiskinematiikka on ratkaistu evoluutiomaisesti alkuasennosta lähtien. Tämä algoritmi löytää vastauksen koko hakuavaruudesta. Tämän vuoksi tarvitaan useita yhtäaikaisia rajoitteita. Muuten esimerkiksi kyynärpää voi heittelehtiä villisti sivulle, kun kämmentä liikutetaan. Tavoitefunktio G(θ) on ei-negatiivinen, joten useat yhtäaikaiset rajoitteet voidaan ratkaista minimoimalla kaikkien maalien G kaikki ( θ ) = i= 1 tavoitefunktioiden summa m w G ( θ ), i i (21) missä m on rajoitteiden lukumäärä, i viittaa rajoitteeseen ja w i on negatiivinen painokerroin. G kaikki (θ) korvaa G(θ):n kaavassa
34 5. Nivelikkäät mekanismit animaatio-ohjelmistossa 5.1 TrueSpace Truespace on Caligari-yhtiön [Cal97] kaupallisesti saatavilla oleva kolmiulotteinen animaatio-ohjelmisto Microsoft Windows-ympäristöön. Siinä on animaation ohjaamiseen toteutettu muun muassa käänteiskinematiikka ja suora dynamiikka. Ohjelmassa on intuitiivinen käyttöliittymä ja ohjelman käyttö on kohtuullisen helppo oppia verrattuna useisiin ammattilaisten käyttöön tarkoitettuihin ohjelmistoihin kuten 3D Studio Max tai Alias/Wavefront. Ohjelmasta jaetaan Internetissä tutustumisversiota, jonka perusteella on seuraavassa esitetty nivelikkään mekanismin käyttö ja toteutus ohjelmassa. Esittelyohjelma on ominaisuuksiltaan kuten kaupallinen tuote. Ainoastaan animaatiomaailman tallentaminen on estetty ja renderöitävien animaatioiden kuvakoko on rajattu. 5.2 Nivelikkäiden mekanismien tekeminen Nivelen lisäys ja asennon muutos Ohjelmassa voi muodostaa nivelikkäitä mekanismeja. Osoitetaan ensin lapsikappale, valitaan nivelen tyyppi ja osoitetaan isäntäkappale. Uusi nivel muodostetaan näiden kappaleiden yhtymäkohtaan. Kuvassa 5.1 on ohjelman käyttöliittymä sekä yksi nivelikäs kappale. Nivelikästä kappaletta voi ohjata tarttumalla lapsikappaleeseen ja vetämällä sitä. Ohjaus toteutuu kappaleeseen kohdistuvana voimavektorina, joka ilmaistaan graafisesti ruudulla keltaisena viivana Nivelhierarkia Kappaleita lisäämällä voi muodostaa ketjun tai nivelhierarkian. Hierarkiassa on jokin kappale, joka on kiinnitetty maailmaan. Kiinnitetyksi kappaleeksi voi valita minkä tahansa kappaleen hierarkiasta ja sitä voi vaihtaa. Aliketjun saa tällöin tarkkaan kontrolliin ilman, että koko hierarkian asento muuttuisi. Monimutkaisia kappaleita saa rakennettua myös siten, että samassa kappaleessa on useita kinemaattisia osia ja siten useita kiinnitettyjä kappaleita. Ketjua voi ohjata tarttumalla mihin tahansa kappaleeseen ketjussa ja vetämällä kappaletta. Nivelketjun välissä olevien kappaleiden asento lasketaan käänteiskinematiikalla. 29
35 Kuva 5.1 Truespace käyttöliittymä ja nivel Nivelten ominaisuudet Erilaisia niveltyyppejä ovat 0d - kiinteä liitos, 1d mäntäliitos, 1d saranaliitos, näiden yhdistelmä, 2d pallonivel, 2d tasoliitos sekä vapaasti määriteltävä liitos. Nivelen paikkaa ja ominaisuuksia voi muuttaa manipuloimalla suoraan niveltä. Nivelen ominaisuudet kuvataan ruudulla graafisesti ja niitä voi muuttaa suoraan hiirellä käsittelemällä tai dialogista. Kuvan 5.2 vasemman puoleisessa kuvassa on nivelen jäykkyyttä kasvatettu. Myös nivelen liikerataa voi rajoittaa. Saranaliitos voi olla välillä ±360 ja mäntäliitos ±10 yksikköä suhteessa nivellinkkiin. Nivelestä kappaleen keskipisteeseen on linkki, joka on nivelen pyörimisakseli (roll). Muut akselit ovat tätä kohtisuorassa kuvan 5.2 oikealla puolella olevassa pallonivelessä Animointi Ohjelmassa animointi toteutetaan avainkuvatekniikalla. Kappaleelle asetetaan käänteiskinematiikalla jokin alkuasento johonkin tiettyyn animaation kellonaikaan ja tämä asento nauhoitetaan. Samoin asetetaan loppuasento. Animaatio voidaan esikatsella ruudulla ennen renderöintiä. Esikatselu voi olla toteutettu joko viivagrafiikalla tai Gouraud-varjostuksella. Animaation välikuvissa nivelhierarkian asento lasketaan 30
Luento 3: 3D katselu. Sisältö
Tietokonegrafiikan perusteet T-.43 3 op Luento 3: 3D katselu Lauri Savioja Janne Kontkanen /27 3D katselu / Sisältö Kertaus: koordinaattimuunnokset ja homogeeniset koordinaatit Näkymänmuodostus Kameran
KJR-C1001 Statiikka ja dynamiikka. Luento Susanna Hurme
KJR-C1001 Statiikka ja dynamiikka Luento 22.3.2016 Susanna Hurme Päivän aihe: Rotaatioliikkeen kinematiikka: kulmanopeus ja -kiihtyvyys (Kirjan luvut 12.7, 16.3) Osaamistavoitteet Osata analysoida jäykän
9. Vektorit. 9.1 Skalaarit ja vektorit. 9.2 Vektorit tasossa
9. Vektorit 9.1 Skalaarit ja vektorit Skalaari on koon tai määrän mitta. Tyypillinen esimerkki skalaarista on massa. Lukumäärä on toinen hyvä esimerkki skalaarista. Vektorilla on taas suuruus ja suunta.
KJR-C1001 Statiikka ja dynamiikka. Luento Susanna Hurme
KJR-C1001 Statiikka ja dynamiikka Luento 29.3.2016 Susanna Hurme Yleisen tasoliikkeen kinematiikka: absoluuttinen ja suhteellinen liike, rajoitettu liike (Kirjan luvut 16.4-16.7) Osaamistavoitteet Ymmärtää,
Numeeriset menetelmät
Numeeriset menetelmät Luento 3 Ti 13.9.2011 Timo Männikkö Numeeriset menetelmät Syksy 2011 Luento 3 Ti 13.9.2011 p. 1/37 p. 1/37 Epälineaariset yhtälöt Newtonin menetelmä: x n+1 = x n f(x n) f (x n ) Sekanttimenetelmä:
Vektorien pistetulo on aina reaaliluku. Esimerkiksi vektorien v = (3, 2, 0) ja w = (1, 2, 3) pistetulo on
13 Pistetulo Avaruuksissa R 2 ja R 3 on totuttu puhumaan vektorien pituuksista ja vektoreiden välisistä kulmista. Kuten tavallista, näiden käsitteiden yleistäminen korkeampiulotteisiin avaruuksiin ei onnistu
6 MATRIISIN DIAGONALISOINTI
6 MATRIISIN DIAGONALISOINTI Ortogonaaliset matriisit Neliömatriisi A on ortogonaalinen (eli ortogonaalimatriisi), jos sen alkiot ovat reaalisia ja A - = A T Muistutus: vektorien a ja b pistetulo (skalaaritulo,
Matematiikan tukikurssi
Matematiikan tukikurssi Kurssikerta 8 1 Suunnattu derivaatta Aluksi tarkastelemme vektoreita, koska ymmärrys vektoreista helpottaa alla olevien asioiden omaksumista. Kun liikutaan tasossa eli avaruudessa
MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 2 / vko 45
MS-A0003/A0005 Matriisilaskenta Laskuharjoitus / vko 5 Tehtävä 1 (L): Hahmottele kompleksitasoon ne pisteet, jotka toteuttavat a) z 3 =, b) z + 3 i < 3, c) 1/z >. Yleisesti: ehto z = R, z C muodostaa kompleksitasoon
MS-A0003/A0005 Matriisilaskenta Malliratkaisut 4 / vko 47
MS-A3/A5 Matriisilaskenta Malliratkaisut 4 / vko 47 Tehtävä 1 (L): Oletetaan, että AB = AC, kun B ja C ovat m n-matriiseja. a) Näytä, että jos A on kääntyvä, niin B = C. b) Seuraako yhtälöstä AB = AC yhtälö
KJR-C1001 Statiikka ja dynamiikka. Luento Susanna Hurme
KJR-C1001 Statiikka ja dynamiikka Luento 24.2.2016 Susanna Hurme Päivän aihe: Voiman momentin käsite (Kirjan luvut 4.1-4.6) Mikä on voiman momentti? Määritetään momentti skalaari- ja vektorimuodossa Opitaan
MS-A0204 Differentiaali- ja integraalilaskenta 2 (ELEC2) Luento 7: Pienimmän neliösumman menetelmä ja Newtonin menetelmä.
MS-A0204 Differentiaali- ja integraalilaskenta 2 (ELEC2) Luento 7: Pienimmän neliösumman menetelmä ja Newtonin menetelmä. Antti Rasila Matematiikan ja systeemianalyysin laitos Aalto-yliopisto Kevät 2016
Talousmatematiikan perusteet: Luento 10. Lineaarikuvaus Matriisin aste Determinantti Käänteismatriisi
Talousmatematiikan perusteet: Luento 10 Lineaarikuvaus Matriisin aste Determinantti Käänteismatriisi Lineaarikuvaus Esim. Yritys tekee elintarviketeollisuuden käyttämää puolivalmistetta, jossa käytetään
Ratkaisuehdotukset LH 7 / vko 47
MS-C34 Lineaarialgebra, II/7 Ratkaisuehdotukset LH 7 / vko 47 Tehtävä : Olkoot M R symmetrinen ja positiividefiniitti matriisi (i) Näytä, että m > ja m > (ii) Etsi Eliminaatiomatriisi E R siten, että [
Neliömatriisi A on ortogonaalinen (eli ortogonaalimatriisi), jos sen alkiot ovat reaalisia ja
7 NELIÖMATRIISIN DIAGONALISOINTI. Ortogonaaliset matriisit Neliömatriisi A on ortogonaalinen (eli ortogonaalimatriisi), jos sen alkiot ovat reaalisia ja A - = A T () Muistutus: Kokoa n olevien vektorien
3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä
3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä Lineaarinen m:n yhtälön yhtälöryhmä, jossa on n tuntematonta x 1,, x n on joukko yhtälöitä, jotka ovat muotoa a 11 x 1 + + a 1n x n = b 1 a 21
Palauta jokainen funktio-tiedosto. Esitä myös funktiot vastauspaperissasi.
Tehtävä 1 Kirjoita neljä eri funktiota (1/2 pistettä/funktio): 1. Funktio T tra saa herätteenä 3x1-kokoisen paikkavektorin p. Se palauttaa 4x4 muunnosmatriisin, johon sijoitettu p:n koordinaattien mukainen
KJR-C1001: Statiikka L2 Luento : voiman momentti ja voimasysteemit
KJR-C1001: Statiikka L2 Luento 21.2.2018: voiman momentti ja voimasysteemit Apulaisprofessori Konetekniikan laitos Luennon osaamistavoitteet Tämän päiväisen luennon jälkeen opiskelija Pystyy muodostamaan,
ax + y + 2z = 0 2x + y + az = b 2. Kuvassa alla on esitetty nesteen virtaus eräässä putkistossa.
BM20A5800 Funktiot, lineaarialgebra ja vektorit Harjoitus 7, Syksy 206 Tutkitaan yhtälöryhmää x + y + z 0 2x + y + az b ax + y + 2z 0 (a) Jos a 0 ja b 0 niin mikä on yhtälöryhmän ratkaisu? Tulkitse ratkaisu
Luento 4: Kiertomatriisi
Maa-57.301 Fotogrammetrian yleiskurssi (P. Rönnholm / H. Haggrén, 28.9.2004) Luento 4: Kiertomatriisi Mitä pitäisi oppia? ymmärtää, että kiertomatriisilla voidaan kiertää koordinaatistoa ymmärtää, että
Yhtälöryhmä matriisimuodossa. MS-A0004/A0006 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.
2. MS-A4/A6 Matriisilaskenta 2. Nuutti Hyvönen, c Riikka Kangaslampi Matematiikan ja systeemianalyysin laitos Aalto-yliopisto 5.9.25 Tarkastellaan esimerkkinä lineaarista yhtälöparia { 2x x 2 = x + x 2
Tik-111.5450 Tietokoneanimaatio
Tik-111.5450 Tietokoneanimaatio 3. Asennon (pyörähdysliikkeen) esittäminen ja interpolointi 3.10.05 - Tassu Animaatio 2005 - luento 3 1 Sisältö matriisiesitys, matriisin komponenttivektorien merkitys perusakselien
Algoritmit 2. Luento 13 Ti Timo Männikkö
Algoritmit 2 Luento 13 Ti 30.4.2019 Timo Männikkö Luento 13 Simuloitu jäähdytys Merkkijonon sovitus Horspoolin algoritmi Ositus ja rekursio Rekursion toteutus Algoritmit 2 Kevät 2019 Luento 13 Ti 30.4.2019
Luku 8. Aluekyselyt. 8.1 Summataulukko
Luku 8 Aluekyselyt Aluekysely on tiettyä taulukon väliä koskeva kysely. Tyypillisiä aluekyselyitä ovat, mikä on taulukon välin lukujen summa tai pienin luku välillä. Esimerkiksi seuraavassa taulukossa
Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti
Luku 6 Dynaaminen ohjelmointi Dynaamisessa ohjelmoinnissa on ideana jakaa ongelman ratkaisu pienempiin osaongelmiin, jotka voidaan ratkaista toisistaan riippumattomasti. Jokaisen osaongelman ratkaisu tallennetaan
Osoita, että kaikki paraabelit ovat yhdenmuotoisia etsimällä skaalauskuvaus, joka vie paraabelin y = ax 2 paraabelille y = bx 2. VASTAUS: , b = 2 2
8. Geometriset kuvaukset 8.1. Euklidiset kuvaukset 344. Esitä muodossa x = Ax + b se avaruuden E 3 peilauskuvaus, jonka symmetriatasona on x 1 3x + x 3 = 6. A = 1 3 6 6 3, b = 1 1 18. 3 6 6 345. Tason
Lineaarinen yhtälöryhmä
Lineaarinen yhtälöryhmä 1 / 39 Lineaarinen yhtälö Määritelmä 1 Lineaarinen yhtälö on muotoa a 1 x 1 + a 2 x 2 + + a n x n = b, missä a i, b R, i = 1,..., n ovat tunnettuja ja x i R, i = 1,..., n ovat tuntemattomia.
DYNAMIIKKA II, LUENTO 5 (SYKSY 2015) Arttu Polojärvi
DYNAMIIKKA II, LUENTO 5 (SYKSY 2015) Arttu Polojärvi LUENNON SISÄLTÖ Kertausta edelliseltä luennolta: Suhteellisen liikkeen nopeuden ja kiihtyvyyden yhtälöt. Jäykän kappaleen partikkelin liike. Jäykän
110. 111. 112. 113. 114. 4. Matriisit ja vektorit. 4.1. Matriisin käsite. 4.2. Matriisialgebra. Olkoon A = , B = Laske A + B, 5 14 9, 1 3 3
4 Matriisit ja vektorit 4 Matriisin käsite 42 Matriisialgebra 0 2 2 0, B = 2 2 4 6 2 Laske A + B, 2 A + B, AB ja BA A + B = 2 4 6 5, 2 A + B = 5 9 6 5 4 9, 4 7 6 AB = 0 0 0 6 0 0 0, B 22 2 2 0 0 0 6 5
Inversio-ongelmien laskennallinen peruskurssi Luento 7 8
Inversio-ongelmien laskennallinen peruskurssi Luento 7 8 Kevät 2011 1 Iteratiivisista menetelmistä Tähän mennessä on tarkasteltu niin sanottuja suoria menetelmiä, joissa (likimääräinen) ratkaisu saadaan
Algoritmit 2. Luento 2 Ke Timo Männikkö
Algoritmit 2 Luento 2 Ke 15.3.2017 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2017 Luento
3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä
1 3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä Lineaarinen m:n yhtälön yhtälöryhmä, jossa on n tuntematonta x 1,, x n on joukko yhtälöitä, jotka ovat muotoa a 11 x 1 + + a 1n x n = b 1 a
3 Suorat ja tasot. 3.1 Suora. Tässä luvussa käsitellään avaruuksien R 2 ja R 3 suoria ja tasoja vektoreiden näkökulmasta.
3 Suorat ja tasot Tässä luvussa käsitellään avaruuksien R 2 ja R 3 suoria ja tasoja vektoreiden näkökulmasta. 3.1 Suora Havaitsimme skalaarikertolaskun tulkinnan yhteydessä, että jos on mikä tahansa nollasta
Yhtälöryhmät 1/6 Sisältö ESITIEDOT: yhtälöt
Yhtälöryhmät 1/6 Sisältö Yhtälöryhmä Yhtälöryhmässä on useita yhtälöitä ja yleensä myös useita tuntemattomia. Tavoitteena on löytää tuntemattomille sellaiset arvot, että kaikki yhtälöt toteutuvat samanaikaisesti.
Tekijä Pitkä matematiikka
K1 Tekijä Pitkä matematiikka 5 7..017 a) 1 1 + 1 = 4 + 1 = 3 = 3 4 4 4 4 4 4 b) 1 1 1 = 4 6 3 = 5 = 5 3 4 1 1 1 1 1 K a) Koska 3 = 9 < 10, niin 3 10 < 0. 3 10 = (3 10 ) = 10 3 b) Koska π 3,14, niin π
4. Lasketaan transienttivirrat ja -jännitteet kuvan piiristä. Piirielimien arvot ovat C =
BMA58 Funktiot, lineaarialgebra ja vektorit Harjoitus 6, Syksy 5. Olkoon [ 6 6 A =, B = 4 [ 3 4, C = 4 3 [ 5 Määritä matriisien A ja C ominaisarvot ja ominaisvektorit. Näytä lisäksi että matriisilla B
, on säännöllinen 2-ulotteinen pinta. Määrää T x0 pisteessä x 0 = (0, 1, 1).
HY / Matematiikan ja tilastotieteen laitos Vektorianalyysi II, syksy 017 Harjoitus 4 Ratkaisuehdotukset 4.1. Osoita, että tasa-arvojoukko S F (0), F : R 3 R, F (x) = 3x 1 x 3 + e x + x e x 3, on säännöllinen
Matematiikan tukikurssi
Matematiikan tukikurssi Kurssikerta 6 varuusintegraali iemmin laskimme yksiulotteisia integraaleja b a f (x)dx, jossa integrointialue on x-akselin väli [a, b]. Lisäksi laskimme kaksiulotteisia integraaleja
A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.
Esimerkki otteluvoiton todennäköisyys A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä. Yksittäisessä pelissä A voittaa todennäköisyydellä p ja B todennäköisyydellä q =
Insinöörimatematiikka D
Insinöörimatematiikka D M. Hirvensalo mikhirve@utu.fi V. Junnila viljun@utu.fi Matematiikan ja tilastotieteen laitos Turun yliopisto 2015 M. Hirvensalo mikhirve@utu.fi V. Junnila viljun@utu.fi Luentokalvot
Matriisilaskenta, LH4, 2004, ratkaisut 1. Hae seuraavien R 4 :n aliavaruuksien dimensiot, jotka sisältävät vain
Matriisilaskenta LH4 24 ratkaisut 1 Hae seuraavien R 4 :n aliavaruuksien dimensiot jotka sisältävät vain a) Kaikki muotoa (a b c d) olevat vektorit joilla d a + b b) Kaikki muotoa (a b c d) olevat vektorit
3.3 Paraabeli toisen asteen polynomifunktion kuvaajana. Toisen asteen epäyhtälö
3.3 Paraabeli toisen asteen polynomifunktion kuvaajana. Toisen asteen epäyhtälö Yhtälön (tai funktion) y = a + b + c, missä a 0, kuvaaja ei ole suora, mutta ei ole yhtälökään ensimmäistä astetta. Funktioiden
A B = (1, q, q 2 ) (2, 0, 2) = 2 2q q 2 = 0 q 2 = 1 q = ±1 A(±1) = (1, ±1, 1) A(1) A( 1) = (1, 1, 1) (1, 1, 1) = A( 1) A(1) A( 1) = 1
Mapu I Viikko 4 tehtävä malli Millä q:n arvoilla vektori A(q) (, q, q ) on kohtisuora vektorin B (, 0, ) kanssa? Ovatko A:n eri ratkaisut keskenään kohtisuoria? Jos eivät, määrää niiden välinen kulma!
MAB3 - Harjoitustehtävien ratkaisut:
MAB - Harjoitustehtävien ratkaisut: Funktio. Piirretään koordinaatistoakselit ja sijoitetaan pisteet:. a) Funktioiden nollakohdat löydetään etsimällä kuvaajien ja - akselin leikkauspisteitä. Funktiolla
Talousmatematiikan perusteet: Luento 11. Lineaarikuvaus Matriisin aste Käänteismatriisi
Talousmatematiikan perusteet: Luento 11 Lineaarikuvaus Matriisin aste Käänteismatriisi Viime luennolla Käsittelimme matriisien peruskäsitteitä ja laskutoimituksia Vakiolla kertominen, yhteenlasku ja vähennyslasku
MS-A0204 Differentiaali- ja integraalilaskenta 2 (ELEC2) Luento 6: Ääriarvojen luokittelu. Lagrangen kertojat.
MS-A0204 Differentiaali- ja integraalilaskenta 2 (ELEC2) Luento 6: Ääriarvojen luokittelu. Lagrangen kertojat. Antti Rasila Matematiikan ja systeemianalyysin laitos Aalto-yliopisto Kevät 2016 Antti Rasila
w + x + y + z =4, wx + wy + wz + xy + xz + yz =2, wxy + wxz + wyz + xyz = 4, wxyz = 1.
Kotitehtävät, tammikuu 2011 Vaikeampi sarja 1. Ratkaise yhtälöryhmä w + x + y + z =4, wx + wy + wz + xy + xz + yz =2, wxy + wxz + wyz + xyz = 4, wxyz = 1. Ratkaisu. Yhtälöryhmän ratkaisut (w, x, y, z)
Numeeriset menetelmät TIEA381. Luento 5. Kirsi Valjus. Jyväskylän yliopisto. Luento 5 () Numeeriset menetelmät / 28
Numeeriset menetelmät TIEA381 Luento 5 Kirsi Valjus Jyväskylän yliopisto Luento 5 () Numeeriset menetelmät 3.4.2013 1 / 28 Luennon 5 sisältö Luku 4: Ominaisarvotehtävistä Potenssiinkorotusmenetelmä QR-menetelmä
Numeeriset menetelmät
Numeeriset menetelmät Luento 5 Ti 20.9.2011 Timo Männikkö Numeeriset menetelmät Syksy 2011 Luento 5 Ti 20.9.2011 p. 1/40 p. 1/40 Choleskyn menetelmä Positiivisesti definiiteillä matriiseilla kolmiohajotelma
Vektoreiden virittämä aliavaruus
Vektoreiden virittämä aliavaruus Määritelmä Oletetaan, että v 1, v 2,... v k R n. Näiden vektoreiden virittämä aliavaruus span( v 1, v 2,... v k ) tarkoittaa kyseisten vektoreiden kaikkien lineaarikombinaatioiden
Likimääräisratkaisut ja regularisaatio
Luku 3 Likimääräisratkaisut ja regularisaatio Käytännön inversio-ongelmissa annettu data y ei aina ole tarkkaa, vaan sisältää häiriöitä. Tuntemattomasta x on annettu häiriöinen data y F (x + }{{}}{{} ε.
1 Matriisit ja lineaariset yhtälöryhmät
1 Matriisit ja lineaariset yhtälöryhmät 11 Yhtälöryhmä matriisimuodossa m n-matriisi sisältää mn kpl reaali- tai kompleksilukuja, jotka on asetetettu suorakaiteen muotoiseksi kaavioksi: a 11 a 12 a 1n
Derivaatta: funktion approksimaatio lineaarikuvauksella.
Viikko 5 Tällä viikolla yleistetään R 2 :n ja R 3 :n vektorialgebran peruskäsitteet n-ulotteiseen avaruuteen R n, ja määritellään lineaarikuvaus. Tarkastellaan funktioita, joiden määrittelyjoukko on n-ulotteisen
Aalto-yliopiston perustieteiden korkeakoulu Matematiikan ja systeemianalyysin laitos
Aalto-yliopiston perustieteiden korkeakoulu Matematiikan ja systeemianalyysin laitos Malinen/Vesanen MS-A0205/6 Differentiaali- ja integraalilaskenta 2, kevät 2017 Laskuharjoitus 4A (Vastaukset) alkuviikolla
Tietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Kurssin sisältö pääpiirteittäin Tarvittavat pohjatiedot Avainsanat Abstraktio Esimerkkiohjelman tehtäväkuvaus Abstraktion käyttö tehtävässä Abstrakti tietotyyppi Hyötyjä ADT:n
Matematiikka B2 - Avoin yliopisto
6. elokuuta 2012 Opetusjärjestelyt Luennot 9:15-11:30 Harjoitukset 12:30-15:00 Tentti Kurssin sisältö (1/2) Matriisit Laskutoimitukset Lineaariset yhtälöryhmät Gaussin eliminointi Lineaarinen riippumattomuus
Yhtälöryhmä matriisimuodossa. MS-A0007 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.
2. MS-A000 Matriisilaskenta 2. Nuutti Hyvönen, c Riikka Kangaslampi Matematiikan ja systeemianalyysin laitos Aalto-yliopisto 2..205 Tarkastellaan esimerkkinä lineaarista yhtälöparia { 2x x 2 = x x 2 =
A = a b B = c d. d e f. g h i determinantti on det(c) = a(ei fh) b(di fg) + c(dh eg). Matriisin determinanttia voi merkitä myös pystyviivojen avulla:
11 Determinantti Neliömatriisille voidaan laskea luku, joka kertoo muun muassa, onko matriisi kääntyvä vai ei Tätä lukua kutsutaan matriisin determinantiksi Determinantilla on muitakin sovelluksia, mutta
s = 11 7 t = = 2 7 Sijoittamalla keskimmäiseen yhtälöön saadaan: k ( 2) = 0 2k = 8 k = 4
BM0A5800 Funktiot, lineaarialgebra ja vektorit Harjoitus 5, Syksy 05. (a) i. Jotta vektori c sijaitsisi a:n ja b:n virittämällä tasolla, c on voitava esittää a:n ja b:n lineaarikombinaationa. c ta + sb
3.2 Matriisien laskutoimitukset. 3.2 Matriisien laskutoimitukset. 3.2 Matriisien laskutoimitukset. 3.2 Matriisien laskutoimitukset
32 Idea: Lineaarikuvausten laskutoimitusten avulla määritellään vastaavat matriisien laskutoimitukset Vakiolla kertominen ja summa Olkoon t R ja A, B R n m Silloin ta, A + B R n m ja määritellään ta ta
3.2 Matriisien laskutoimitukset. 3.2 Matriisien laskutoimitukset. 3.2 Matriisien laskutoimitukset. 3.2 Matriisien laskutoimitukset. Olkoot A 2 := AA =
3 3 Olkoot 9 8 B 7 6 ja A 5 4 [ 3 4 Nyt A + B, AB ja BB eivät ole mielekkäitä (vastaavilla lineaarikuvauksilla menisivät dimensiot solmuun tällaisista yhdistelmistä) Kuitenkin voidaan laskea BA ja 9( )
1 Ominaisarvot ja ominaisvektorit
1 Ominaisarvot ja ominaisvektorit Olkoon A = [a jk ] n n matriisi. Tarkastellaan vektoriyhtälöä Ax = λx, (1) 1 missä λ on luku. Sellaista λ:n arvoa, jolla yhtälöllä on ratkaisu x 0, kutsutaan matriisin
Diplomi-insinööri- ja arkkitehtikoulutuksen yhteisvalinta 2017 Insinöörivalinnan matematiikan koe , Ratkaisut (Sarja A)
Diplomi-insinööri- ja arkkitehtikoulutuksen yhteisvalinta 017 Insinöörivalinnan matematiikan koe 30..017, Ratkaisut (Sarja A) 1. a) Lukujen 9, 0, 3 ja x keskiarvo on. Määritä x. (1 p.) b) Mitkä reaaliluvut
Kanta ja Kannan-vaihto
ja Kannan-vaihto 1 Olkoon L vektoriavaruus. Äärellinen joukko L:n vektoreita V = { v 1, v 2,..., v n } on kanta, jos (1) Jokainen L:n vektori voidaan lausua v-vektoreiden lineaarikombinaationa. (Ts. Span(V
JAKSO 2 KANTA JA KOORDINAATIT
JAKSO 2 KANTA JA KOORDINAATIT Kanta ja dimensio Tehtävä Esittele vektoriavaruuden kannan määritelmä vapauden ja virittämisen käsitteiden avulla ja anna vektoriavaruuden dimension määritelmä Esittele Lause
Tietorakenteet, laskuharjoitus 7, ratkaisuja
Tietorakenteet, laskuharjoitus, ratkaisuja. Seuraava kuvasarja näyttää B + -puun muutokset lisäysten jälkeen. Avaimet ja 5 mahtuvat lehtisolmuihin, joten niiden lisäys ei muuta puun rakennetta. Avain 9
Kannan vektorit siis virittävät aliavaruuden, ja lisäksi kanta on vapaa. Lauseesta 7.6 saadaan seuraava hyvin käyttökelpoinen tulos:
8 Kanta Tässä luvussa tarkastellaan aliavaruuden virittäjävektoreita, jotka muodostavat lineaarisesti riippumattoman jonon. Merkintöjen helpottamiseksi oletetaan luvussa koko ajan, että W on vektoreiden
Insinöörimatematiikka D, laskuharjoituksien esimerkkiratkaisut
Insinöörimatematiikka D, 29.3.2016 4. laskuharjoituksien esimerkkiratkaisut 1. Olkoon u (4,0,4,2) ja v ( 1,1,3,5) vektoreita vektoriavaruudessa R 4. Annetun sisätulon (x,y) indusoima normi on x (x,x) ja
Matematiikan tukikurssi
Matematiikan tukikurssi Kurssikerta 9 1 Implisiittinen derivointi Tarkastellaan nyt yhtälöä F(x, y) = c, jossa x ja y ovat muuttujia ja c on vakio Esimerkki tällaisesta yhtälöstä on x 2 y 5 + 5xy = 14
Matemaattinen Analyysi / kertaus
Matemaattinen Analyysi / kertaus Ensimmäinen välikoe o { 2x + 3y 4z = 2 5x 2y + 5z = 7 ( ) x 2 3 4 y = 5 2 5 z ) ( 3 + y 2 ( 2 x 5 ( 2 7 ) ) ( 4 + z 5 ) = ( 2 7 ) yhteys determinanttiin Yhtälöryhmän ratkaiseminen
Kohdeyleisö: toisen vuoden teekkari
Julkinen opetusnäyte Yliopisto-opettajan tehtävä, matematiikka Klo 8:55-9:15 TkT Simo Ali-Löytty Aihe: Lineaarisen yhtälöryhmän pienimmän neliösumman ratkaisu Kohdeyleisö: toisen vuoden teekkari 1 y y
Inversio-ongelmien laskennallinen peruskurssi Luento 3
Inversio-ongelmien laskennallinen peruskurssi Luento 3 Kevät 2011 1 Singulaariarvohajotelma (Singular Value Decomposition, SVD) Olkoon A R m n matriisi 1. Tällöin A voidaan esittää muodossa A = UΣV T,
Algoritmit 2. Luento 2 To Timo Männikkö
Algoritmit 2 Luento 2 To 14.3.2019 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2019 Luento
Inversio-ongelmien laskennallinen peruskurssi Luento 2
Inversio-ongelmien laskennallinen peruskurssi Luento 2 Kevät 2012 1 Lineaarinen inversio-ongelma Määritelmä 1.1. Yleinen (reaaliarvoinen) lineaarinen inversio-ongelma voidaan esittää muodossa m = Ax +
5 Ominaisarvot ja ominaisvektorit
5 Ominaisarvot ja ominaisvektorit Olkoon A = [a jk ] n n matriisi. Tarkastellaan vektoriyhtälöä Ax = λx, (1) missä λ on luku. Sellaista λ:n arvoa, jolla yhtälöllä on ratkaisu x 0, kutsutaan matriisin A
Jakso 1: Pyörimisliikkeen kinematiikkaa, hitausmomentti
Jakso 1: Pyörimisliikkeen kinematiikkaa, hitausmomentti Kertausta Ympyrärataa kiertävälle kappaleelle on määritelty käsitteet kulmanopeus ja kulmakiihtyvyys seuraavasti: ω = dθ dt dω ja α = dt Eli esimerkiksi
MS-A0205/MS-A0206 Differentiaali- ja integraalilaskenta 2 Luento 8: Newtonin iteraatio. Taso- ja avaruusintegraalit
MS-A25/MS-A26 ifferentiaali- ja integraalilaskenta 2 Luento 8: Newtonin iteraatio. Taso- ja avaruusintegraalit Jarmo Malinen Matematiikan ja systeemianalyysin laitos 1 Aalto-yliopisto Kevät 216 1 Perustuu
Käänteismatriisi 1 / 14
1 / 14 Jokaisella nollasta eroavalla reaaliluvulla on käänteisluku, jolla kerrottaessa tuloksena on 1. Seuraavaksi tarkastellaan vastaavaa ominaisuutta matriiseille ja määritellään käänteismatriisi. Jokaisella
Käänteismatriisin ominaisuuksia
Käänteismatriisin ominaisuuksia Lause 1.4. Jos A ja B ovat säännöllisiä ja luku λ 0, niin 1) (A 1 ) 1 = A 2) (λa) 1 = 1 λ A 1 3) (AB) 1 = B 1 A 1 4) (A T ) 1 = (A 1 ) T. Tod.... Ortogonaaliset matriisit
Aalto-yliopiston perustieteiden korkeakoulu Matematiikan ja systeemianalyysin laitos
Aalto-yliopiston perustieteiden korkeakoulu Matematiikan ja systeemianalyysin laitos Malinen/Ojalammi MS-A0203 Differentiaali- ja integraalilaskenta 2, kevät 2016 Laskuharjoitus 4A (Vastaukset) alkuviikolla
KJR-C1001 Statiikka ja dynamiikka. Luento Susanna Hurme
KJR-C1001 Statiikka ja dynamiikka Luento 16.3.2016 Susanna Hurme Päivän aihe: Translaatioliikkeen kinetiikka (Kirjan luvut 12.6, 13.1-13.3 ja 17.3) Oppimistavoitteet Ymmärtää, miten Newtonin toisen lain
Kuva 1: Funktion f tasa-arvokäyriä. Ratkaisu. Suurin kasvunopeus on gradientin suuntaan. 6x 0,2
HY / Matematiikan ja tilastotieteen laitos Vektorianalyysi I, syksy 018 Harjoitus Ratkaisuehdotukset Tehtävä 1. Olkoon f : R R f(x 1, x ) = x 1 + x Olkoon C R. Määritä tasa-arvojoukko Sf(C) = {(x 1, x
Luento 8: Epälineaarinen optimointi
Luento 8: Epälineaarinen optimointi Vektoriavaruus R n R n on kaikkien n-jonojen x := (x,..., x n ) joukko. Siis R n := Määritellään nollavektori 0 = (0,..., 0). Reaalisten m n-matriisien joukkoa merkitään
Numeeriset menetelmät TIEA381. Luento 8. Kirsi Valjus. Jyväskylän yliopisto. Luento 8 () Numeeriset menetelmät / 35
Numeeriset menetelmät TIEA381 Luento 8 Kirsi Valjus Jyväskylän yliopisto Luento 8 () Numeeriset menetelmät 11.4.2013 1 / 35 Luennon 8 sisältö Interpolointi ja approksimointi Funktion approksimointi Tasainen
Johdatus tekoälyn taustalla olevaan matematiikkaan
Johdatus tekoälyn taustalla olevaan matematiikkaan Informaatioteknologian tiedekunta Jyväskylän yliopisto 3. luento 17.11.2017 Neuroverkon opettaminen (ohjattu oppiminen) Neuroverkkoa opetetaan syöte-tavoite-pareilla
Ennakkotehtävän ratkaisu
Ennakkotehtävän ratkaisu Ratkaisu [ ] [ ] 1 3 4 3 A = ja B =. 1 4 1 1 [ ] [ ] 4 3 12 12 1 0 a) BA = =. 1 + 1 3 + 4 0 1 [ ] [ ] [ ] 1 0 x1 x1 b) (BA)x = =. 0 1 x 2 x [ ] [ ] [ 2 ] [ ] 4 3 1 4 9 5 c) Bb
MS-A0205/MS-A0206 Differentiaali- ja integraalilaskenta 2 Luento 6: Ääriarvojen luokittelu. Lagrangen kertojat.
MS-A0205/MS-A0206 Differentiaali- ja integraalilaskenta 2 Luento 6: Ääriarvojen luokittelu. Lagrangen kertojat. Jarmo Malinen Matematiikan ja systeemianalyysin laitos 1 Aalto-yliopisto Kevät 2016 1 Perustuu
Matriisi-vektori-kertolasku, lineaariset yhtälöryhmät
Matematiikan peruskurssi K3/P3, syksy 25 Kenrick Bingham 825 Toisen välikokeen alueen ydinasioita Alla on lueteltu joitakin koealueen ydinkäsitteitä, joiden on hyvä olla ensiksi selvillä kokeeseen valmistauduttaessa
MS-C1340 Lineaarialgebra ja differentiaaliyhtälöt
MS-C1340 Lineaarialgebra ja differentiaaliyhtälöt ja pienimmän neliösumman menetelmä Riikka Kangaslampi Matematiikan ja systeemianalyysin laitos Aalto-yliopisto 2015 1 / 18 R. Kangaslampi QR ja PNS PNS-ongelma
MAB3 - Harjoitustehtävien ratkaisut:
MAB3 - Harjoitustehtävien ratkaisut: 1 Funktio 1.1 Piirretään koordinaatistoakselit ja sijoitetaan pisteet: 1 1. a) Funktioiden nollakohdat löydetään etsimällä kuvaajien ja - akselin leikkauspisteitä.
MS-A0202 Differentiaali- ja integraalilaskenta 2 (SCI) Luento 4: Ketjusäännöt ja lineaarinen approksimointi
MS-A0202 Differentiaali- ja integraalilaskenta 2 (SCI) Luento 4: Ketjusäännöt ja lineaarinen approksimointi Antti Rasila Aalto-yliopisto Syksy 2015 Antti Rasila (Aalto-yliopisto) MS-A0202 Syksy 2015 1
Talousmatematiikan perusteet: Luento 13. Rajoittamaton optimointi Hessen matriisi Ominaisarvot ja vektorit Ääriarvon laadun tarkastelu
Talousmatematiikan perusteet: Luento 13 Rajoittamaton optimointi Hessen matriisi Ominaisarvot ja vektorit Ääriarvon laadun tarkastelu Viime luennolla Aloimme tarkastella yleisiä, usean muuttujan funktioita
Insinöörimatematiikka D
Insinöörimatematiikka D M. Hirvensalo mikhirve@utu.fi V. Junnila viljun@utu.fi A. Lepistö alepisto@utu.fi Matematiikan ja tilastotieteen laitos Turun yliopisto 2016 M. Hirvensalo V. Junnila A. Lepistö
Solmu 3/2001 Solmu 3/2001. Kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa oli seuraava tehtävä:
Frégier n lause Simo K. Kivelä Kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa oli seuraava tehtävä: Suorakulmaisen kolmion kaikki kärjet sijaitsevat paraabelilla y = x 2 ; suoran kulman
Tekijä MAA2 Polynomifunktiot ja -yhtälöt = Vastaus a)
K1 a) Tekijä MAA Polynomifunktiot ja -yhtälöt 6.8.016 ( + + ) + ( ) = + + + = + + + = + 4 b) 4 4 ( 5 + ) ( 5 + 1) = 5 + + 5 + 1 4 = + + + 4 = + 5 5 1 1 Vastaus a) 4 + b) 4 + 1 K a) f ( ) = + 1 f () = +
5 Lineaariset yhtälöryhmät
5 Lineaariset yhtälöryhmät Edellisen luvun lopun esimerkissä päädyttiin yhtälöryhmään, jonka ratkaisemisesta riippui, kuuluuko tietty vektori eräiden toisten vektorien virittämään aliavaruuteen Tämäntyyppisiä
Matematiikan tukikurssi, kurssikerta 3
Matematiikan tukikurssi, kurssikerta 3 1 Epäyhtälöitä Aivan aluksi lienee syytä esittää luvun itseisarvon määritelmä: { x kun x 0 x = x kun x < 0 Siispä esimerkiksi 10 = 10 ja 10 = 10. Seuraavaksi listaus
Viikon aiheet. Funktion lineaarinen approksimointi
Viikon aiheet Funktion ääriarvot Funktion lineaarinen approksimointi Vektorit, merkintätavat, pituus, yksikkövektori, skalaarilla kertominen, kanta ja kannan vaihto Funktion ääriarvot 6 Väliarvolause Implisiittinen