H/harj10ohje

7.4.02 HA

Alustukset

> restart:

Warning, the name changecoords has been redefined

> with(plots):with(plottools):

> setoptions3d(axes=boxed,orientation=[-30,50]):

Annamme erityisesti erilaisia piirtämisohjeita. Aloitetaan AV-tehtävistä.

Kts. myös int23d.mws .

AV-harjoitukset

AV 1.

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

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

> pinta:=plot3d(f(x,y),x=0..2,y=1..3,view=[0..2,1..3,0..50]):

Käytetään tässä hiukan erilaista tekniikkaa kuin seuraavissa, jotka ovat yleisluonteisempia. Toisaalta on hyvä oppia myös polygonien käyttö, joka on kätevää, kun halutaan piirtää suoria särmiä. Tarvitaan pakkaus plottools .

> pohja:=[[0,1],[2,1],[2,3],[0,3]];pohja3d:=[[0,1,0],[2,1,0],[2,3,0],[0,3,0]];

pohja := [[0, 1], [2, 1], [2, 3], [0, 3]]

pohja3d := [[0, 1, 0], [2, 1, 0], [2, 3, 0], [0, 3,...

> fv:=x->f(x[1],x[2]): # Taas tämä vektoriversio on kätevä.

> kansiz:=map(fv,pohja); # Funktion arvot pohjanurkissa.

kansiz := [1, 3, 45, 27]

> kansi3d:=zip((x,y)->[op(x),y],pohja,kansiz); # Eleganttia temppu!

kansi3d := [[0, 1, 1], [2, 1, 3], [2, 3, 45], [0, 3...

Rakennetaan sivuseinä kerrallaan, jätetään kaarevareunaiset seinät auki.

> display(polygon(pohja3d),polygon([pohja3d[1],kansi3d[1],kansi3d[2],pohja3d[2]]),polygon([pohja3d[3],kansi3d[3],kansi3d[4],pohja3d[4]]),pinta,style=patchnogrid);

[Maple Plot]

2.

> karjet:=[-1,0],[1,0],[0,1]:

> display(polygon([karjet],filled=true,color=yellow));

[Maple Plot]

>

Mieti kuvien rakentelu "seinittäin". Kokeile vaikka seinä kerrallaan displayta.

Sama tyyli toistuu miltei kaikissa. Seinät ovat parametrimuotoisia pintoja, 2 parametria, joista toinen on z.

3.

> suora:=solve(2*x+2*y=5,y); # Silkkaa laiskuutta!

suora := -x+5/2

> plot([suora,1/x],x=0..3,y=0..3);

[Maple Plot]

> hypseina:=plot3d([x,1/x,z],x=0.5..2,z=0..ln(x),labels=[x,y,z]):

> suoraseina:=plot3d([x,suora,z],x=0.5..2,z=0..ln(x),labels=[x,y,z]):

> display(hypseina,suoraseina,plot3d(ln(x),x=0.5..2,y=1/x..suora),style=patchcontour);

[Maple Plot]

Kyseessä on kuvassa näkyvien kuppien tilavuuksien erotus.

4.

> parseina:=plot3d([x,x^2,z],x=0..2,z=0..exp(x^2/x),labels=[x,y,z]):

> suoraseina:=plot3d([x,2*x,z],x=0..2,z=0..exp(2*x/x),labels=[x,y,z]):

> display(parseina,suoraseina,plot3d(exp(y/x),x=0..2,y=x^2..2*x,color=red),style=patch);

[Maple Plot]

> plot3d(exp(y/x),x=0..2,y=x^2..2*x,style=patchcontour);

[Maple Plot]

>

5.

> restart:

Warning, the name changecoords has been redefined

> x:=r*cos(Theta);y:=r*sin(Theta);

x := r*cos(Theta)

y := r*sin(Theta)

> r:=2*sqrt(cos(2*Theta));

r := 2*sqrt(cos(2*Theta))

Theta*r -taso:

> plot(r,Theta=-Pi/4..Pi/4,labels=['Theta','r']);

[Maple Plot]

> plot([x,y,Theta=-Pi/4..Pi/4]);

[Maple Plot]

>

6.

> restart:

Warning, the name changecoords has been redefined

> with(plots):

> z1:=x^2+y^2; z2:=(4-x^2-y^2)/3;

z1 := x^2+y^2

z2 := 4/3-1/3*x^2-1/3*y^2

> x:=r*cos(Theta); y:=r*sin(Theta);

x := r*cos(Theta)

y := r*sin(Theta)

> ala:=plot3d([x,y,z1],r=0..1,Theta=0..2*Pi):

> yla:=plot3d([x,y,z2],r=0..1,Theta=0..2*Pi):

> display(ala,yla,style=patchcontour);

[Maple Plot]

>

Loppviikko:

Piirtäminen menee samaan tyyliin kuin AV.

Laskemiseen on esimerkkejä int23d.mws :ssä. Hyvä tyyli on

> restart:

Warning, the name changecoords has been redefined

> Int(Int(int(f(x,y,z),z=c1(x,y)..c2(x,y)),y=b1(x)..b2(x)),x=a1..a2):

> %=value(%);

Int(Int(int(f(x,y,z),z = c1(x,y) .. c2(x,y)),y = b1...

Tässä ei mitään laskentaa voinut tapahtua.

6.

> restart:with(plots):

Warning, the name changecoords has been redefined

Pallokoordinaattiesitys antaa luontevan pallopinnan parametriesityksen. Siinä säde
rho on vakio ja parametreina ovat leveyskulma Theta ja korkeuskulma phi . Edellinen menee [ 0 .. 2*Pi] ja j

älkimmäinen [0 .. Pi] .
Kirjoitetaan proc:ksi, joka palauttaa rho-säteisen pallon parametriesityksen:

> pallopinta:=proc(rho)
local x,y,z;
x:=rho*sin(phi)*cos(Theta);
y:=rho*sin(phi)*sin(Theta);
z:=rho*cos(phi);
[x,y,z]
end:

> pallopinta(2*a);

[2*a*sin(phi)*cos(Theta), 2*a*sin(phi)*sin(Theta), ...

> pallo:=plot3d(pallopinta(2),Theta=0..2*Pi,phi=0..Pi,style=patch,scaling=constrained):

Lieriö on luontevinta esittää siirretyissä lieriökoordinaateissa, jossa origona on piste (0,a). Parametreina siis tämän origon
suhteen otettu napakulma ja z.

> lierio:=plot3d([cos(Theta),1+sin(Theta),z],Theta=0..2*Pi,z=-2..2,color=red,labels=["x","y","z"]):

> display(pallo,lierio,axes=box);

[Maple Plot]

Entä, jos haluamme katsoa lieriötä ja sen kattoa ja pohjaa, ts. sitä varsinaista kappaletta.

> a:=1:ylapinta:=plot3d([r*cos(Theta),r*sin(Theta),sqrt(4*a^2-r^2)],Theta=0..Pi,r=0..2*a*sin(Theta),scaling=constrained,axes=box,color=red):

> alapinta:=plot3d([r*cos(Theta),r*sin(Theta),-sqrt(4*a^2-r^2)],Theta=0..Pi,r=0..2*a*sin(Theta),scaling=constrained,axes=box,color=blue):

> lierio:=plot3d([cos(Theta),1+sin(Theta),z],Theta=0..2*Pi,z=-1.8..1.7,color=yellow,labels=["x","y","z"]):

> display(lierio,ylapinta,alapinta,style=patch);

[Maple Plot]

Piirrettiin lieriö hiukan matalammaksi, jotta kansi ja pohja paremmin pilkistävät.