Kaikkien paikallisten ääriarvojen haku

Samankaltaiset tiedostot
MS-A0204 Differentiaali- ja integraalilaskenta 2 (ELEC2) Luento 7: Pienimmän neliösumman menetelmä ja Newtonin menetelmä.

mplperusteet 1. Tiedosto: mplp001.tex Ohjelmat: Maple, [Mathematica] Sievennä lauseke x 1 ( mplp002.tex (PA P1 s.2011)

MS-A0205/MS-A0206 Differentiaali- ja integraalilaskenta 2 Luento 8: Newtonin iteraatio. Taso- ja avaruusintegraalit

Matematiikan tukikurssi

Yhden muuttujan funktion minimointi

mlvektori 1. Muista, että Jacobin matriisi koostuu vektori- tai skalaariarvoisen funktion F ensimmäisistä

Harjoitus 7 -- Ratkaisut

Mapu 1. Laskuharjoitus 3, Tehtävä 1

Yhtälön ratkaiseminen

Matriisit ja optimointi kauppatieteilijöille

Matlab- ja Maple- ohjelmointi

MS-A0104 Differentiaali- ja integraalilaskenta 1 (ELEC2) MS-A0106 Differentiaali- ja integraalilaskenta 1 (ENG2)

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

Johdatus tekoälyn taustalla olevaan matematiikkaan

Matematiikan tukikurssi

Viikon aiheet. Funktion lineaarinen approksimointi

Matematiikan tukikurssi

Funktioiden approksimointi ja interpolointi

. Kun p = 1, jono suppenee raja-arvoon 1. Jos p = 2, jono hajaantuu. Jono suppenee siis lineaarisesti. Vastaavasti jonolle r k+1 = r k, suhde on r k+1

TEKNILLINEN KORKEAKOULU Systeemianalyysin laboratorio. Kimmo Berg. Mat Optimointioppi. 9. harjoitus - ratkaisut

Tässä dokumentissa on ensimmäisten harjoitusten malliratkaisut MATLABskripteinä. Voit kokeilla itse niiden ajamista ja toimintaa MATLABissa.

n. asteen polynomilla on enintään n nollakohtaa ja enintään n - 1 ääriarvokohtaa.

Numeeriset menetelmät

Harjoitus 1: Matlab. Harjoitus 1: Matlab. Mat Sovelletun matematiikan tietokonetyöt 1. Syksy 2006

Tee kokeen yläreunaan pisteytysruudukko. Valitse kuusi tehtävää seuraavista kahdeksasta. Perustele vastauksesi!

Numeeriset menetelmät Pekka Vienonen

Maksimit ja minimit 1/5 Sisältö ESITIEDOT: reaalifunktiot, derivaatta

A = (a 2x) 2. f (x) = 12x 2 8ax + a 2 = 0 x = 8a ± 64a 2 48a x = a 6 tai x = a 2.

Numeeriset menetelmät

Matemaattisen analyysin tukikurssi

Matematiikan peruskurssi (MATY020) Harjoitus 7 to

Kun yhtälöä ei voi ratkaista tarkasti (esim yhtälölle x-sinx = 1 ei ole tarkkaa ratkaisua), voidaan sille etsiä likiarvo.

Matematiikan taito 9, RATKAISUT. , jolloin. . Vast. ]0,2] arvot.

Funktion suurin ja pienin arvo DERIVAATTA,

Anna jokaisen kohdan vastaus kolmen merkitsevän numeron tarkkuudella muodossa

Epälineaaristen yhtälöiden ratkaisumenetelmät

Matematiikka B1 - avoin yliopisto

Differentiaaliyhtälöryhmä

Casion fx-cg20 ylioppilaskirjoituksissa apuna

Mat-1.C Matemaattiset ohjelmistot

L9: Rayleigh testi. Laskuharjoitus

Zeon PDF Driver Trial

3.1 Väliarvolause. Funktion kasvaminen ja väheneminen

MS-A0207 Differentiaali- ja integraalilaskenta 2 (Chem) Yhteenveto, osa I

MATEMATIIKAN KOE PITKÄ OPPIMÄÄRÄ Merkitään f(x) =x 3 x. Laske a) f( 2), b) f (3) ja c) YLIOPPILASTUTKINTO- LAUTAKUNTA

Rinnakkaistietokoneet luento S

