Harj. 6 LV

25.10.02  HA

Alustukset, ohjelmat

>    read("/home/apiola/opetus/peruskurssi/v2-3/302/L/v302.mpl");

>    # read("/p/edu/mat-1.414/maple/v302.mpl");  # Poista kommentti tästä ja lisää edelle!

>    #read("c:\\usr\\heikki\\s02\\v302.mpl");

>    with(LinearAlgebra): with(plots):

>    op(trajenuoli);

proc (A, x0, n) local x, k; x[0] := x0; for k to n do x[k] := A.x[k-1] end do; plots[arrow]([seq([x[k], x[k+1]-x[k]],k = 0 .. n-1)],shape = arrow) end proc
proc (A, x0, n) local x, k; x[0] := x0; for k to n do x[k] := A.x[k-1] end do; plots[arrow]([seq([x[k], x[k+1]-x[k]],k = 0 .. n-1)],shape = arrow) end proc
proc (A, x0, n) local x, k; x[0] := x0; for k to n do x[k] := A.x[k-1] end do; plots[arrow]([seq([x[k], x[k+1]-x[k]],k = 0 .. n-1)],shape = arrow) end proc
proc (A, x0, n) local x, k; x[0] := x0; for k to n do x[k] := A.x[k-1] end do; plots[arrow]([seq([x[k], x[k+1]-x[k]],k = 0 .. n-1)],shape = arrow) end proc

1

>    print(SisF); # Sisätulo funktioavaruudessa, emme kuitenkaan tässä "maanläheisessä" tavassa tarvitse sitä.

proc (f, g, a, b) options operator, arrow; int(f(t_)*g(t_),t_ = a .. b) end proc

Kaikkein opettavaisinta on laskea aivan käsinlaskua simuloiden:

>    f1:=x:

>    a0:=int(f1*1,x=-Pi..Pi)/int(1*1,x=-Pi..Pi);

a0 := 0

>   

>    a1:=int(f1*cos(x),x=-Pi..Pi)/int(cos(x)^2,x=-Pi..Pi);

a1 := 0

>    a2:=int(f1*cos(2*x),x=-Pi..Pi)/int(cos(2*x)^2,x=-Pi..Pi);

a2 := 0

Nämä oltaisiin voitu päätellä integroitavien parittomuuden perusteella suoraan.

>    b1:=int(f1*sin(x),x=-Pi..Pi)/int(sin(x)^2,x=-Pi..Pi);

b1 := 2

>    b2:=int(f1*sin(2*x),x=-Pi..Pi)/int(sin(2*x)^2,x=-Pi..Pi);

b2 := -1

>    projf1:=b1*sin(x)+b2*sin(2*x);

projf1 := 2*sin(x)-sin(2*x)

>    plot([f1,projf1],x=-Pi..Pi,title="Suoran y=x paras approx trig. 2. ast. polynomilla");

[Maple Plot]

>    f2:=x^2:

>    a0:=int(f2*1,x=-Pi..Pi)/int(1*1,x=-Pi..Pi);

a0 := 1/3*Pi^2

>   

>    a1:=int(f2*cos(x),x=-Pi..Pi)/int(cos(x)^2,x=-Pi..Pi);

a1 := -4

>    a2:=int(f2*cos(2*x),x=-Pi..Pi)/int(cos(2*x)^2,x=-Pi..Pi);

a2 := 1

>    b1:=int(f2*sin(x),x=-Pi..Pi)/int(sin(x)^2,x=-Pi..Pi);

b1 := 0

>    b2:=int(f2*sin(2*x),x=-Pi..Pi)/int(sin(2*x)^2,x=-Pi..Pi);

b2 := 0

b-kertoimet ovat heti nähtävissä 0:ksi, koska parillinen (f2) kertaa pariton (sin) on pariton.

>    projf2:=a0+a1*cos(x)+a2*cos(2*x)+b1*sin(x)+b2*sin(2*x);

projf2 := 1/3*Pi^2-4*cos(x)+cos(2*x)

>    plot([f2,projf2],x=-Pi..Pi,title="Paraabelin y=x^2 paras approx trig. 2. ast. polynomilla");

[Maple Plot]

