H/harj6ohje.mws
6.3.02 HA
Alustukset
Kts. myös työarkkeja: L/Lineaarialbegra.mws, L/ominaisarvot.mws, L/diagva.mws (tai samojen html-muotoja).
> restart:
> with(LinearAlgebra): with(linalg):
> alias(Inv=MatrixInverse,IdM=IdentityMatrix,Diag=DiagonalMatrix,Tr=Transpose):
> with(plots):
>
V2L:=vek->convert(vek,list):
v2l:=vek->convert(vek,list):
L2V:=lis->convert(lis,Vector):
l2v:=lis->convert(lis,vector):
> jana3dpv:=(p,v)->spacecurve([p,V2L(Vector(p)+Vector(v))],thickness=2,color=blue):
LV teht. 1 (vahingossa väärä paikka -- antaa olla)
Määrittele ko arctan funktioksi f .
Tason yhtälön voit kirjoittaa suoraan lausekkeena:
> T:=f(x0,y0)+D[1](f)(x0,y0)*(x-x0)+D[2](f)(x0,y0)*(y-y0);
Piirtämistä varten on kätevää toimia vaikkapa tämän mallin mukaan:
> hpmax:=1.5:htmax:=0.8: # "hpintamax ja htasomax, kannattaa vaihdella.
>
pinta:=plot3d(f(x,y),x=x0-hpmax..x0+hpmax,y=y0-hpmax..y0+hpmax,style=patchcontour):
> taso:=plot3d(T,x=x0-htmax..x0+htmax,y=y0-htmax..y0+htmax,style=PATCH,color=red,grid=[7,7]):
> display(pinta,taso);
Lisäpiirteenä voit vielä sijoittaa kuvaan normaalisuoran pisteen (x0,y0) kautta. Siihen on yllä määritelty apufunktio jana2dpv. (pv viittaa muotoon piste ja vektori )
Muodosta normaalivektori N ihan vaan listana.
> N:=[jotainx,jotainy,jotainz]; p0:=[x0,y0,f(x0,y0)];
> display(jana3dpv(p0,N),jana3dpv(p0,-N));
Nyt voit yhdistää kaikki:
> display(pinta,taso,jana3dpv(p0,N),jana3dpv(p0,-N));
Oli aika pitkälle neuvottu, mutta ehkä lisää aktiviteettia.
AV teht. 4, arvostelu: max 2 p.
1. osa: Fibonacci-ominaisuus: matriiiskertolaskua ja induktio: => 1 p.
loppuosa diagonalisoiden. Kannattaa käyttää käänteismatriisikaavaa teht. paperin lopussa.
Ehdotus: Johda kaavat käyttäen merkintöjä ja , sijoita vasta lopuksi 2. asteen yhtälöstä saamasi lukuarvot. Näin säästät kirjoitusvaivoja ja selkeys säilyy paremmin.
LV teht. 3.
Jos toimit, kuten mallitiedostoissa, komennat:
> omsys:=Eigenvectors(A); oma:=omys[1]: omv:=omsys[2]:
Normeeratut ominaisvektorit saat "maanläheisimmin" tähän tapaan:
> x1:=omv[1..3,1]; x1:=x1/Norm(x1,2); # Kun näet, että toimii, vaihda ainakin ekaan komentoon kaksoispiste.
> x2:= ...; x3:=...;
> X:=<x1|x2|x3>;
>
LV teht. 4.
Sovitaan, että näissä riittää laskea pelkät ominaisarvot. Saatetaan kukin neliömuoto pääakselimuotoon, mutta riittää piirtää kuva siten, että ajatellaan peruskoordinaatisto pääakselikoordinaatistoksi. (Ikäänkuin kääntäisimme itsemme pääakselikannan osoittamaan asentoon.)
Neliömuoto pääakselikoordinaateissa saadaan kätevästi tyyliin
> Q:=<y1|y2>.DD.<y1,y2>;
> implicitplot(q=1,x1=-2..2,x2=-2..2);
> implicitplot(Q=1,y1=-2..2,y2=-2..2,grid=[40,40]); # Pääakselikoordinaatteja merkitään y1 ja y2.
grid-attribuutilla saadaan tihennetyksi laskentahilaa, jolloin kuvan tarkkuus paranee.
b)-kohdassa tulee vastaan 3. asteen yhtälö. Elävässä elämässä (toisin kuin välikokeissa) joudutaan mutkikkaisiin kaavoihin, niin tässäkin. Maple käyttää 3. asteen yhtälön ratkaisukaavaa.
Kokeile huvin vuoksi, mutta siirry sitten liukulukulaskentaan. Se käy helposti lisäämällä yksi desimaalipiste johonkin matriisin A alkioon.
Piirtämiseen voit kokeilla implicitplot3d :tä.
c)-kohdassa on taas sattumalta siistit kokonaislukuominaisarvot.
Neliömuoto saadaan samaan tyyliin kuin edellä. Toisaalta myös näin:
> Q:=add(lam[k]*y[k]^2,k=1..4);
Jostain syystä sum ei toimi tässä add: n sijasta. Sensijaan, jos vektori konvertoidaan listaksi, niin toimii:
>
L:=convert(lam,list);
sum(L[i]*y[i]^2,i=1..4);
c)-kohdassa voidaan piirtäminen unohtaa. (Tietysti voidaan ottaa 2 muuttujaa kerrallaan, mutta se olkoon tässä ylimääräistä asian harrastusta.)
LV teht. 5
Katso mallia: L/ominaisarvot.html (ja .mws) kohdasta pääakseliprobleema . Siinä on laskettu luentotehtävä.
Hyperbelin parametriesitystä muodostettaessa on syytä muistaa kaava:
> cosh(t)^2 - sinh(t)^2: % = simplify(%);
Piirrä hyperbeli ensin y1y2-koordinaatistoon, missä y1 on "x-akseli" ja y2 "y-akseli". Huomaat, että negatiivinen haara on piirrettävä erikseen. Tässä on sopivia piirtokomentoja:
>
pos:=plot([y1,y2,t=-2..2],view=[-4..4,-4..4],scaling=constrained):
neg:=plot([y1,-y2,t=-2..2],view=[-4..4,-4..4],scaling=constrained):
display(pos,neg);
Tietysti miinus-merkki voi tulla y1:een, riippuen siitä, miten indeksoit.
Tässä on kohtuullisia parametrien arvoja lopulliselle kuvalle. Tarvitset V2L -funktion, joka on mm. ominaisarvot.mws :n alustukset -osassa.
>
phaara:=plot([op(V2L(x1x2p)),t=-3..3],x1=-8..8,x2=-8..8):
nhaara:=plot([op(V2L(x1x2m)),t=-3..3]):
display(phaara,nhaara);
Huom! Jos haluat välttyä Maplen satunnaisen järjestämisen aiheuttamalta yllätysmomentilta, voit ilmaista hyperbelin yhtälön muodossa, jossa esiintyvät ominaisarvot. Tällöin annat Maplen sijoittaa laskemansa ominaisarvot paikalleen, jolloin järjestys ei vaikuta kuvaan, vaikka akselit saattavat eri ajoissa olle eri nimiset.
Jos taas teet "kertaluonteisen", jossa joka ajolla pitää olla valmis pieneen käsityöhön, niin se on myös hyvä, kunhan olet asiasta tietoinen.
implicitplot -varmistus on hyvä tehdä.