# Zadanie 4 var('x,y,z,a,b,wartosc') f=x+2*z g=x^2+y^2+z^2-5; h=x^2-y^2-1; 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] hx=diff(h,x) #pochodne cząstkowe g2 hy=diff(h,y) hz=diff(h,z) print 'grad(h)=',[hx,hy,hz] rownania1=[f==wartosc,g==0,h==0, a*gx+b*hx==fx, a*gy+b*hy==fy, a*gz+b*hz==fz] print 'UKŁAD RÓWNAŃ' print rownania1 rozwiazania1=solve(rownania1,wartosc,x,y,z,a,b) print 'ROZWIĄZANIA' print rozwiazania1 print 'Trzeba jeszcze znaleźć punkty zbioru {g=h=0}' print 'w których grad(g) i grad(h) są liniowo zależne.' print 'Ponieważ grad(g) nie zeruje się na zbiorze {g=0}' print 'sprawdzamy tylko warunek grad(h)=a*grad(g)' rownania2=[f==wartosc, g==0,h==0, a*hx==gx, a*hy==gy, a*hz==gz] rozwiazania2=solve(rownania2,wartosc,x,y,z,a) print rozwiazania2 if rozwiazania2==[ ]: print 'W tym zadaniu nie ma takich punktów.' wartosci=[wartosc.subs_expr(rozwiazanie[0]) for rozwiazanie in rozwiazania1+rozwiazania2] print 'WARTOSCI' print wartosci print 'MAKSIMUM', max(wartosci) print 'MINIMUM', min(wartosci)