MattieT-tehtäväportaali

Menu:

Aihe: Epälineaariset yhtälöt ja optimointi MATLAB:lla

Käytön idea: kun löydät mieleisesi tehtävän, sen alapuolella on linkki tex-tiedostoon. Lataa tiedosto, ja liitä se harjoituspohjaan tai omaan Latex-pohjaasi.

Sisällysluettelo


  1. mlNl005

    mlNl005.tex
    Tarkastellaan yhtälöä \[\tan(0.1 x)= 9.2 e^{-x}.\]

    1. Osoita, että yhtälöllä on yksikäsitteinen ratkaisu avoimella välillä \(\left(0, 2\pi\right)\).

    2. Piirrä kummankin puolen kuvaaja samaan kuvaan etsiäksesi sopivan alkuarvon \(x_0\).

    3. Ratkaise yhtälö numeerisesti Matlab-funktiolla fzero

    4. Ratkaise yhtälö numeerisesti Newtonin menetelmällä.
      Opettajalle: Voit antaa ratkaisut/myNewton.m - funktion valmiina käyttöön tai sisällyttää sen ohjelmoimisen tähän tai aiempaan tehtävään.

    Vihje 1: Newtonia varten voit kokeilla derivointia symbolisesti Matlabilla tyyliin

     >> syms x
     >> diff(tan(0.1*x),x)

    Vihje 2: Jos ratkaisu on muuttujassa x, saat kätevästi arvon piirroksen otsikkoon komentamalla piirtokomennon jälkeen:

    title(['Ratkaisu = ',num2str(x)])

    Vaativuus 2-

    Tehtävän Latex-koodi:
    ../mlteht/mlNonlinEqu/mlNl005.tex

    Ratkaisu:
    ../mlteht/mlNonlinEqu/ratkaisut/html/mlNl005R.html (Publish: m-tied.-> html)
    ../mlteht/mlNonlinEqu/ratkaisut/mlNl005R.m (Matlab:n m-tiedosto)

    Avainsanat: mlNonlinequ, mlNl, Epälineaariset yhtälöt, Matlab, nonlinear equations, numerical solutions of equations, Newton’s method for nonlinear equation
    Matlabfunctions: fzero, num2str, syms, diff


  2. mlNl010

    Määritä funktion \[f(x) = (x-1) \sin\left(\frac{x}{x^2 +0.4x+0.1}\right)\] kaikki nollakohdat reaaliakselilla. Perustele, että “siinä” on kaikki.
    Piirrä kuva sopivassa skaalassa ja merkitse nollakohdat punaisilla rinkuloilla.

    Vaativuus 1+

    Tehtävän Latex-koodi:
    ../mlteht/mlNonlinEqu/mlNl010.tex

    Ratkaisu:
    ../mlteht/mlNonlinEqu/ratkaisut/html/mlNl010R.html (Publish: m-tied.-> html)
    ../mlteht/mlNonlinEqu/ratkaisut/mlNl010R.m (Matlab:n m-tiedosto)

    Avainsanat: mlNonlinequ, mlNl, Epälineaariset yhtälöt, nonlinear equations, numerical solutions of equations
    Matlabfunctions: plot, linspace, fzero,


  3. mlNl011

    Selvitä piirtämällä sopivissa skaaloissa, kuinka monta nollakohtaa on f- funktiolla annetulla välillä. \[f(x) = (x-1) \sin \left(\frac{12 x}{x^2 +0.4x+0.1}\right) \quad x \in [-4,4]\]
    Määritä pienin nollakohta välillä \([-0.2,-0.1]\) funktion fzero avulla.

    Vaativuus 2-

    Vihje: Tee Matlab-editorissa kappalejaottelu tyyliin:

    close all
    clear
    %%
    x=linspace(-4,-2,1000);
    plot(x,f(x)); grid on;shg
    N=1   % Laskuri nollakohtien lukumäärälle
    %%
    figure
    x=linspace(-2,-1,1000);
    plot(x,f(x)); grid on;shg
    N=N+3  % Lasketaan kuvasta lisäys 
    %%
    ...

    Tehtävän Latex-koodi:
    ../mlteht/mlNonlinEqu/mlNl011.tex

    Ratkaisu:
    ../mlteht/mlNonlinEqu/ratkaisut/html/mlNl011R.html (Publish: m-tied.-> html)
    ../mlteht/mlNonlinEqu/ratkaisut/mlNl011R.m (Matlab:n m-tiedosto)

    Avainsanat: mlNonlinequ, mlNl, Epälineaariset yhtälöt, nonlinear equations, numerical solutions of equations
    Matlabfunctions: plot, linspace, fzero,


  4. mlNl01

    Historiallisesti mielenkiintoinen yhtälö on

    \[x^3 - 2x - 5 = 0,\]

    jota Wallis-niminen matemaatikko käsitteli, kun hän ensi kertaa esitteli Newtonin menetelmää Ranskan akatemialle. [Lähde: Moler NCM]

    1. Piirrä kuvaaja saadaksesi alkuarvon Newtonin menetelmälle reaalijuurta varten.

    2. Määritä reaalijuuri omanewton:lla Neuvo: Polynomifunktion voit määritellä tähän tapaan, kun p on kerroinvektori:

                          pf=@(x) polyval(p,x)
      
         

      Derivaatan saat polyder- (tai omapolyder)-funktiolla.

    3. Yritä löytää kompleksijuuri antamalla kompleksisia alkuarvoja. (Jos löydät yhden, niin toinen on sen liittoluku.)

    4. Määritä juuret roots-funktion avulla.

    Ratkaisu:MlNl01ratk.m[Tulee]


  5. mlNl02

    [NCM 4.15, p. 138]

    Keplerin malli:

    \[M = E - e\sin,\ E\]

    1. Ratkaise fzero:lla

    2. Sarjakehitelmä: \[E = 2\sum_{m=1}^{\infty}\frac{1}{m}J_m(me)\sin(mM)\]

    Ratkaisu:MlNl02ratk.m[Tulee]


  6. mlNl030

    mlNl030
    Määritä pisteet \(X_1=(x_1,x_2)\) ja \(X_2=(x_3,x_4)\) siten, että \(p_1,\ldots, p_4\) näihin \(x\)-pisteisiin laskettujen etäisyyksien neliöiden summa on minimi, kun \[p_1=(0,0), p_2=(1.8,0), p_3=(1.5,1), p_4=(0.3,1.6).\]

    (Tarkennus: Pisteitä \(p-\) ja \(X-\)pisteiden yhdistysjanojen muodostama murtoviivasto on mahdollsimman lyhyt. Tarvittaneen kuva, piirrä Matlabilla)


  7. mlNl03

    [NCM 4.15, p. 138]

    Vesiputken syvyys, jotta ei jäädy.

    Ratkaisu:MlNlxxratk.m[Tulee]


  8. mlNl04

    Välinpuolitusmenetelmä on eräs tapa löytää funktion nollakohta. Bolzanon lauseen nojalla, jos jatkuvalla funktiolla on jonkin suljetun välin \([a,b]\) päätepisteissä erimerkkiset arvot, sillä on vähintään yksi nollakohta tällä välillä. Välinpuolitusmenetelmä toimii seuraavasti:

    • Laske välin \([a,b]\) keskikohta \(m = \frac{b-a}{2}\).

    • Laske \(f(m)\). Jos \(f(m)=0\), ollaan löydetty nollakohta ja lopetetaan algoritmi.

    • Jos \(f(m)\):n merkki on sama kuin \(f(a)\):n, voidaan tutkittavan välin vasenta päätepistetta siirtää kohtaan \(m\), eli \(a \leftarrow m\), ja palataan algoritmin kohtaan 1.

    • Jos \(f(m)\):n merkki on sama kuin \(f(b)\):n, voidaan tutkittavan välin oikeaa päätepistetta siirtää kohtaan \(m\), eli \(b \leftarrow m\), ja siirrytään algoritmin kohtaan 1.

    Tätä ideaa noudattaen, laske funktion \(f(x) = e^{\sin(x^2)}e^{-x^2}\sin(x^2)-\frac{1}{2}\) välillä \([0,1]\) sijaitseva nollakohta.

    Numeerisessa tapauksessa absoluuttisen nollan löytäminen on lähes mahdotonta – sinun tulee määrittää jokin hyväksyttävä toleranssi. Funktion arvojen samanmerkkisyyttä voidaan tutkia laskemalla näiden tulo: jos kahden luvun tulo on positiivinen, ovat ne samanmerkkisiä.


  9. mlNl05

    Sekanttimenetelmä on toinen funktion nollakohtien löytämiseen käytettävä menetelmä. Sekantti on suora joka leikkaa annettua käyrää kahdessa pisteessä. Sekanttimenetelmän idea on approksimoida annettua funktiota \(f\) välillä \([a,b]\) pisteiden \(f(a)\) ja \(f(b)\) välille piirretyllä suoralla. Tämän suoran, ja x-akselin välinen leikkauspiste otetaan välin uudeksi päätepisteeksi. Iteraatiokaavaksi saadaan näin \[x_{n+1} = x_n-f(x_n)\frac{x_n-x_{n-1}}{f(x_n)-f(x_{n-1})}\] Sekanttimenetelmä suppenee yleensä, mutta ei aina, nopeammin kuin välinpuolitusmenetelmä.

    Sekanttimenetelmää käyttäen laske funktion \[g(x)=\cos(\frac{1}{2}\sqrt{x})^2 \sqrt{x^3 \pi}\] välillä \([0,5]\) sijaitseva nollakohta.

    Tälle funktiolle ja tälle menetelmälle on mahdollista löytää alkuarvo, jolla menetelmä ei toimi: kokeile siis useaa arvausta.


  10. mlNl06

    Matlab/Maple/Mathematica
    H2T17/mlNl100/mplY100/mmaY100

    Etsi yhtälön \(x^8-36 x^7+546 x^6 -4536 x^5 + 22449 x^4 - 67284 x^3 + 118124 x^2 -109584 x + 40320 =0\) välillä \([5.5,6.5]\) oleva juuri. Muuta \(x^7\):n kerroin luvuksi \(-36.001\) ja katso, mikä vaikutus sillä on juureen.

    Maple: fsolve
    Matlab: roots Mathematica: ...

    2mm

    Ratkaisutiedostossa lisää variaatioita ja analyysiä tehtävään.


    Avainsanat: Polynomin juuret, numeriikka, häiriöalttius, ill-conditioned


  11. mlNl07

    Ratkaise yhtälöryhmä \[\begin{cases} x_1^3x_2-2 &=0 \\ \sin(x_1)-1& =0\\ x_3^2-3 & = 0 \end{cases}\] käyttäen Newtonin menetelmää. Tutki suppenemista eri alkuarvoilla.

    Tehtävässä tarvittava Jacobin matriisi kannattaa (ehkä) tehdä spesifinä funktiona.


  12. mlNl08

    Maple,Matlab,[Mathematica] (H2T8)

    Newtonin menetelmän askel voidaan määritellä vähäeleisesti Maplelle. Määritellään iterointifunktio:

    > N := x -> evalf(x - f(x)/D(f)(x));

    Iterointi tapahtuu joko for-silmukalla tai iterointioperaattorilla N@@k. (For silmukka lienee tehokkaampi, kun halutaan muodostaa koko iterointijono.) Ratkaise seuraavat yhtälöt Newtonin menetelmällä. Sopivat alkuarvot vaikkapa kuvan avulla.

    • \(x \cos\, x = \sin\, x +1,\ \ 0 < x < 2\pi\)

    • \(x^2+\sin\, x = 8\)

    Matlab-tehtävässä on antoisinta tehdä Maple-Matlab-työnjako: Muodostetaan ensin iteraatiokaava Maplella symbolisessa muodossa (jätetään yllä N-kaavasta evalf pois) ja siirretään kaava Matlabiin (lprint, Matlabissa vectorize lisää pisteet.

    Kaikkein kätevintä lienee käyttää Symbolic Toolboxia symboliseen derivointiin, jos se on käytettävissä.

    Avainsanat: Epälineaarinen yhtälö, Newtonin menetelmä, iteraatio


  13. mlNl09

    mlNl09
    Maple , Matlab (H2T7/2014)
    Lähde: Burden-Faires

    Tarkastellaan väestönkasvumallia \[N(t)=N_0e^{\lambda t}+{\frac{v}{\lambda}}(e^{\lambda t}-1),\] jossa otetaan huomioon biologisen lisääntymisen ohella myös maahanmuutto, jonka oletetaan tapahtuvan vakionopeudella \(v\) yksilöä vuodessa (netto). Oletetaan, että tietty populaatio on alunperin \(10^6\) yksilöä, \(435 000\) yksilöä muuttaa "maahan" 1. vuoden aikana ja populaatiossa on \(1 564 000\) yksilöä vuoden lopulla. Määritä luku \(\lambda\) Käytä tätä \(\lambda\):n arvoa ennustamaan populaation koko toisen vuoden lopussa, kun oletetaan maahanmuuttovauhdin säilyvän vakiona.

    Vihje: Maple: fsolve, Matlab: fzero

    Vaativuus: 2
    Tehtävän Latex-koodi:
    ../mlteht/mlNonlinEqu/mlNl09.tex

    Ratkaisu:
    ../mlteht/mlNonlinEqu/ratkaisut/html/mlNl09R.html (Publish: m-tied.-> html)
    ../mlteht/mlNonlinEqu/ratkaisut/mlNl09R.m (Matlab:n m-tiedosto)

    Avainsanat: Epälineeriset yhtälöt, Nonlinear equations, Matlab ,mlNonlinEqu,mlNl, vaestonkasvumalli, väestonkasvumalli, population growth

    Matlabfunktioita: fzero


  14. mlNl11

    mlNl11.tex

    Newtonin menetelmä lienee kaikista funktion nollakohdan etsimiseen käytetyistä menetelmistä kuuluisin. Silloin, kun menetelmä toimii, se on todella tehokas, suppenee kvadrattisesti, ts. oikeiden numeroiden lukumäärä likipitäen kaksinkertaistuu joka iteraatiokierroksella. Toisaalta menetelmä vaatii usein varsin hyvän alkuarvauksen, ja joissakin tilanteissa ei suppene hyvälläkään alkuarvolla.

    Newtonin iteraatioilla tarkasteltavilta funktioilta odotetaan jatkuvuutta ja derivoituvuutta. Newtonin iteraatiokaava on \[x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}.\]

    Kirjoita approksimatiivinen Newtonin meentelmä korvaamalla derivaatta differenssiapproksimaatiolla. Etsi funktion \(f(x) = e^{\sin(x^2)}e^{-x^2}\sin(x^2)-\frac{1}{2}\) nollakohtia käyttäen Newtonin menetelmää. Käytä alkuarvoina ainakin arvoja \(0.5, 12.2 \) ja \(2.2\). Kuten huomataan, alkuarvoilla on todella dramaattinen vaikutus siihen, kuinka ja minne menetelmä suppenee.

    HUOM! Otetaan tehtävään myös symbolinen derivaatta. Hyvä NUMSYM-tehtävä.

    Kokeile sitten ratkaista funktion \(g(x) = x^3-2x+2\) nollakohta Newtonin menetelmällä käyttäen alkuarvauksena \(x_0= 1\). Mitä tapahtuu? (vinkki: Ctrl + C lopettaa ikuisen luupin.)

    Viimeisenä kokeile ratkaista funktion \(h(x) = 1-x^2\) nollakohta Newtonin menetelmällä käyttäen alkuarvauksena \(x_0= 0\). Mitä tapahtuu?

    Vihje:
    Numeerisissa tapauksissa etsitään nollakohtaa jollain sopivalla toleranssilla. Derivaattana kannattaa käyttää määritelmän sijasta 3-pisteen sääntöä: \[f'(x) \approx \frac{f(x+h)-f(x-h)}{2h},\] kun \(h\) on pieni.

    Vaativuus: 1+
    Tehtävän Latex-koodi:
    ../mlteht/mlNonlinEqu/mlNl11.tex

    Avainsanat: Epälineeriset yhtälöt, Nonlinear equations, Matlab ,mlNonlinEqu,mlNl, Newtonin menetelmä nollakohdalle

    Matlabfunktioita: fzero


  15. mlNl12

    Kun \(z = x+iy\) ja \(-2 \le x,y \le 2\), eksponenttifunktion \(z \mapsto \exp(z)\) kuvaajan voi piirtää seuraavasti:

    t = -2:0.2:2;
    [x y] = meshgrid(t,t);
    z = x+i*y;
    r = exp(z)
    mesh(real(r));

    Imaginääriosan saa piirrettyä komennolla mesh(imag(r)). Tee vastaavat graafit seuraavista kuvauksista edellämainitulla välillä.

    1. \(z \mapsto \log(z)\)

    2. \(z \mapsto z^2\)

    3. \(z \mapsto z+ 1/z\)


  16. mlNl13

    Määritellään \[S_n(x) = \frac{nx}{1+n^2x^2}\] Näytä että jokaiselle kiinnitettylle arvolle \(x\) luku \(S_n(x)\) lähestyy nollaa, kun \(n \rightarrow \infty\), ja etsi \(S_n(x)\):n ääriarvot \(x\):n suhteen. Piirrä funktio \(S_n(x)\) välillä \([-2,2]\) kun \(n=2,4,6,8,10\).

    Ohjelman suorituksen voi keskeyttää kesken skriptin komennolla pause. Välin voi määritellä joko vektorinotaatiolla -2:0.02:2 tai komennolla linspace(-2,2,100).


  17. mlNl20

    mlNl20.tex [Moler: NCM probl. 4.22 p. 139]

    Olkoon \(f(x)=\sin(\tan \, x)-\tan(\sin \,x) .\)

    1. Piirrä \(f\) välillä \(\left[0,\pi\right]\)

    2. Etsi minimiä tällä välillä, piirrä erikseen kumpikin termi ja kavenna väliä, muista grid on .

    3. Mitä saat käyttämällä funktiota fminbnd

    4. Etsi suurinta alarajaa (infimum) “find-tekniikalla”

    5. Määritä \(\lim_{x\to \pi/2}f(x).\) Mikä on infimum?

    Vihje:

    Vaativuus: 2+
    Tehtävän Latex-koodi:
    ../mlteht/mlNonlinEqu/mlNl20.tex

    Avainsanat: Epälineeriset yhtälöt, Nonlinear equations, Matlab ,mlNonlinEqu,mlNl, Newtonin menetelmä nollakohdalle

    Matlabfunktioita: fzero