Portál AbcLinuxu, 5. května 2025 15:09
draw3d
vykreslovat v polárních souřadnicích? Pomocí plot3d
to jde hezky pomocí [transform_xy,polar_to_xy]
, ale nepodařilo se mi najít žádný způsob, jak to dělat pomocí draw3d
.f(x):=(x+3)^3-(x+17)^2-x+5; derivace_f: diff(f(x),x); extremy: solve(derivace_f=0); draw2d(explicit(f(x),x,-10,10), yrange = [-300,-100], color = red, line_type = dots, implicit(x=extremy[1],x,-10,10,y,-500,1500), implicit(x=extremy[2],x,-10,10,y,-500,1500), color = green, implicit(y=rhs(f(extremy[1])),x,-10,10,y,-500,1500), implicit(y=rhs(f(extremy[2])),x,-10,10,y,-500,1500) )PS: mimochodem, nepodařilo se mi přijít na to, jak vyřešit, abych hodnoty toho seznamu
extremy
nemusel vykreslovat ručně jeden po druhém. Celý seznam se tomu x
předat nedá a ani jsem nenašel způsob, jak třeba pomocí cyklu for
procházet položky seznamu, jak to funguje běžně v BASHi či Pythonu.
f(x):= (x+3)^3-(x+17)^2-x+5; stps: solve(diff(f(x), x), x); local_extrema: makelist(rhs(f(stps[i])), i, 1, length(stps));Formát seznamu si upravte dle potřeby.
for extrem in seznam_extremu: draw(y=extrem)
from sympy import Symbol, diff, solveset, S from sympy.plotting import plot x = Symbol('x') f = (x+3)**3-(x+17)**2-x+5 # Hledám stacionární body (v oboru reálných čísel) včetně hodnot sp_x = list(solveset(diff(f, x), domain=S.Reals)) # převádím rovnou na seznam sp_y = [f.subs(x, spx) for spx in sp_x] # příslušné hodnoty ve stacionárních bodech # Graf funkce včetně vykreslení lokálních extrémů # Pozn.: Více křivek se vykresluje prostým výpisem fcí, popř. # konstantních hodnot. Protože hodnoty máme výše v seznamu, # je potřeba je rozbalit, což se udělá jako *list, u nás *sp_y. f_plot = plot(f, *sp_y, (x, -10, 5), size=(12, 8), markers=[{'args': [sp_x, sp_y, 'ro']}])Výsledek je v příloze.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.