f(x, y) = x 2 y 2 f(0, t) = t 2 < 0 < t 2 = f(t, 0) kaikilla t 0.

x j x k Tällöin L j (x k ) = 0, kun k j, ja L j (x j ) = 1. Alkuperäiselle interpolaatio-ongelmalle saadaan nyt ratkaisu

Talousmatematiikan perusteet: Luento 13. Rajoittamaton optimointi Hessen matriisi Ominaisarvot ja vektorit Ääriarvon laadun tarkastelu

Juuri 12 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty

MATP153 Approbatur 1B Harjoitus 6 Maanantai

Juuri 12 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty

MATEMATIIKAN PERUSKURSSI I Harjoitustehtäviä syksy Millä reaaliluvun x arvoilla. 3 4 x 2,

Numeerinen analyysi Harjoitus 3 / Kevät 2017

Matematiikan tukikurssi

Matematiikan perusteet taloustieteilijöille II Harjoituksia kevät ja B = Olkoon A = a) A + B b) AB c) BA d) A 2 e) A T f) A T B g) 3A

mlnonlinequ, Epälineaariset yhtälöt

Helsingin, Itä-Suomen, Jyväskylän, Oulun, Tampereen ja Turun yliopisto Matematiikan valintakoe klo 10-13

Luento 9: Newtonin iteraation sovellus: optimointiongelma

BM20A1501 Numeeriset menetelmät 1 - AIMO

Matematiikan peruskurssi (MATY020) Harjoitus 10 to

plot(f(x), x=-5..5, y= )

BM20A5840 Usean muuttujan funktiot ja sarjat Harjoitus 1, Kevät 2018

Preliminäärikoe Tehtävät Pitkä matematiikka / 3

Luentoesimerkki: Riemannin integraali

Differentiaali- ja integraalilaskenta 1 Ratkaisut 2. viikolle /

Matlabin perusteita Grafiikka

l 1 2l + 1, c) 100 l=0

Talousmatematiikan perusteet: Luento 15. Rajoitettu optimointi Lagrangen menetelmä Lagrangen kerroin ja varjohinta

Helsingin, Itä-Suomen, Jyväskylän, Oulun, Tampereen ja Turun yliopisto Matematiikan valintakoe klo Ratkaisut ja pisteytysohjeet

Harjoitus 4: Matlab - Optimization Toolbox

1 Määrittelyjä ja aputuloksia

Numeeriset menetelmät

Pienimmän neliösumman menetelmä

Diplomi-insinööri- ja arkkitehtikoulutuksen yhteisvalinta 2018 Insinöörivalinnan matematiikan koe, , Ratkaisut (Sarja A)

Integrointi ja sovellukset

MS-A010{3,4} (ELEC*) Differentiaali- ja integraalilaskenta 1 Luento 5: Taylor-polynomi ja sarja

MS-A0107 Differentiaali- ja integraalilaskenta 1 (CHEM)

L9: Rayleigh testi. Laskuharjoitus

Antti Rasila. Kevät Matematiikan ja systeemianalyysin laitos Aalto-yliopisto. Antti Rasila (Aalto-yliopisto) MS-A0204 Kevät / 16

Differentiaali- ja integraalilaskenta 2 Laskuharjoitus 4 / vko 40

Diplomi-insinööri- ja arkkitehtikoulutuksen yhteisvalinta 2017 Insinöörivalinnan matematiikan koe , Ratkaisut (Sarja A)

Matematiikkaa kauppatieteilijöille

5 Differentiaalilaskentaa

3.4 Rationaalifunktion kulku ja asymptootit

13. Taylorin polynomi; funktioiden approksimoinnista. Muodosta viidennen asteen Taylorin polynomi kehityskeskuksena origo funktiolle

Numeeriset menetelmät

Harjoitus 9: Optimointi I (Matlab)

PRELIMINÄÄRIKOE PITKÄ MATEMATIIKKA

Muuttujan sisällön näet kirjoittamalla sen nimen ilman puolipistettä

FUNKTION KUVAAJAN PIIRTÄMINEN

Matlabperusteita, osa 1. Heikki Apiola Matlab-perusteita, osa 1. Heikki Apiola. 12. maaliskuuta 2012

Differentiaali- ja integraalilaskenta 2 (CHEM) MS-A0207 Hakula/Vuojamo Kurssitentti, 12.2, 2018, arvosteluperusteet

