k2z5

2865 days ago by aweber

print 'Zadanie 5A' var('x,y,z,a,wartosc') m=3; n=2; #m=2; n=3 z0=1 f=m*x+y+z print 'f=',f g=m^2*x^2+n*y^2-1/3*z^3 print 'g=',g fx=diff(f,x); #pochodne cząstkowe f fy=diff(f,y); fz=diff(f,z); print 'grad(f)=',[fx,fy,fz]; gx=diff(g,x) #pochodne cząstkowe więzow g gy=diff(g,y) gz=diff(g,z) print 'grad(g)=',[gx,gy,gz] 
       
Zadanie 5A
f= 3*x + y + z
g= 9*x^2 + 2*y^2 - 1/3*z^3
grad(f)= [3, 1, 1]
grad(g)= [18*x, 4*y, -z^2]
rownania1=[f==wartosc,g==0, a*gx==fx, a*gy==fy, a*gz==fz] print 'UKŁAD RÓWNAŃ' print rownania1 
       
UKŁAD RÓWNAŃ
[3*x + y + z == wartosc, 9*x^2 + 2*y^2 - 1/3*z^3 == 0, 18*a*x == 3,
4*a*y == 1, -a*z^2 == 1]
rozwiazania1=solve(rownania1,wartosc,x,y,z,a,solution_dict=True) print 'ROZWIĄZANIA' for r in rozwiazania1: print 'dla',(r[x],r[y],r[z]),'wartość funkcji',r[wartosc] 
       
ROZWIĄZANIA
dla (-32/243, -16/81, 8/9) wartość funkcji 8/27
print 'Trzeba jeszcze znaleŸć punkty zbioru {g=0} w których grad(g)=0.' rownania2=[f==wartosc, g==0, gx==0, gy==0, gz==0] rozwiazania2=solve(rownania2,wartosc,x,y,z,solution_dict=True) for r in rozwiazania2: print 'dla',(r[x],r[y],r[z]),'wartość funkcji',r[wartosc] if rozwiazania2==[ ]: print 'W tym zadaniu nie ma takich punktów.' 
       
Trzeba jeszcze znaleŸć punkty zbioru {g=0} w których grad(g)=0.
dla (0, 0, 0) wartość funkcji 0
print 'Badamy ekstrema na brzegu zbioru, który jest elipsą w płaszczyźnie z=', z0 rownania3=[wartosc==f, g==0, z==1, fx==a*gx, fy==a*gy] print 'Równania'; print rownania3 
       
Badamy ekstrema na brzegu zbioru, który jest elipsą w płaszczyźnie
z= 1
Równania
[wartosc == 3*x + y + z, 9*x^2 + 2*y^2 - 1/3*z^3 == 0, z == 1, 3 ==
18*a*x, 1 == 4*a*y]
rozwiazania3=solve(rownania3,wartosc,x,y,z,a,solution_dict=True) print 'Rozwiazania' for r in rozwiazania3: print 'dla',(r[x],r[y],r[z]),'wartość funkcji',r[wartosc] 
       
Rozwiazania
dla (1/9*sqrt(2), 1/6*sqrt(2), 1) wartość funkcji 1/2*sqrt(2) + 1
dla (-1/9*sqrt(2), -1/6*sqrt(2), 1) wartość funkcji -1/2*sqrt(2) + 1
rozwiazania=rozwiazania1+rozwiazania2+rozwiazania3 wartosci=[rozwiazanie[wartosc] for rozwiazanie in rozwiazania] print 'WARTOSCI' print wartosci print 'MAKSIMUM', max(wartosci) print 'MINIMUM', min(wartosci) 
       
WARTOSCI
[8/27, 0, 1/2*sqrt(2) + 1, -1/2*sqrt(2) + 1]
MAKSIMUM 1/2*sqrt(2) + 1
MINIMUM 0
xmax=sqrt(1/(3*m^2))+0.1; ymax=sqrt(1/(3*n))+0.1 poziomice=contour_plot(f.subs(z=(3*(m^2*x^2+n*y^2))^(1/3)),(x,-xmax,xmax),(y,-ymax,ymax), plot_points=100, contours=100, fill=False, labels=True, label_inline_spacing=1) e1=ellipse((0,0),1/(m*sqrt(3)),1/sqrt(n*3)) e2=ellipse((0,0),1/(m*sqrt(3)),1/sqrt(n*3),fill=True,alpha=0.3) for r in rozwiazania: poziomice=poziomice+disk((r[x],r[y]), 0.01, (0, 2*pi), color='red') wnetrze=contour_plot(m^2*x^2+n*y^2,(x,-xmax,xmax),(y,-ymax,ymax),contours=[1/3,1], cmap=[(1,0.8,0.5),(1,1,1),(1,1,1)], aspect_ratio=1) print 'Rzut na płaszczyznę (X,Y)' print 'podstawienie z =',(3*(m^2*x^2+n*y^2))^(1/3) show(poziomice+e1+e2,aspect_ratio=1,figsize=[10,10]) 
       
Rzut na płaszczyznę (X,Y)
podstawienie z = (27*x^2 + 6*y^2)^(1/3)
print 'Zbiór A w przestrzeni z gradientami funkcji f w punktach krytycznych' a=0.5 #polowa szerokosci kostki var('x,y,z') #zmienne #powierzchnia=implicit_plot3d(g==0 , (x, -a, a), (y, -a, a), (z, -0.1, 1), plot_points=200, #color='violet',aspect_ratio=true) var('kat,promien') powierzchnia=parametric_plot3d((cos(kat)*promien/(sqrt(3)*m),sin(kat)*promien/(sqrt(3*n)),promien^(2/3)), (promien, 0, 1), (kat, -pi, pi),plot_points=200, mesh=True, color='violet') for r in rozwiazania: powierzchnia=powierzchnia+arrow((r[x],r[y],r[z]),(r[x]+fx.subs(x=r[x],y=r[y],z=r[z])/5, r[y]+fy.subs(x=r[x],y=r[y],z=r[z])/5, r[z]+fz.subs(x=r[x],y=r[y],z=r[z])/5)) show(powierzchnia,figsize=6,aspect_ratio=true) 
       
Zbiór A w przestrzeni z gradientami funkcji f w punktach krytycznych
print 'Zbiór A jest ograniczony' print 'Z tw Weierstrassa funkcja f, ktora jest ciągła, osiąga kresy' 
       
Zbiór A jest ograniczony
Z tw Weierstrassa funkcja f, ktora jest ciągła, osiąga kresy