2.2 Yhtälöiden ratkaiseminen

Polynomiyhtälö

Polynomiyhtälön algebrallinen ratkaiseminen

> restart:

Määritellään polynomi p1:

>

> p1:=x^3+(-1/4-sqrt(2))*x^2+(-3/4+1/4*sqrt(2))*x+3/4*sqrt(2);

[Maple Math]

Polynomiyhtälölle p1=0 saadaan algebrallinen ratkaisu komennolla solve :

> solve(p1=0);

[Maple Math]

> restart:

Polynomiyhtälön numeerinen ratkaiseminen

> restart:

Määritellään polynomi p1:

> p1:=x^3+(-1/4-sqrt(2))*x^2+(-3/4+1/4*sqrt(2))*x+3/4*sqrt(2);

[Maple Math]

Polynomiyhtälön p1=0 juurille saadaan numeeriset approksimaatiot komennolla fsolve :

> fsolve(p1=0);

[Maple Math]

Approksimointitarkkuus on oletusarvoisesti 10 merkitsevää numeroa. Sitä voidaan muuttaa komennolla Digits :

> Digits:=5:

> fsolve(p1=0);

[Maple Math]

> restart:

Reaaliset ja kompleksiset juuret

> restart:

Määritellään sellainen polynomi p2, että polynomiyhtälöllä p2=0 on sekä reaalisia että kompleksisia juuria:

> p2:=x^5-3*x^4+(1+sqrt(2))*x^3+(-3-3*sqrt(2))*x^2+x*sqrt(2)-3*sqrt(2);

[Maple Math]

Komento solve ratkaisee polynomiyhtälön p2=0 kaikki juuret algebrallisessa muodossa:

> solve(p2=0);

[Maple Math]

Komento fsolve antaa oletusarvoisesti numeerisen approksimaation vain reaalisille juurille:

> fsolve(p2=0);

[Maple Math]

Kaikkien juurten numeeriset approksimaatiot saadaan liittämällä komentoon fsolve lisämääreet x ja complex:

> fsolve(p2=0,x,complex);

[Maple Math]

> restart:

Maplen esitysmuoto RootOf

> restart:

Maple saattaa oletusarvoisesti jättää hankalien tai mahdottomien lausekkeiden ratkaisut muotoon RootOf. Tällöin ratkaisu saadaan komennolla allvalues:

> solve(x^5+5*x^3-x^2-2=0,x);

[Maple Math]

> allvalues(%);

[Maple Math]
[Maple Math]
[Maple Math]

Edellisessä komennossa % -merkillä viitataan suoraan edeltävään tulokseen. Mikäli tuloslausekkeet ovat edelleen hankalia, Maple saattaa ottaa käyttöön %-alkuisia apumuuttujia.

> restart:

Polynomiepäyhtälö

> restart:

Polynomiepäyhtälö ratkaistaan komennolla solve . Maple antaa ratkaisun ilmoittamalla ne reaaliakselin välit, joilla epäyhtälö toteutuu. On huomattava, että Maplen tulosteessa tavalliset sulut merkitsevät (ääretöntä lukuunottamatta) välin suljettua päätepistettä.

> solve(x^2-2*x-3<=0);

[Maple Math]

Maple ilmoittaa välin avoimen päätepisteen (ääretöntä lukuunottamatta) lisähuomautuksella Open:

> solve(x^2-2*x-3>0);

[Maple Math]

Muutama epäyhtälöesimerkki:

> solve(x^3+(-1/4-sqrt(2))*x^2+(-3/4+1/4*sqrt(2))*x+3/4*sqrt(2)>=0);

[Maple Math]

> p1:=x^3+(-1/4-sqrt(2))*x^2+(-3/4+1/4*sqrt(2))*x+3/4*sqrt(2);

[Maple Math]

> solve(p1<=0);

[Maple Math]

> solve(p1<=2);

[Maple Math]
[Maple Math]

> restart:

Yhtälöryhmä

Yhtälörymän algebrallinen ratkaiseminen

> restart:

Yhtälöryhmä ratkaistaan algebrallisesti komennolla solve . Yhtälöt luetellaan joukkona , joten ne kirjoitetaan aaltosulkuihin pilkulla toisistaan erotettuina. Myös ratkaistavat muuttujat tulee luetella:

> solve({x+y+z=4, x-2*y+3*z=0, 3*x+sqrt(3)*y-z=2},{x,y,z});

[Maple Math]

Yhtälöryhmässä voi esiintyä myös parametreja:

> solve({x+y+z=4, x-a*y+b*z=0, 3*c+sqrt(3)*y-z=2},{x,y,z});

[Maple Math]
[Maple Math]

> restart:

Yhtälöryhmän numeerinen ratkaiseminen

> restart:

Yhtälöryhmän ratkaisuille saadaan numeeriset approksimaatiot komennolla fsolve :

> fsolve({x+y+z=4, x-2*y+3*z=0, 3*x+sqrt(3)*y-z=2},{x,y,z});

[Maple Math]

> restart:

Yhtälöryhmä epäyhtälörajoittein

> restart:

Ratkaistaan aluksi kahdeksan muuttujan yhtälöryhmä:

> solve({2*x[1]+2*x[4]+x[5]-x[6]=0, 2*x[2]+x[4]-x[7]=0, -2*x[3]+x[5]-x[8]=0, 2*x[1]*x[4]+x[2]*x[4]-5*x[4]=0, x[1]*x[5]+x[3]*x[5]-2*x[5]=0, -x[1]*x[6]+x[6]=0, -x[2]*x[7]+2*x[7]=0, -x[3]*x[8]=0});

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

Monesti muuttujille asetetaan lisäehtoja epäyhtälörajoitteilla. Tällainen yhtälö- ja epäyhtälöryhmä, jossa epäyhtälöt ovat polynomimuotoa, ratkeaa myöskin suoraan komennolla solve . Epäyhtälöt kirjoitetaan yksinkertaisesti samaan joukkoon kuin yhtälötkin:

> solve({2*x[1]+2*x[4]+x[5]-x[6]=0, 2*x[2]+x[4]-x[7]=0, -2*x[3]+x[5]-x[8]=0, 2*x[1]*x[4]+x[2]*x[4]-5*x[4]=0, x[1]*x[5]+x[3]*x[5]-2*x[5]=0, -x[1]*x[6]+x[6]=0, -x[2]*x[7]+2*x[7]=0, -x[3]*x[8]=0, 2*x[1]+x[2]-5<=0, x[1]+x[3]-2<=0, -x[1]+1<=0, -x[2]+2<=0, -x[3]<=0});

[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]
[Maple Math]

> restart:

Lineaarinen epäyhtälöryhmä

> restart:

Lineaarinen epäyhtälöryhmä ratkaistaan komennolla solve . Yhtälöt luetellaan joukkona , joten ne kirjoitetaan aaltosulkuihin pilkulla toisistaan erotettuina:

> solve({2*x+y>4,0<x,0<y,3*x-2*y>3,-x-2*y>-5});

[Maple Math]

Vaustauksessa on kiusallista se, että Maple ei osaa sieventää vastausta, vaan laskija joutuu tekemään sen itse. Lisäksi Maple toistaa ryhmän epäyhtälöt ratkaisussa.

> restart:

Iteraatiomenetelmiä

Yksinkertainen ja moninkertainen yhdistetty funktio

> restart:

Määritellään funktio f :

> f:=x->sin(x)-exp(-x);

[Maple Math]

Maplessa yhdistettyä funktiota merkitään symbolilla @ :

> (f@f)(x);

[Maple Math]

Vastaavasti moninkertainen yhdistetty funktio merkitään symbolilla @@ :

> (f@@3)(x);

[Maple Math]
[Maple Math]

> restart:

Newtonin iteraatiomenetelmä

> restart:

Sovelletaan Newtonin iteraatiomenetelmää yhtälöön [Maple Math] . Yhtälöllä on äärettömän monta juurta, joten se juuri jota kohti iterointi suppenee, riippuu x : n alkuarvon valinnasta.

Määritellään funktio f :

> f:=x->sin(x)-exp(-x);

[Maple Math]

Lasketaan funktion derivaatta D f, ja määritellään sekin funktiona:

> diff(sin(x)-exp(-x),x);

[Maple Math]

> Df:=x->cos(x)+exp(-x);

[Maple Math]

Määritellään Newtonin iteraatiokaava funktiona g :

> g:=x->x-(f(x)/Df(x));

[Maple Math]

Iteraatiokaavaa voidaan soveltaa joko for-silmukan tai moninkertaisen yhdistetyn funktion avulla.

Määrätään komennolla Digits Maplen likiarvotarkkuudeksi 15 merkitsevää numeroa, annetaan x : lle alkuarvoksi piin likiarvo 3.14159.

> Digits:=15:

> x:=3.14159:

Iteroidaan lauseketta kymmenen kertaa aluksi for-silmukan avulla:

> for i from 1 to 10 do

> x:=x-(f(x)/Df(x));

> od;

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

[Maple Math]

Toistetaan sitten sama iteraatio moninkertaisen yhdistetyn funktion avulla. Tällöin näkyviin tulee ainoastaan viimeinen tulos:

> (g@@10)(3.14159);

[Maple Math]

> restart:

>