H/harj10ohje
7.4.02 HA
Alustukset
> restart:
Warning, the name changecoords has been redefined
> with(plots):with(plottools):
Warning, the name arrow has been redefined
>
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;
> 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]];
> fv:=x->f(x[1],x[2]): # Taas tämä vektoriversio on kätevä.
> kansiz:=map(fv,pohja); # Funktion arvot pohjanurkissa.
> kansi3d:=zip((x,y)->[op(x),y],pohja,kansiz); # Eleganttia temppu!
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);
2.
> karjet:=[-1,0],[1,0],[0,1]:
> display(polygon([karjet],filled=true,color=yellow));
>
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!
> plot([suora,1/x],x=0..3,y=0..3);
> 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);
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);
> plot3d(exp(y/x),x=0..2,y=x^2..2*x,style=patchcontour);
>
5.
> restart:
Warning, the name changecoords has been redefined
> x:=r*cos(Theta);y:=r*sin(Theta);
> r:=2*sqrt(cos(2*Theta));
-taso:
> plot(r,Theta=-Pi/4..Pi/4,labels=['Theta','r']);
> plot([x,y,Theta=-Pi/4..Pi/4]);
>
6.
> restart:
Warning, the name changecoords has been redefined
> with(plots):
> z1:=x^2+y^2; z2:=(4-x^2-y^2)/3;
> 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);
>
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(%);
>
Tässä ei mitään laskentaa voinut tapahtua.