Harj. 8 av

18.3.2002 HA

Alustukset

> restart:

Warning, the name changecoords has been redefined

> with(LinearAlgebra):with(linalg):with(plottools): with(plots):setoptions3d(axes=boxed,orientation=[-30,50]):

Warning, the previous binding of the name GramSchmidt has been removed and it now has an assigned value

Warning, the protected names norm and trace have been redefined and unprotected

Warning, the name arrow has been redefined

Warning, the name arrow has been redefined

> V2L:=vek->convert(vek,list):

1.

Tähän on hienosti TeX:itetty ratkaisu pdf-muodossa.

Piirretään vain kuva

> f:=x^2*y*exp(-(x^2+y^2));

f := x^2*y*exp(-x^2-y^2)

> plot3d(f,x=-2..2,y=-2..2);

[Maple Plot]

Kaikki laskemalla saadut johtopäätökset näkyvät tästä oikein hienosti

> contourplot(f,x=-2..2,y=-2..2): #Ääriarvot näkyvät

> contourplot(f,x=-0.2..0.2,y=-0.2..0.2): # Satulapiste näkyy

Harjanteet eivät vielä erotu.

2.

> f:=(x,y)->2*(x^2+y^2)+x*y-5*(x+y);

f := proc (x, y) options operator, arrow; 2*x^2+2*y...

> fv:=X->2*(X[1]^2+X[2]^2)+X[1]*X[2]-5*(X[1]+X[2]);

fv := proc (X) options operator, arrow; 2*X[1]^2+2*...

> g:=[D[1](f),D[2](f)];