Parittoman/parillisen funktion PNS-approksimaatiossa on vain parittomia/parillisia trig. termejä (sinejä/cosineja).

2.

>    alias(TR=LinearAlgebra[Transpose]):

(a)

>    A:=<<2,3-4*I>|<3+4*I,2>>;

A := Matrix(%id = 135921768)

>    TR(A);

Matrix(%id = 135241724)

>    map(conjugate,%);

Matrix(%id = 138324108)

A on hermiittinen. Siitä seuraa: ominaisarvot reaaliset (spektri makaa reaaliakselilla).

>    Eigenvalues(A);

Vector(%id = 134829672)

Niinpä näkyy makaavan.

(b)

>    B:=<<1/2,(1/2)*I*sqrt(3)>|<(1/2)*I*sqrt(3),1/2>>;

B := Matrix(%id = 134943564)

Symmetrinen on, mutta ei hermiittinen. Symmetrisyys ei ole erityisen hyödyllinen ominaisuus kompleksiselle matriisille.

Katsotaan unitaarisuutta:

>    HermitianTranspose(B).B;

Matrix(%id = 138332060)

On unitaarinen. Ominaisarvojen pitäisi sijaita kompleksitason yksikköympyrän kehällä,

>    Eigenvalues(B);

Vector(%id = 134835032)

>    map(abs,%);

Vector(%id = 134835288)

Niinpä vaan!

c)

>    C:=<<0,1-I,0>|<1+I,0,1-I>|<0,1+I,0>>;

C := Matrix(%id = 138338900)

>    HermitianTranspose(C);

Matrix(%id = 138341052)

>    Eigenvalues(C);

Vector(%id = 134754100)

Tässä nyt oli toinen esimerkki hermiittisestä.

3.

>    A:=<<.5,-.3>|<.6,1.4>>;

A := Matrix(%id = 137102588)

>    trajenuoli(A,<1,1>,10);

[Maple Plot]

>    (oa,ov):=Eigenvectors(A);

oa, ov := Vector(%id = 134770068), Matrix(%id = 134874496)

>    v1:=ov[1..-1,1]: v2:=ov[1..-1,2]:

>    with(plots):

>    kuva1:=display(arrow(v1,shape=arrow),arrow(v2,shape=arrow),traje(A,v1,10),view=[-2..2,-2..2]):

>    op(traje);

proc (A, x0, n) local x, k; x[0] := x0; for k to n do x[k] := A.x[k-1] end do; plotdots(map(convert,[seq(x[k],k = 0 .. n)],list)) end proc

>    arrow([3*v1,3*v2,-3*v1,-3*v2],shape=arrow);[oa,ov];

[Maple Plot]

[Vector(%id = 134770068), Matrix(%id = 134874496)]

Suora y=x vastaa ominaisarvoa 1.099 > 1, sillä virtaus ulospäin. Toisella taas sisäänpäin.

>    ov2:=display(trajenuoli(A,0.1*v2,40),trajenuoli(A,-0.1*v2,40)):ov1:=display(trajenuoli(A,4*v1,40),trajenuoli(A,-4*v1,40)):
display(ov1,ov2);

[Maple Plot]

>    ov2:=display(traje(A,0.1*v2,40),traje(A,-0.1*v2,40)):

>    ov1:=display(traje(A,4*v1,40),traje(A,-4*v1,40)):

>    ovt:=display(ov1,ov2):

>    kuva1:=display(ovt,traje(A,<3,1.8>,20),traje(A,<3.8,2>,20)):

>    display(kuva1,traje(A,<0,1>,10),traje(A,<-4,0>,10),traje(A,<-3.6,-1.46>,40),traje(A,<-3.7,-0.85>,10),view=[-5..5,-5..5]);

[Maple Plot]

>   

>    ovt:=display(ov1,ov2):

>    kuva1:=display(ovt,trajenuoli(A,<3,1.8>,20),traje(A,<3.8,2>,20)):

>    display(kuva1,trajenuoli(A,<0,1>,10),trajenuoli(A,<-4,0>,10),traje(A,<-3.6,-1.46>,40),trajenuoli(A,<-3.7,-0.85>,10),arrow([4*v1,4*v2],color=yellow),view=[-5..5,-5..5]);

[Maple Plot]

4.