Matematiikan tukikurssi

jakokulmassa x 4 x 8 x 3x

Talousmatematiikan perusteet: Luento 14. Rajoittamaton optimointi Hessen matriisi Ominaisarvot Ääriarvon laadun tarkastelu

Numeerinen integrointi ja derivointi

MATEMATIIKAN KOE, PITKÄ OPPIMÄÄRÄ HYVÄN VASTAUKSEN PIIRTEITÄ

MATEMATIIKAN KOE, PITKÄ OPPIMÄÄRÄ HYVÄN VASTAUKSEN PIIRTEITÄ

l 1 2l + 1, c) 100 l=0 AB 3AC ja AB AC sekä vektoreiden AB ja

Transkriptio:

Kaikkien paikallisten ääriarvojen haku 30.4.2017 Heikki Apiola Tiedosto: opi_minimointiliven.mlx, opi_minimointiliven.m Funktio: lok_min.m (help lok_min) Lisää esimerkkejä: ex_lok_min.m Abstrakti Lähdetään liikkeelle diskreetissä pistejoukossa määritellystä funktiosta. Selvitetään juurta jaksain periaatteet, joilla päästään käsiksi ääriarvojen laskentaan, tarvitsematta mitään pohjatietoja asiasta. Kehitellään Matlab/Octave-työkalut ohjelmien perusominaisuuksia ja ajattelutapoja hyödyntäen, joilla periaatteet saadaan muutetuksi laskenta-algoritmiksi. Kun sileää (jatkuvasti dervoituvaa) funktiota f "digitoidaan", eli lasketaan arvoja rittävän tiheästi diskretoiden, saadaan samalla ohjelmalla lasketuksi halutulla tarkkuudella likiarvoja f:n ääriarvoille. Verrataan Matlab:n valmiin funktion fminsearch laskemiin tuloksiin, ja koetaan jokunen yllätyskin. Lopuksi valaistaan mahdollisuutta rinnakkaislaskentaan. Matlab/Octave-perusteita: https://math.aalto.fi/~apiola/matlab/opas/lyhyt/ clear; close all;format compact % Aseteteaan alkutila. Katsotaan ensin perustapaukset: Otetaan näytteitä sin-funktiosta: x=[0 pi/2 4 5 2*pi] x = 0 1.5708 4.0000 5.0000 6.2832 y=sin(x) y = 0 1.0000-0.7568-0.9589-0.0000 plot(x,y,'.-.',x,y,'or');grid on;shg

Miten haetaan min ja max diskreetille funktiolle? Funktion kuvaajan muodostavat punaiset 'rinkulapisteet': [x;y] 0 1.5708 4.0000 5.0000 6.2832 0 1.0000-0.7568-0.9589-0.0000 Havainnot: Välillä funktio kasvaa, eli. Välillä funktio pienenee, eli. SIIS: on maksimikohta. Välillä funktio pienenee, samoin välillä. SIIS: ei ole min- eikä maxkohta. Välillä funktio pienenee ja välillä kasvaa. SIIS: on minimkohta. Muistele, derivoituvan funktion tapauksen min-max-sääntöjä! Lasketaan Matlab:lla (Octavella) Avaimen onneen tarjoaa funktio diff, joka laskee argumenttivektorin peräkkäisten komponenttien erotusvektorin.

Esim: x=[-1 1 1 3 0] x = -1 1 1 3 0 diff(x) 2 0 2-3 Palataan tehtäväämme: x=[0 pi/2 4 5 2*pi] x = 0 1.5708 4.0000 5.0000 6.2832 y=sin(x) y = 0 1.0000-0.7568-0.9589-0.0000 Muodostetaan y-vektorin erotukset: diff(y) 1.0000-1.7568-0.2021 0.9589 Erotukset mittaavat x-vektorin sisäpisteissä tapahtuvia muutoksia. [x;y] 0 1.5708 4.0000 5.0000 6.2832 0 1.0000-0.7568-0.9589-0.0000 Luemme diff(y)-vektorista sen, mikä näkyy y-vektorista (ja kuvasta): Pisteessä erotus muuttuu siis max-piste. Pisteessä, siis ei ääriarvoa. Pisteessä, siis min-piste.