g := [proc (x, y) options operator, arrow; 4*x+y-5 ...

> gv:=v->g(v[1],v[2]);

gv := proc (v) options operator, arrow; g(v[1],v[2]...

> #gv(x[0]); g(1,-2);

> x[0]:=<1,-2>;

x[0] := _rtable[135084480]

> #fv(x[0]);

> #f(1,-2);

> u:=-Normalize(Vector(gv(x[0])));

u := _rtable[138661516]

> evalm(x[0]+t*u);

vector([1/4*t+1, t-2])

> phi:=t->simplify(fv(evalm(x[0]+t*u)));

phi := proc (t) options operator, arrow; simplify(f...

> phi(t);

19/8*t^2-51/4*t+13

> tmin:=solve(diff(phi(t)=0,t));

tmin := 51/19

> x[1]:=x[0]+tmin*u;

x[1] := _rtable[136069580]

Tähän päättyi 1. askel. Leikitään, että tuo oli käsinlaskua.

3.

Tämä nyt on Maplella laskettu, mutta lienee sovelias käsinlaskun malliksi.

> f:=(x,y)->x^2+c*y^2;fv:=X->X[1]^2+c*X[2]^2;
g:=[D[1](f),D[2](f)];
gv:=v->g(v[1],v[2]);

f := proc (x, y) options operator, arrow; x^2+c*y^2...

fv := proc (X) options operator, arrow; X[1]^2+c*X[...

g := [proc (x, y) options operator, arrow; 2*x end ...

gv := proc (v) options operator, arrow; g(v[1],v[2]...

> X0:=evalm(<c,1>);evalm(-gv(X0));
u:=evalm(-gv(X0)/(2*c));

X0 := vector([c, 1])

vector([-2*c, -2*c])

u := vector([-1, -1])

> phi:=t->simplify(fv(evalm(X0+t*u)));
phi(t);

phi := proc (t) options operator, arrow; simplify(f...

c^2-4*c*t+t^2+c+c*t^2

> collect(phi(t),t^2);

(1+c)*t^2-4*c*t+c^2+c

> tmin:=solve(diff(phi(t),t)=0,t);

tmin := 2*c/(1+c)

> X1:=map(normal,evalm(X0+tmin*u));

X1 := vector([c*(-1+c)/(1+c), -(-1+c)/(1+c)])

> (c-1)/(c+1)*<c,1>;

(-1+c)/(1+c)*_rtable[136278940]

> a*<c,1>;

a*_rtable[136278980]

missä

> a:=(c-1)/(c+1);

a := (-1+c)/(1+c)

Mutkikas ilmaisu johtuu siitä, että Maplen jäljiltä kaava näyttää hieman oudolta (vaikka onkin ihan ok).

4.

> with(plottools): with(plots):

Warning, the name arrow has been redefined

Warning, the name arrow has been redefined

> #?polygon

> display(polygon([[0,0],[12,0],[10,5],[0,8]],color=blue,filled=true),line([-10,0],[8,8]),view=[-4..15,0..15]);

[Maple Plot]

No ei tietenkään!

Perustelu 1 : Jos suora kulkee sisäpisteen kautta, voidaan suoraa siirtää pieni matka sen normaalin suuntaan molempiin suuntiin siten,

että se edelleenkin kulkee sisäpisteen kautta. Toiseen suuntaan siirrettäessä funktion arvo kasvaa ja toiseen pienenee.

Perustelu 2:

> f:=a1*x1+a2*x2; grf:=grad(f,[x1,x2]);

f := a1*x1+a2*x2

grf := vector([a1, a2])

Oletamme tietysti, että f ei ole identtisesti 0. Gradientti on kaikkialla vakiovektori, joka ei ole 0. Siten sisäpisteessä ei ole ääriarvoa.

5.

A-annos B-annos

kaloreita 700 g 500 g

proteiiniä 10 g 35 g

hinta 1.5 eu 2 eu

A-annoksia x1 kpl, B-annoksia x2 kpl.

Kohdefunktio f(x1,x2) = 1.5 x1 + 2 x2

Rajoite-ehdot:

700 x1 + 500 x2 >= 3100

10 x1 + 35 x2 >= 100

> f:=(x1,x2)->1.5*x1+2*x2:

Piirretään rajoite-ehtosuorat punaisella ja kohdefunktion korkeussuoraparvi sinisellä. Minimiarvo kohdefunktiolle saadaan sillä sinisellä suoralla, joka kulkee punaisten suorien leikkauspisteen kautta (Sen alapuolella olevat eivät toteuta molempia rajoite-ehtoja.)

> display(plot(solve(7*x1+5*x2=31,x2),x1=0..10),plot(solve(x1+3.5*x2=10,x2),x1=0..10),seq(plot(solve(1.5*x1+2*x2=c,x2),x1=0..10,color=blue),c=1..10));

[Maple Plot]

> solve({7*x1+5*x2=31,x1+3.5*x2=10},{x1,x2});

{x2 = 2., x1 = 3.}

> fmin:=f(3,2);

fmin := 8.5

> display(plot(solve(7*x1+5*x2=31,x2),x1=0..10),plot(solve(x1+3.5*x2=10,x2),x1=0..10),plot(solve(1.5*x1+2*x2=fmin,x2),x1=0..10,color=blue));

[Maple Plot]

Piirtämiseen voidaan käyttää myös plots[inequal] - funktiota:

Väritetään käypä alue ("feasible") siniselllä ja sen komplementti vihreällä.

> eyrajoitteet:={7*x1+5*x2>=31,x1+3.5*x2>=10};

eyrajoitteet := {31 <= 7*x1+5*x2, 10 <= x1+3.5*x2}

> inequal(eyrajoitteet, x1=-1..10, x2=-1..10, optionsexcluded=(color=green,thickness=4),
optionsfeasible=(color=blue,thickness=4));

[Maple Plot]

6.

> f:=(x,y)->(x-3)^2+y^2;

f := proc (x, y) options operator, arrow; (x-3)^2+y...

> phi:=f(x,x^2);

phi := (x-3)^2+x^4

> diff(phi,x)=0;

2*x-6+4*x^3 = 0

> solve(%,x);

1, -1/2+1/2*I*sqrt(5), -1/2-1/2*I*sqrt(5)

Tuo reaalijuuri x=1 paistaa aika hyvin yhtälöstä (käsinlaskua ajatellen). Koska kyseessä on 4. asteen ylöspäin aukeava "paraabeli", on KRP:n oltava minimi.

> display(plot(x^2,x=0..3,y=0..4),plot([[3,0],[1,1]],color=blue),plot([[3,0],[1.1,1.1^2]],color=grey),plot([[3,0],[0.9,0.9^2]],color=grey),scaling=constrained);

[Maple Plot]

Sininen minimijana näyttää erehdyttävästi käyrän normaalilta.

Lagrange:

> f:=(x,y)->(x-3)^2+y^2;
g:=(x,y)->x^2-y;

f := proc (x, y) options operator, arrow; (x-3)^2+y...

g := proc (x, y) options operator, arrow; x^2-y end...

> L:=f(x,y)+lambda*g(x,y);

L := (x-3)^2+y^2+lambda*(x^2-y)

> sys:={diff(L,x)=0,diff(L,y)=0,g(x,y)=0};

sys := {x^2-y = 0, 2*x-6+2*lambda*x = 0, 2*y-lambda...

> solve(sys,{x,y,lambda});

{lambda = 2, x = 1, y = 1}, {x = RootOf(2*_Z^2+2*_Z...
{lambda = 2, x = 1, y = 1}, {x = RootOf(2*_Z^2+2*_Z...

> map(allvalues,{%});

{{lambda = 2, x = 1, y = 1}, {x = -1/2-1/2*I*sqrt(5...

>

Helppo päätellä ilman Mapleakin: muita reaalisia ratkaisuja ei ole.

Geometrisesti on selvää, että ratkaisu on minimi.