>    read("/home/apiola/opetus/peruskurssi/v2-3/302/L/v302.mpl");

>    A:=<<0.8,-4>|<0.3,1.5>>;

A := Matrix(%id = 138352296)

>    (oa,ov):=Eigenvectors(A);

oa, ov := Vector(%id = 134772340), Matrix(%id = 135842308)
oa, ov := Vector(%id = 134772340), Matrix(%id = 135842308)

>    w:=ov[1..-1,1]; lambda:=oa[1]:

w := Vector(%id = 134676264)

>    u:=map(Re,w); v:=map(Im,w);

u := Vector(%id = 134586432)

v := Vector(%id = 134613892)

>    a:=Re(lambda): b:=Im(lambda):

>    uv:=<u|v>;

uv := Matrix(%id = 138378148)

>    C:=<<a,-b>|<b,a>>;

C := Matrix(%id = 135657148)

>    A,uv.C.uv^(-1);

Matrix(%id = 138352296), Matrix(%id = 136349956)

>    r:=abs(lambda);

r := 1.549193339

>    Ckierto:=<<a/r,-b/r>|<b/r,a/r>>;

Ckierto := Matrix(%id = 135201104)

>    arrow([3*u,3*v]);

[Maple Plot]

>    display(trajenuoli(A,0.1*u,10),traje(A,0.1*u,12));

[Maple Plot]

>    display(trajenuoli(C,0.1*u,10),traje(C,0.1*u,12));

[Maple Plot]

>    display(trajenuoli(Ckierto,u,10),traje(Ckierto,0.3*u,50));

[Maple Plot]

>   

5.

>    A:=<<0,.18,0>|<0,0,.71>|<.33,0,.94>>;A,<"juveniles","subadults","adults">;

A := Matrix(%id = 138391756)

Matrix(%id = 138391756), Matrix(%id = 138393580)

>    x[k]=<'j[k]','s[k]','a[k]'>;

x[k] = Vector(%id = 135093208)

>    (oa,ov):=Eigenvectors(A);

oa, ov := Vector(%id = 135215956), Matrix(%id = 138402468)
oa, ov := Vector(%id = 135215956), Matrix(%id = 138402468)

>    lambda[1]:=oa[1];
lambda[3]:=oa[3];

lambda[1] := -.217963698823998575e-1+.205918480469973492*I

lambda[3] := .983592739764799551+0.*I

>    Im(%);

0.

>    lambda[3]:=Re(lambda[3]);

lambda[3] := .983592739764799551

>    abs(lambda[1]);

.2070688348

>    op(trajenuoli);

proc (A, x0, n) local x, k; x[0] := x0; for k to n do x[k] := A.x[k-1] end do; plots[arrow]([seq([x[k], x[k+1]-x[k]],k = 0 .. n-1)],shape = arrow) end proc
proc (A, x0, n) local x, k; x[0] := x0; for k to n do x[k] := A.x[k-1] end do; plots[arrow]([seq([x[k], x[k+1]-x[k]],k = 0 .. n-1)],shape = arrow) end proc
proc (A, x0, n) local x, k; x[0] := x0; for k to n do x[k] := A.x[k-1] end do; plots[arrow]([seq([x[k], x[k+1]-x[k]],k = 0 .. n-1)],shape = arrow) end proc
proc (A, x0, n) local x, k; x[0] := x0; for k to n do x[k] := A.x[k-1] end do; plots[arrow]([seq([x[k], x[k+1]-x[k]],k = 0 .. n-1)],shape = arrow) end proc

>    iterjono:=proc (A, x0, n)
local x, k;
x[0] := x0; for k to n do x[k] := A.x[k-1] end do;
[seq(x[k],k=0..n)];
end proc:

>    A;

Matrix(%id = 138391756)

>    display(trajenuoli(A,<0,15,10>,10),axes=boxed);

[Maple Plot]

>    ov;

Matrix(%id = 134992844)

>    w:=ov[1..-1,1]; rv:=map(Re,ov[1..-1,3]);

w := Vector(%id = 135320740)

rv := Vector(%id = 138407360)

>    u:=map(Re,w); v:=map(Im,w);

u := Vector(%id = 138407440)

v := Vector(%id = 138407480)