Muutoksen suunnan sisäpisteissä toisen derivaatan diskreettiä vastinetta. näemme suoraan katsomalla erotusvektorin erotuksia, siis Olemme kiinostuneita erotusten merkeistä, joten kannattaa soveltaa vielä sign-funktiota sdy=sign(diff(y)) sdy = 1-1 -1 1 d2y=diff(sdy) % Erotusvektorin erotukset (Diskreetti 2. derivaatta) d2y = -2 0 2 Tästäpä näkyy suoraan, että on maksimipiste, ei ole ääriarvo, on minimipiste. Jotta voisimme kehittää koodin, joka tekee valinnan puolestamme, tarvitsemme vielä yhden tehokkaan Matlab-työkalun, loogisen valinnan. Kts. https://math.aalto.fi/~apiola/matlab/opas/lyhyt/perusteet.html#loogind maxind=d2y < 0 maxind = 1 3 logical array 1 0 0 minind=d2y > 0 minind = 1 3 logical array 0 0 1 Sisäpisteiden muodostamista vektoreista xin=x(2:end-1) xin = 1.5708 4.0000 5.0000 yin=y(2:end-1) yin = 1.0000-0.7568-0.9589 valitaan ehtojen maxind ja minind avulla ne, joiden kohdalla on 1 (true)

xmax=xin(maxind) xmax = 1.5708 ymax=yin(maxind) ymax = 1 xmin=xin(minind) xmin = 5 ymin=yin(minind) ymin = -0.9589 Kaksi viime vaihetta voidaan yhdistää helposti luettavaksi "idiomiksi" tyyliin: xmin=xin(d2y>0) % Valitaan ne, joissa toinen differenssi > 0 xmin = 5 HUOM! Edellä suoritetut operaatiot ovat kaikki vektorioperaatioita. Niin ollen ne toimivat ilman muutoksia miten pitkille x- ja y-vektoreille tahansa ja antavat kaikki (x,y)-vektoriparin määrittelemän diskreetin funktion max- ja min-pisteet. Tehtävä: Määritä kaikki min-ja max-pisteet datalle: x=[0 pi/2 4 5 10 15 19 23 8*pi] x = 0 1.5708 4.0000 5.0000 10.0000 15.0000 19.0000 23.0000 y=sin(x) y = 0 1.0000-0.7568-0.9589-0.5440 0.6503 0.1499-0.8462 plot(x,y,'.-',x,y,'or');grid on;shg

Ratkaisu: Tee yllä olevan mallin mukaan (kopioimalla koodirivit). Suorita sitten piirto tähän tapaan: clf; plot(x,y,'.-.',xmin,ymin,'*r',xmax,ymax,'ob');grid on;shg; legend('datapisteet yhdistettyinä','minimit(red))','maksimit(blue)') Kirjoitetaan yleispätevä funktio Pitkän päälle koodirivien kopiointi käy turhauttavaksi. Siksipä kannattaa tässä vaiheessa kirjoittaa homman hoitava funktio, jolle annetaan argumentteina x ja y-vektorit. Funktion tulee palauttaa vektorit xmin, ymin, xmax, ymax Matlab-funktion, tässä nimeltään lok_minmax, perussyntaksi on: %{ function [xin,ymin,xmax,ymax]=lok_minmax(x,y) % Alkukommentteja... %... alkukommentteja (help lok_minmax tulostaa alkukommentit) matlab-komentoja, periaatteessa ne yllä kopioinnin kohteena olleet... xmin=...; ymin=...; xmax=...; ymax=...; %} Funktion lok_minmax koodi:

Huom! >> help lok_minmax tulostaa alkukommenttirivit. type lok_minmax function [xmin,ymin,xmax,ymax] = lok_minmax(x,y) % Etsitaan diskreetilla x-akselilla annettujen y-arvojen paikalliset % minimit ja maksimit % Esim 1) % x=0:0.1:7; y=sin(5*x); [xmin,ymin,xmax,ymax]=lok_minmax(x,y) % plot(x,y,xmin,ymin,'x');ylim([-1.1,1.1]);grid on;shg % Esim 2) % x=linspace(0,7);y=sin(5*x); [xmin,ymin,xmax,ymax]=lok_min(x,y) % % Voidaan siis käyttää myös sileän funktion ääriarvojen numeeriseen % laskentaan. dysign=sign(diff(y)); % Differenssivektorin (y(2)-y(1), y(3)-y(2),...) sign d2y=diff(dysign); % 2. differenssi (+-2 tai 0) xin=x(2:end-1); % x-sisäpisteet yin=y(2:end-1); % vastaavat y-pisteet xmin=xin(d2y>0); % Poimitaan sisäpistevektorista xin ne, joissa % 2. differenssi > 0.; ymin=yin(d2y>0); % vastaavat y-pisteet xmax=xin(d2y<0); ymax=yin(d2y<0); % Poimitaan sisäpistevektorista xin ne, joissa % 2. differenssi < 0.; % vastaavat y-pisteet end Esimerkki 2: suurempi määrä min/max-pisteitä, sekä sileitä, että piikkejä. Kehitellään sopiva nopeammin heilahteleva funktio, jolla myös "piikikkyttä" Määritellään Matlab-funktioksi. Alla olevat linkit auttanevat selittämään niitä seuraavaa Matlabkoodiriviä. Kts: Funktiomääritys Matlab:ssa (Lyhyt opas) Miksi piste? (.*) Kts: https://math.aalto.fi/~apiola/matlab/opas/lyhyt/perusteet.html#taulukkooperaatio Taulukko-operaatiot, pisteittäin, Lyhyt opas Ja myös syksyn 2016 Aalto Scip-kurssi: https://math.aalto.fi/opetus/matohjelmistot/2016syksysci/lectures/runbasic_arrays.pdf Aalto-Scip- Kurssimatskua: "Arrays" Haku: (CTR-F pointwise) close all f=@(x)0.1*x+cos(x).*abs(sin(5*x)) f = function_handle with value: @(x)0.1*x+cos(x).*abs(sin(5*x)) vali=[0 10]; xx=linspace(0,10,300);

plot(xx,f(xx));title('piikkejä ja sileitä ääriarvoja');grid on;ylim([-0.7 1.7]);shg Nautiskellaan funktiomme lok_minmax avulla. Väli [0,10] jaetaan 300:aan osaväliin, joten osavälin pituus: h=10/300 h = 0.0333 Tämä on siis taattu tarkkuus, jolla seuraavassa laskettavat ääriarvot saadaan. x=linspace(0,10,300); y=f(x); [xmin,ymin,xmax,ymax]=lok_minmax(x,y); hold on plot(xmin,ymin,'*r',xmax,ymax,'ob');ylim([-0.7 1.7]);

absvirhemax = 10/300 absvirhemax = 0.0333 % 0.0333 Kokeillaan valmista Matlab-funktiota fminsearch Funktio fminsearch hakee yhtä minimiä, kun annetaan rittävän tarkka alkuarvaus. Annetaanpa alkuarvaukseksi kukin yllä laskettu likiarvo vuorollaan: N=length(xmin); tarkennetutminimit=zeros(1,n); for k=1:n tarkennetutminimit(k)=fminsearch(f,xmin(k)); end xmint=tarkennetutminimit; ymint=f(xmint); %figure(1) plot(xmint,ymint,'ok',xmax,ymax,'ob');ylim([-0.7 1.7]); title('rengastetut pisteet löytyvät, 3 jää saamatta')

