Professional Documents
Culture Documents
1 Crtanje ploha
1.1 Crtanje eksplicitno zadanih ploha
1. zadatak
sin( x2 + y2 )
Nacrtajte plohu zadanu jednadžbom f ( x, y) = p za ( x, y) ∈ [−3, 3]2 .
x2 + y2 + 0.001
[ ]:
2. zadatak
Nacrtajte istu plohu kao i u 1. zadatku tako da je svaka točka obojana bojom proporcionalnoj
svojoj visini, to jest vrijednosti svoje z–koordinate (opcija adaptive = True).
Neka budu prikazane i koordinatne osi duljine 4 i radijusa 2. Za kvalitetan prikaz osi treba
naredbom from sage.plot.plot3d.plot3d import axes omogućiti pristup funkciji axes() koja
omogućava definiranje duljine i debljine osi.
Ta funkcija ima oblik axes(scale=1, radius=None) pri čemu su: - scale - duljine osi (sve tri osi
su iste duljine); - radius - radijusi osi.
Za crtanje plohe s osima koordinatmog sustava treba: 1. definirati varijablu koja sadrži sliku osi,
npr. p1 = axes(scale=3, radius=1, color="red"), 2. definirati varijablu koja sadrži sliku plohe,
npr. p2 = plot3d(...), 3. prikazati zajedničku sliku naredbom p1 + p2 ili show( ).
Funkciji show( ) dodajte još dvije opcije: 1. nije prikazan okvir (kvadrat) u kojem se ploha nalazi
(opcija frame = False), 2. duljine jediničnih dužina na osima neka se odnose u omjeru 2 : 2 : 1.5
1
(opcija aspect_ratio = (2, 2, 1.5)).
Može se zadati lista boja koje će biti upotrijebljene za bojanje, od najnižih točaka do najviših
(posljednja boja u listi se ne upotrebljava):
[9]: p2 = plot3d (f, (x, -3, 3), (y, -3, 3), adaptive = True, color = ['purple',␣
,→'darkorchid', 'blueviolet', 'indigo', 'midnightblue',
2
'mediumblue',␣
'blue', 'dodgerblue', 'skyblue', 'lightblue', 'aliceblue', 'azure', 'red'] )
,→
Ako lista sadrži samo dvije boje, točke se ne bojaju proporcionalno visini:
[ ]: p2 = plot3d (f, (x, -3, 3), (y, -3, 3), adaptive = True, color = ['blueviolet',␣
,→'indigo'])
3. zadatak
Na istoj slici, nad područjem [−1, 1]2 , nacrtajte kružni i hiperbolički paraboloid (njihove su jed-
nadžbe z = x2 + y2 i z = x2 − y2 ).
3
Pomoću odgovarajućih opcija učinite da: 1. kružni paraboloid bude crven, a hiberbolički zelen
(opcija color ="red" ili "green"), 2. prikazi ploha imaju 30% prozirnosti (opcija opacity = 0.7),
3. jedinice na osima budu jednake duljine (opcija aspect_ratio = (1, 1, 1)), 4. kvaliteta crteža
bude povećana povećanjem upotrijebljenih točaka pri crtanju na 200 u svakom od smjerova (opcija
plot_points = 200 ili plot_points = [200, 200]).
[10]: var ('y')
p1 = plot3d (x^2 + y^2, (x,-1,1), (y,-1,1), opacity = 0.7, color = 'red',␣
,→plot_points = 200, aspect_ratio = (1,1,1), viewer="tachyon")
p1 + p2
[10]:
4
1. zadatak za zadaću
Na istoj slici nad područjem [0, 4π ]2 , prikažite plohe zadane eksplicitnim
jednadžbama z = cos x · cos y i z = sin x · sin y. Prvu obojite žutom (yellow), a drugu
narančastom (orange) bojom.
[ ]:
[1]:
5
5. zadatak
Torus je ploha koja nastaje rotacijom kružnice polumjera r1 oko osi koja je od
njezinoga središta udaljena za r2 .
Ako je kružnica koja rotira okomita na ravninu ( x, y) i ako rotira oko osi z,
parametarske su jednadžbe torusa
x (u, v) = (r2 + r1 cos v) cos u y(u, v) = (r2 + r1 cos v) sin u z(u, v) = r1 sin v za (u, v) ∈
[0, 2π ]2 .
1. Definirajte funkciju torus koja ovisi o vrijednostima r1 i r2 i ima vrijednost
koja je lista navedenih parametarskih jednadžbi [ x (u, v), y(u, v), z(u,v)].
3π
2. Za r1 = 3 nacrtajte tri takve plohe (r2 = 5, 3, 1) za (u, v) ∈ 0, × [0, 2π ] i
2
6
za (u, v) ∈ [0, π ] × [π, 2π ]. Upotrijebite opciju aspect_ratio = (1, 1, 1).
• Definicija torusa.
[18]: var ('r1 r2 u v')
torus (r1,r2) = [(r2 + r1*cos(v))*cos(u), (r2 + r1*cos(v))*sin(u), r1*sin(v)]
show (torus)
• Slika za r1 = 3, r2 = 5.
Međusobni položaj kružnice koja rotira i osi rotacije:
[12]: var ('t')
r1 = 3
r2 = 5
p1 = parametric_plot ([0, t], (t, -4, 4))
p2 = parametric_plot ([r2 + r1*cos(t), r1*sin(t)], (t, 0, 2*pi))
line1 = line2d ([(0, 0), (r2, 0)], linestyle = ':')
line2 = line2d ([(r2, 0), (r2 + r1*cos(pi/4), r1*sin(pi/4))], linestyle = '-.')
t1 = text ("r2 = " + str (r2), (r2/2 + 0.5, 0.2))
t2 = text ("r1 = " + str (r1), (r2 + (r1/2)*cos(pi/4+0.2), (r1/2)*sin(pi/4+0.2)))
t3 = text ("Os rotacije", (0.7, 4.3))
t4 = text ("Kruznica koja rotira", (r2, 3.3))
show (p1 + p2 + line1 + line2 + t1 + t2 + t3 + t4, axes = false, figsize = 5)
7
[19]: parametric_plot3d ((torus.subs(r1=3)).subs(r2=5), (u, 0, 3*pi/2), (v, 0, 2*pi),␣
,→aspect_ratio = (1, 1, 1), viewer="tachyon")
[19]:
[20]: parametric_plot3d (torus (3, 5), (u, 0, pi), (v, pi, 2*pi), aspect_ratio = (1,␣
,→1, 1), viewer="tachyon")
[20]:
8
• Slika za r1 = 3, r2 = 3:
Međusobni položaj kružnice koja rotira i osi rotacije:
[21]: var ('t')
r1 = 3
r2 = 3
p1 = parametric_plot ([0, t], (t, -4, 4))
p2 = parametric_plot ([r2 + r1*cos(t), r1*sin(t)], (t, 0, 2*pi))
line1 = line2d ([(0, 0), (r2, 0)], linestyle = ':')
line2 = line2d ([(r2, 0), (r2 + r1*cos(pi/4), r1*sin(pi/4))], linestyle = '-.')
t1 = text ("r2 = " + str(r2), (r2/2, 0.2))
t2 = text ("r1 = " + str(r1), (r2 + (r1/2)*cos(pi/4+0.2), (r1/2)*sin(pi/4+0.2)))
t3 = text ("Os rotacije", (0.7, 4.3))
9
t4 = text ("Kruznica koja rotira", (r2, 3.3))
show (p1 + p2 + line1 + line2 + t1 + t2 + t3 + t4, axes = false, figsize = 5)
[22]: parametric_plot3d (torus (3, 3), (u, 0, 3*pi/2), (v, 0, 2*pi), aspect_ratio =␣
,→(1, 1, 1), viewer="tachyon")
[22]:
10
[23]: parametric_plot3d (torus (3, 3), (u, 0, pi), (v, pi, 2*pi), aspect_ratio = (1,␣
,→1, 1), viewer="tachyon")
[23]:
11
• Slika za r1 = 3, r2 = 1:
Međusobni položaj kružnice koja rotira i osi rotacije:
[24]: var ('t')
r1 = 3
r2 = 1
p1 = parametric_plot ([0, t], (t, -4, 4))
p2 = parametric_plot ([r2 + r1*cos(t), r1*sin(t)], (t, 0, 2*pi))
line1 = line2d ([(0, 0), (r2, 0)], linestyle = ':')
line2 = line2d ([(r2, 0), (r2 + r1*cos(pi/4), r1*sin(pi/4))], linestyle = '-.')
t1 = text ("r2 = " + str(r2), (r2/2 + 0.1, -0.25))
t2 = text ("r1 = " + str(r1), (r2 + (r1/2)*cos(pi/4+0.2), (r1/2)*sin(pi/4+0.2)))
t3 = text ("Os rotacije", (0.7, 4.3))
12
t4 = text ("Kruznica koja rotira", (r2 + 1.2, 3.3))
show (p1 + p2 + line1 + line2 + t1 + t2 + t3 + t4, axes = false, figsize = 5)
[25]: parametric_plot3d (torus (3, 1), (u, 0, 3*pi/2), (v, 0, 2*pi), aspect_ratio =␣
,→(1, 1, 1), viewer="tachyon")
[25]:
13
[26]: parametric_plot3d (torus (3, 1), (u, 0, pi), (v, pi, 2*pi), aspect_ratio = (1,␣
,→1, 1), viewer="tachyon")
[26]:
14
2. zadatak za zadaću
Plückerovi konoidi su zadani parametarskim jednadžbama
x (u, v) = vcos(u)
y(u, v) = vsin(u)
u(u, v) = sin(ku)
za (u, v) ∈ [0, 2π ]2 .
Nacrtajte Plückerove konoide za k = 2, k = 3 i k = 6. Povećajte broj
upotrijebljenih točaka opcijom plot_points = 200, a omjer duljina jediničnih dužina
na osima zadajte opcijom aspect_ratio = (1, 1, 3).
15
[ ]:
[27]:
16
[28]: implicit_plot3d (f == 1, (x, -3, 3), (y, 0, 3), (z, -2, 2), aspect_ratio = (1,␣
,→1, 1), viewer="tachyon")
[28]:
7. zadatak
Nacrtajte plohu zadani implicitnom jednadžbom x4 − x2 + y4 − y2 + z4 − z2 + 0.5 =
0 za ( x, y, z) ∈ [−1, 1]3 . Nemojte prikazivati okvir (opcija frame = False), a plohu
obojite grimiznom bojom (opcija color = crimson).
[29]: var ('x y z')
implicit_plot3d (x^4 - x^2 + y^4 - y^2 + z^4 - z^2 + 0.5 == 0, (x, -1, 1), (y,␣
,→-1, 1), (z, -1, 1), frame = False, color = 'crimson', viewer = "tachyon")
[29]:
17
3. zadatak za zadaću
Nacrtajte plohu zadanu implicitnom jednadžbom x2 + y2 − z2 = 0 za ( x, y, z) ∈ [−1, 1]3 .
[ ]:
4. zadatak za zadaću
Ploha je zadana implicitnom jednadžbom 16x3 − 48x2 y + 24x2 z − 48xy2 + 16y3 + 24y2 z −
31z3 − 93, 5307z2 − 72z = 0.
Prikažite je za ( x, y, z) ∈ [−5, 4] × [−5, 4] × [−4, 7]. Nemojte crtati okvir.
[ ]:
18
1.4 Crtanje nivo-krivulja
8. zadatak
1. Nacrtajte plohu zadanu eksplicitnom jednadžbom z = x4 − 2x2 y + 2y3 za
( x, y) ∈ [−1, 1]2 . Neka su točke različite visine različito obojane (opcija
adaptive = True).
2. Nacrtajte nivo–krivulje ove plohe. Crtež linija umjesto obojenih područja
možete dobiti opcijom fill = False.
3. Nacrtajte novi prikaz nivo-krivulja primjenom opcije cmap = "rainbow".
Ako želite prikaz slike nekim drugim bojama, a ne nijansama sive, upotrijebite
opciju cmap, kao npr. cmap = "rainbow". Popis svih mogućih paleta za cmap možete
dobiti naredbom sorted(colormaps).
• crtanje plohe:
[30]: var ('x y')
f (x, y) = x^4 - 2*x^2*y + 2*y^3
plot3d (f, (x,-1,1), (y,-1, 1), adaptive = True, viewer = "tachyon")
[30]:
19
• crtanje nivo-krivulja:
[ ]: contour_plot (f, (x,-1,1), (y,-1, 1), fill = False)
20
[32]: contour_plot (f, (x,-1,1), (y,-1, 1), cmap = 'rainbow')
[32]:
21
5. zadatak za zadaću
1. Nacrtajte plohu koja je zadana jednadžbom $z = (xˆ2 - 3ˆ2)(x - 3)ˆ2 + (yˆ2 -
32) 2 $ za ( x, y) ∈ [−3, 3] × [−5, 5]. Neka su točke različite visine različito
obojane (opcija adaptive = True).
2. Nacrtajte njezinih 12 nivo–krivulja (opcija contours = 12, podrazumijevani
broj je oko 5).
3. Na novoj slici nivo-krivulje prikažite u boji primjenom opcije cmap = "Set1".
[ ]:
22