>    display(arrow([10*u,10*v,10*rv]),trajenuoli(A,<0,15,10>,40),axes=boxed);

[Maple Plot]

Pöllöjen määrä tulee hiljalleen alas reaalista ominaisarvoa vastaavan ominaisvektorin suunnassa. Katsotaan numeroina:

>    iterjono(A,<0,15,10>,40);

[Vector(%id = 138407520), Vector(%id = 138407560), Vector(%id = 138407600), Vector(%id = 138407680), Vector(%id = 138407760), Vector(%id = 138407800), Vector(%id = 138407880), Vector(%id = 138407960), ...
[Vector(%id = 138407520), Vector(%id = 138407560), Vector(%id = 138407600), Vector(%id = 138407680), Vector(%id = 138407760), Vector(%id = 138407800), Vector(%id = 138407880), Vector(%id = 138407960), ...
[Vector(%id = 138407520), Vector(%id = 138407560), Vector(%id = 138407600), Vector(%id = 138407680), Vector(%id = 138407760), Vector(%id = 138407800), Vector(%id = 138407880), Vector(%id = 138407960), ...
[Vector(%id = 138407520), Vector(%id = 138407560), Vector(%id = 138407600), Vector(%id = 138407680), Vector(%id = 138407760), Vector(%id = 138407800), Vector(%id = 138407880), Vector(%id = 138407960), ...
[Vector(%id = 138407520), Vector(%id = 138407560), Vector(%id = 138407600), Vector(%id = 138407680), Vector(%id = 138407760), Vector(%id = 138407800), Vector(%id = 138407880), Vector(%id = 138407960), ...
[Vector(%id = 138407520), Vector(%id = 138407560), Vector(%id = 138407600), Vector(%id = 138407680), Vector(%id = 138407760), Vector(%id = 138407800), Vector(%id = 138407880), Vector(%id = 138407960), ...
[Vector(%id = 138407520), Vector(%id = 138407560), Vector(%id = 138407600), Vector(%id = 138407680), Vector(%id = 138407760), Vector(%id = 138407800), Vector(%id = 138407880), Vector(%id = 138407960), ...

Otetaan vielä 40 iteraatiota siitä, mihin viimeksi tultiin (suunnnilleen).

>    iterjono(A,<3.3,0.6,9.8>,40);

[Vector(%id = 138409960), Vector(%id = 138410000), Vector(%id = 138410080), Vector(%id = 138410120), Vector(%id = 138410200), Vector(%id = 138410280), Vector(%id = 138410360), Vector(%id = 138410440), ...
[Vector(%id = 138409960), Vector(%id = 138410000), Vector(%id = 138410080), Vector(%id = 138410120), Vector(%id = 138410200), Vector(%id = 138410280), Vector(%id = 138410360), Vector(%id = 138410440), ...
[Vector(%id = 138409960), Vector(%id = 138410000), Vector(%id = 138410080), Vector(%id = 138410120), Vector(%id = 138410200), Vector(%id = 138410280), Vector(%id = 138410360), Vector(%id = 138410440), ...
[Vector(%id = 138409960), Vector(%id = 138410000), Vector(%id = 138410080), Vector(%id = 138410120), Vector(%id = 138410200), Vector(%id = 138410280), Vector(%id = 138410360), Vector(%id = 138410440), ...
[Vector(%id = 138409960), Vector(%id = 138410000), Vector(%id = 138410080), Vector(%id = 138410120), Vector(%id = 138410200), Vector(%id = 138410280), Vector(%id = 138410360), Vector(%id = 138410440), ...
[Vector(%id = 138409960), Vector(%id = 138410000), Vector(%id = 138410080), Vector(%id = 138410120), Vector(%id = 138410200), Vector(%id = 138410280), Vector(%id = 138410360), Vector(%id = 138410440), ...
[Vector(%id = 138409960), Vector(%id = 138410000), Vector(%id = 138410080), Vector(%id = 138410120), Vector(%id = 138410200), Vector(%id = 138410280), Vector(%id = 138410360), Vector(%id = 138410440), ...

Huonostihan tässä pöllöille käy.

6.

Tässä olisi se vastaava hyvä tarina, mutta antaapa sen olla. Itse suoritus on aivan vastaavanlainen.