[xmin([7 8 9 13 14 15]);tarkennetutminimit([7 8 9 13 14 15])] 4.0134 4.5151 5.0167 7.5251 8.0268 8.5284 4.0296 3.4393 5.0265 9.1190 8.5254 8.5254 %{ 4.0134 4.5151 5.0167 7.5251 8.0268 8.5284 4.0296 3.4393 5.0265 9.1190 8.5254 8.5254 %} Ylärivillä on siis omalla ohjelmallamme saadut pisteet, joita käytetään alkuarvoina fminsearchfunktiolle. Kuten kuvasta näkyy, 3 minimiä jää saavuttamatta tässä "tarkennnuksessa". Kun katsotaan komponentteja 7 ja 8, huomataan, että alkuarvauksen kasvattaminen johtaa tuloksen pienenemiseen. Käsittelemme tätä alkuarvon valintaproblematiikkaa tarkemmin seuraavassa blogikirjoituksessa funktion nollakohdan määritystehtävässä Newtonin menetelmän yhteydessä. [xmin;tarkennetutminimit] 0.6355 1.2709 1.7391 2.2408 2.8428 3.4448 4.0134 4.5151 0.6283 1.2566 1.7324 2.2422 2.8359 3.4393 4.0296 3.4393 Koko tulos ei näy tässä, siksi alla komentoikkunasssa näkyvä täydellisenä: %{

Columns 1 through 10 0.6355 1.2709 1.7391 2.2408 2.8428 3.4448 4.0134 4.5151 5.0167 0.6283 1.2566 1.7324 2.2422 2.8359 3.4393 4.0296 3.4393 5.0265 Columns 11 through 17 6.2876 6.9231 7.5251 8.0268 8.5284 9.1304 9.7324 6.2832 6.9115 9.1190 8.5254 8.5254 9.1191 9.7225 %} diff(ans,1) -0.0071-0.0143-0.0067 0.0014-0.0069-0.0055 0.0163-1.0757 %{ Columns 1 through 10-0.0071-0.0143-0.0067 0.0014-0.0069-0.0055 0.0163-1.0757 0.0098 Columns 11 through 17 %} -0.0045-0.0116 1.5939 0.4986-0.0031-0.0114-0.0099 Virheraja näyttää pitävän paikkansa, paitsi komponenttien 8, 9, 13, 14, 15 kohdalla. MUTTA: Niistä lähtien fminsearch suppeneekin kohti "väärää" minimiä. Eli meidän menetelmämme on luotettavampi, joskin epätarkempi. Parannusta saadaan suorittamalla tarkennettu käsittely niille alkuarvoille, jotka fminsearch ajaa virherajan ulkopuolelle. Jos tarkkuusvaatimus ei ole kovin suuri, voidaan tyytyä oman ohjelmamme käyttöön, jossa saadaan tarkkuutta lisää joko jakamalla koko väli tiheämmin (jokaista dekadia kohti dekadi lisää, aika tehotonta, tosin Matlab:ssa viuhuu lujaa). Parempi tapa: Jaetaan kukin osaväli (xmin(k)-h,xmin(k)+h) esim. 100:aan osaan. Harjoitustehtävä: Tee vastaava selvitys maksimipisteille. Huomaa, että fminsearch sopii funktion tyyliin maksimien etsintään xmax= -fminsearch(@(x) -f(x),x0), koska Rinnakkaislaskentaa, parallell toobox Viimeisen vuosikymmenen aikana on algoritmien suunnittelussa yleistynyt enenevässä määrin rinnakkaisuuden hyödyntäminen. Tämä tarkoittaa sitä, että ohjelma pyritään jakamaan toisistaan riippumattomiin osiin, jotka voidaan suorittaa samanaikaisesti. Fyysisesti sen tekee mahdolliseksi tietokonearkkitehtuuri, jossa ison muistin ja yhden tehokkaan prosessorin sijasta on jaettu muisti ja

monta prosessoria. Tällaisia suuria "klustereita" on mm. Aalto-yliopiston tritonus-klusteri ja CSCsuperlaskentakeskuksen Taito, ym. CSC: Matlab-rinnakkaislaskentaa Toisaalta rinnakkaislaskentaa voi harjoitella kotikoneellakin, jos siinä on vähintään 2-ydinprosessori. Edellä esitetty algoritmi soveltuu erinomaisesti rinnakkaislaskentaan, kunkin alkuarvon laskemisen jälkeinen tarkentaminen jakautuu luonnollisesti riippumattomiin osiin. Matlabissa on rinnakkaislaskentaan erikoistunut "parallell toolbox", jolla voidaan suorittaa tämänkaltainen rinnakkaistus hyvin helposti. Harjoittelu kotikoneella on hyvin vaivatonta, monessa tapauksessa koodia ei tarvitse muuttaa lainkaan siirryttäessä isompaan klusteriin. Palaan aiheeseen seuraavissa blogikirjoituksissa. Viittaan tässä kurssiin, jonka pidin syksyllä 2016 yhdessä Juha Kuortin kanssa: https://math.aalto.fi/opetus/matohjelmistot/2016_2_syksysci/ Optimointia ja nollakohtien hakua usemman muuttujan funktioille Tehokkuuden tarve lisääntyy huomattavasti, kun muuttujia tulee lisää, jolloin rinnakkaislaskennan edut moninkertaistuvat. Näistä aiheista jatketaan, kunhan ehditään.