/* [wxMaxima batch file version 1] [ DO NOT EDIT BY HAND! ]*/ /* [ Created with wxMaxima version 23.08.0 ] */ /* [wxMaxima: section start ] Ejemplo 1: Encontrar los puntos de mayor y menor distancia al origen de la curva definida por x²+3xy+y²-4=0 [wxMaxima: section end ] */ /* [wxMaxima: input start ] */ kill(all)$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxdraw2d(grid=true, line_type=solid, line_width=3, nticks=200, xaxis =true, xaxis_type=solid, yaxis =true, yaxis_type=solid, color=blue, implicit(x^2+3*x*y+y^2-4=0, x, -3,3, y, -3,3), line_width=1, color=red, explicit(x,x,-3,3), proportional_axes = xy )$ /* [wxMaxima: input end ] */ /* [wxMaxima: subsect start ] Resolviendo a lo bestia [wxMaxima: subsect end ] */ /* [wxMaxima: input start ] */ cond:solve(x^2+3*x*y+y^2-4=0,y); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(fy1(x),rhs(cond[1])); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(fy2(x),rhs(cond[2])); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(f1(x),x^2+(fy1(x))^2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(f2(x),x^2+(fy2(x))^2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* Buscando minimos en la primera rama */ diff(f1(x),x); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ der1:ratsimp(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ solve(der1=0,x); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ls:num(der1)/3,ratsimp; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ iz:first(ls); de:ls-iz; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ iz^2=de^2; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol:solve(%,x); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol[1];ev(der1,sol[1]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol[2];ev(der1,sol[2]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(fy1(x),sol[1]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ diff(f1(x),x,2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(%,sol[1]),ratsimp; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* Buscando minimos en la segunda rama */ diff(f2(x),x); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ der2:ratsimp(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ls:num(der2)/3,ratsimp; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ iz:first(ls); de:ls-%; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ iz^2=de^2; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol:solve(%,x); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(der2,sol[1]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(der2,sol[2]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(fy2(x),sol[2]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ diff(f2(x),x,2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(%,sol[2]),ratsimp; /* [wxMaxima: input end ] */ /* [wxMaxima: subsect start ] Con los multiplicadores de Lagrange [wxMaxima: subsect end ] */ /* [wxMaxima: input start ] */ kill(all)$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(f(x,y),x^2+(y)^2); define(L(x,y,l),f(x,y)+l*(x^2+y^2+3*x*y-4)); define(lig(x,y),x^2+y^2+3*x*y-4); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e1:diff(L(x,y,l),x); e2:diff(L(x,y,l),y); el:diff(L(x,y,l),l); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ realonly:true$ sol:solve([e1,e2,el],[x,y,l]); nn:length(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ for kk:1 thru nn do print("f =",ev(f(x,y),sol[kk]) , "* Punto ", sol[kk] )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(hes(x,y,l),hessian(L(x,y,l),[x,y,l]))$ vec:matrix( [dx], [dy] )$ vect:[dx,dy]$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ minor(hes(x,y,l),3,3)$ define(FQ0(dx,dy),expand(vect.%.vec)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ k:1$ sol[k]; jacobian([lig(x,y)],[x,y]); ev(%,sol[k]).vect; dlig:solve(%,dx); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ0(dx,dy),dlig); ev(%,sol[k]); ratsimp(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ k:2$ sol[k]; jacobian([lig(x,y)],[x,y]); ev(%,sol[k]).vect; dlig:solve(%,dx); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ0(dx,dy),dlig); ev(%,sol[k]); ratsimp(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ptos1:makelist( [rhs(sol[k][1]),rhs(sol[k][2])] , k,1,2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxdraw2d(grid=true, line_type=solid, line_width=3, nticks=200, xaxis =true, xaxis_type=solid, yaxis =true, yaxis_type=solid, color=blue, implicit(lig(x,y)=0, x, -3,3, y, -3,3), line_width=1, color=red, explicit(x,x,-3,3), proportional_axes = xy, point_type = filled_circle , point_size =2, color=black, points(ptos1) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Ejemplo 2: Encontrar la mínima distancia al origen de la curva (x − 3)² + (y − 4)² = a² con a=10 y a=2 [wxMaxima: section end ] */ /* [wxMaxima: input start ] */ kill(all)$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ a:10$ define(f(x,y),x^2+(y)^2); define(lig(x,y),(x-3)^2+(y-4)^2-a^2); define(L(x,y,l),f(x,y)+l*lig(x,y)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxdraw2d(grid=true, line_type=solid, line_width=3, nticks=200, xaxis =true, xaxis_type=solid, yaxis =true, yaxis_type=solid, color=blue, implicit(lig(x,y)=0, x, -10,15, y, -10,15), proportional_axes = xy , point_type = filled_circle , point_size =2, color=black, points([[0,0]]) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ realonly:true$ e1:diff(L(x,y,l),x); e2:diff(L(x,y,l),y); el:diff(L(x,y,l),l); sol:solve([e1,e2,el],[x,y,l]); nn:length(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ for kk:1 thru nn do print("f =",ev(f(x,y),sol[kk]) , "* Punto ", sol[kk] )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(hes(x,y,l),hessian(L(x,y,l),[x,y,l])); vec:matrix( [dx], [dy] )$ vect:[dx,dy]$ minor(hes(x,y,l),3,3); define(FQ0(dx,dy),expand(vect.%.vec)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ k:1$ sol[k]; jacobian([lig(x,y)],[x,y]); ev(%,sol[k]).vect; dlig:solve(%,dx); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ0(dx,dy),dlig); ev(%,sol[k]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ k:2$ sol[k]; jacobian([lig(x,y)],[x,y]); ev(%,sol[k]).vect; dlig:solve(%,dx); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ0(dx,dy),dlig); ev(%,sol[k]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ptosmax:makelist( [rhs(sol[k][1]),rhs(sol[k][2])] , k,1,1); ptosmin:makelist( [rhs(sol[k][1]),rhs(sol[k][2])] , k,2,2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxdraw2d(grid=true, line_type=solid, line_width=2, nticks=200, xaxis =true, xaxis_type=solid, yaxis =true, yaxis_type=solid, color=blue, implicit(lig(x,y)=0, x, -10,15, y, -10,15), proportional_axes = xy , point_type = filled_circle , point_size =2, color=black, points([[0,0]]), color=red, points(ptosmax) , color=dark_green, points( ptosmin))$ /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Ejemplo 3. Encontrar los extremos de f(x,y) = xy con x^2+y^2=1 [wxMaxima: section end ] */ /* [wxMaxima: input start ] */ kill(all)$ define(f(x,y),x*y); define(lig(x,y),x^2+y^2-1); define(L(x,y,l),f(x,y)+l*lig(x,y)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ realonly:true$ eq1:diff(L(x,y,l),x); eq2:diff(L(x,y,l),y); eq3:diff(L(x,y,l),l); sol:solve([eq1,eq2,eq3],[x,y,l]); nn:length(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ eq1*y-eq2*x,ratsimp; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ for kk:1 thru nn do print("f =",ev(f(x,y),sol[kk]) , "* Punto ", sol[kk] )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(hes(x,y,l),hessian(L(x,y,l),[x,y,l])); vec:matrix( [dx], [dy] )$ vect:[dx,dy]$ minor(hes(x,y,l),3,3); define(FQ0(dx,dy),expand(vect.%.vec)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ k:1$ sol[k]; jacobian([lig(x,y)],[x,y]); ev(%,sol[k]).vect; dlig:solve(%,dx); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ0(dx,dy),dlig); ev(%,sol[k]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ k:2$ sol[k]; jacobian([lig(x,y)],[x,y]); ev(%,sol[k]).vect; dlig:solve(%,dx); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ0(dx,dy),dlig); ev(%,sol[k]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ k:3$ sol[k]; jacobian([lig(x,y)],[x,y]); ev(%,sol[k]).vect; dlig:solve(%,dx); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ0(dx,dy),dlig); ev(%,sol[k]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ k:4$ sol[k]; jacobian([lig(x,y)],[x,y]); ev(%,sol[k]).vect; dlig:solve(%,dx); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ0(dx,dy),dlig); ev(%,sol[k]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ptos1:makelist( [rhs(sol[k][1]),rhs(sol[k][2]),ev(f(x,y),sol[k])] , k,1,2); ptos2:makelist( [rhs(sol[k][1]),rhs(sol[k][2]),ev(f(x,y),sol[k])] , k,3,4); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxdraw3d( xu_grid = 25, yv_grid = 25, view = [78,15], surface_hide = true, parametric_surface( cos(u), sin(u), sin(u)*cos(u), u, 0, 2*%pi, v, -%pi, %pi) , point_type = filled_circle , point_size =2, color=red, points(ptos1), color=black, points(ptos2) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Ejemplo 4: Extremos de x²+y²-x-y+1 en la región x²+y²<=a, a=2 (a=1) [wxMaxima: section end ] */ /* [wxMaxima: input start ] */ kill(all)$ define(f(x,y),x^2+y^2-x-y+1); /* [wxMaxima: input end ] */ /* [wxMaxima: subsect start ] Extremos libres [wxMaxima: subsect end ] */ /* [wxMaxima: input start ] */ eq1:diff(f(x,y),x); eq2:diff(f(x,y),y); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol1:solve([eq1,eq2],[x,y]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(f(x,y),sol1); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(hes(x,y),hessian(f(x,y),[x,y])); /* [wxMaxima: input end ] */ /* [wxMaxima: subsect start ] Extremos en la frontera [wxMaxima: subsect end ] */ /* [wxMaxima: input start ] */ define(lig(x,y),x^2+y^2-2); define(L(x,y,l),f(x,y)+l*lig(x,y)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e1:diff(L(x,y,l),x); e2:diff(L(x,y,l),y); el:diff(L(x,y,l),l); sol:solve([e1,e2,el],[x,y,l]); nn:length(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ for kk:1 thru nn do print("f =",ev(f(x,y),sol[kk]) , "* Punto ", sol[kk] )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ print("f =",ev(f(x,y),sol1) , "* Punto ", sol1 )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(hes(x,y,l),hessian(L(x,y,l),[x,y,l])); vec:matrix( [dx], [dy] )$ vect:[dx,dy]$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ minor(hes(x,y,l),3,3); define(FQ0(dx,dy),expand(vect.%.vec)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ k:1$ sol[k]; jacobian([lig(x,y)],[x,y]); ev(%,sol[k]).vect; dlig:solve(%,dx); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ0(dx,dy),dlig); ev(%,sol[k]); ratsimp(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ k:2$ sol[k]; jacobian([lig(x,y)],[x,y]); ev(%,sol[k]).vect; dlig:solve(%,dx); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ0(dx,dy),dlig); ev(%,sol[k]); ratsimp(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxdraw3d( xu_grid = 20, yv_grid = 20, view = [100,35], point_type=filled_circle, point_size = 2,color = red, points([[1,1,f(1,1)]]), surface_hide = true, color = blue, parametric_surface( sqrt(2)*cos(u), sqrt(2)*sin(u), 2*sin(u)^2+2*cos(u)^2-sqrt(2)*cos(u)- sqrt(2)*sin(u)+1, u, 0, 2*%pi, v, -%pi, %pi), color =dark_green, points([[-1,-1,f(-1,-1)]]) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxdraw3d( xu_grid = 20, yv_grid = 20, view = [100,35], point_type=filled_circle, point_size = 2,color = red, points([[1,1,f(1,1)]]), surface_hide = true, color = blue, parametric_surface( sqrt(2)*cos(u), sqrt(2)*sin(u), 2*sin(u)^2+2*cos(u)^2-sqrt(2)*cos(u)- sqrt(2)*sin(u)+1, u, 0, 2*%pi, v, -%pi, %pi), color =dark_green, points([[-1,-1,f(-1,-1)]]), color =black, points([[1/2,1/2,f(1/2,1/2)]]) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] ¿Es realmente sol[2] un mínimo local? [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ sol[2]; ev(f(x,y),sol[2]); k:2$ pmin:[rhs(sol[k][1]),rhs(sol[k][2])]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ a:1$ b:1$ wxdraw2d(grid=true, line_type=solid, line_width=3, nticks=200, xaxis =true, xaxis_type=solid, yaxis =true, yaxis_type=solid, color=blue, implicit(lig(x,y)=0, x, a-3,a+1, y,b-3,b+1), proportional_axes = xy , color=black, explicit(x,x,0,1), point_type = filled_circle , point_size =2, color=red, points([pmin]) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxdraw2d(yrange=[0.65,1.1], xrange=[a-.2,a+.02], point_type = filled_circle, point_size = 2, line_type=solid, line_width = 3, color = red, points([[a,f(a,a)]]), color =dark_green, explicit(f(x,x),x,a-.2,a), /* me acerco por y=x */ color=blue, explicit(f(x,sqrt(2-x^2)),x,a-.2,a) /* me acerco por la frontera */ ); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxdraw3d( xu_grid = 20, yv_grid = 20, view = [83,57], surface_hide = true, dimensions = [750,750], line_type=solid, line_width=3, xrange=[0.25,1.5], yrange=[0.25,1.5], zrange=[0.5,1.5], parametric_surface( sqrt(2)*cos(u), sqrt(2)*sin(u), 2*sin(u)^2+2*cos(u)^2-sqrt(2)*cos(u)- sqrt(2)*sin(u)+1, u, 0, %pi/2, v, 0, %pi) , point_type=filled_circle, point_size =2, color = red, points([[a,b,f(a,b)]]))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxdraw3d( xu_grid = 20, yv_grid = 20,view = [83,57], surface_hide = true,dimensions = [750,750], line_type=solid, line_width=3, xrange=[0.25,1.5], yrange=[0.25,1.5], zrange=[0.5,1.5], parametric_surface( sqrt(2)*cos(u), sqrt(2)*sin(u), 2*sin(u)^2+ 2*cos(u)^2-sqrt(2)*cos(u)-sqrt(2)*sin(u)+1, u, 0, %pi/2, v, 0, %pi), point_type=filled_circle, point_size =2,color = red, points([[a,b,f(a,b)]]), color =dark_green, parametric_surface( t, t, f(t,t), t, 0, 1, t, 0,1 ) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Que ocurre en el caso que impongamos x>=0. Luego no tenemos máximo global (estaba en x<0). Los calculos muestran [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ f(0,y); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxplot2d([f(0,y)],[y,-sqrt(2),sqrt(2)])$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Punto (0,1/2) no es mínimo local [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ f(0,1/2),float; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f(0.01,1/2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f(0,1/2)-f(x,1/2),factor; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* PUNTO (0,1/2) Me acerco por las x, no hay mínimo */ wxplot2d([f(x,1/2)],[x,0,.5]); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Punto (0,-sqrt(2)) [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ f(0,-sqrt(2));float(%); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Punto (0,sqrt(2)) [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ f(0,sqrt(2));float(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(rec(x,t),+sqrt(2)-(x)*t); /* t>0 */ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f(0,sqrt(2))-f(x,rec(x,t)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ratsimp(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ float(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxdraw2d(grid=true, line_type=solid, line_width=3, nticks=200, xaxis =true, xaxis_type=solid, yaxis =true, yaxis_type=solid, yrange=[-2,2], color=blue, implicit(lig(x,y)=0, x, a-3,a+1, y,b-3,b+1), color=black, explicit(rec(x,1.3),x,0,1), explicit(rec(x,1),x,0,1),explicit(rec(x,.25),x,0,1/2),explicit(rec(x,10),x,0,1/4), point_type = filled_circle , point_size =2, color=red, points([[0,sqrt(2)]]) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ rec(0,0.6); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ xx:0.001$ f(0,sqrt(2)),float; f(xx,rec(xx,0.6)),float; f(xx,rec(xx,1.3)),float; f(xx,rec(xx,1.0)),float; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kill(a)$ f(0,sqrt(2))-f(x,rec(x,t)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ratsimp(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ coeff(%,x); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxplot2d([ f(0,sqrt(2))-f(x,rec(x,0.1)), f(0,sqrt(2))-f(x,rec(x,100)) ] ,[x,0,.1] , [y,-.2,1]); /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Ejemplo 5: Encontrar los todos los puntos críticos y los posibles extremos de x²+y²+z²-2x+4y-3 en el dominio x²+y²+z²<=9 (¿y si x>=0?) [wxMaxima: section end ] */ /* [wxMaxima: subsect start ] Extremos libres [wxMaxima: subsect end ] */ /* [wxMaxima: input start ] */ kill(all)$ define(f(x,y,z),(x)^2+y^2+(z)^2-2*x+4*y-3); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e1:diff(f(x,y,z),x); e2:diff(f(x,y,z),y); e3:diff(f(x,y,z),z); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ realonly:true$ solf:solve([e1,e2,e3],[x,y,z]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(f(x,y,z),solf); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ hessian(f(x,y,z),[x,y,z]); /* [wxMaxima: input end ] */ /* [wxMaxima: subsect start ] Extremos en la frontera x^2+y^2+z^2=9 [wxMaxima: subsect end ] */ /* [wxMaxima: input start ] */ define(lig(x,y,z),x^2+y^2+z^2-9); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(L(x,y,z,l),f(x,y,z)+l*lig(x,y,z)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e1:diff(L(x,y,z,l),x); e2:diff(L(x,y,z,l),y); e3:diff(L(x,y,z,l),z); el:diff(L(x,y,z,l),l); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol:solve([e1,e2,e3,el],[x,y,z,l]); nn:length(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ for kk:1 thru nn do print("f =",ev(f(x,y,z),sol[kk]) , "* Punto ", sol[kk] )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ print("f =",ev(f(x,y,z),solf) , "* Punto ", solf )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(f(x,y,z),sol[1]),float; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(f(x,y,z),sol[2]),float; /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Weierstrass: f( sol[1] ) > f( sol[2] ) -> sol[1] maximo sobre la frontera y sol[2] minimo sobre la frontera [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] Combrobando los extremos con la segunda diferencial [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ define(hes(x,y,z,l),hessian(L(x,y,z,l),[x,y,z,l])); vec:matrix( [dx], [dy], [dz] )$ vect:[dx,dy,dz]$ M0:minor(hes(x,y,z,l),4,4); define(FQ0(dx,dy,dz),expand(vect.M0.vec)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kk:1$ jacobian([lig(x,y,z)],[x,y,z]); ev(%,sol[kk])$ %.vect; sollig:solve(%,dy); ev(FQ0(dx,dy,dz),sollig); ev(%,sol[kk]),factor; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kk:2$ jacobian([lig(x,y,z)],[x,y,z]); ev(%,sol[kk])$ %.vect; sollig:solve(%,dy); ev(FQ0(dx,dy,dz),sollig); ev(%,sol[kk]),factor; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ draw3d(view = [111, 40], xu_grid = 50,axis_3d = false, xtics=false,ytics=false,ztics=false,proportional_axes = xyz, parametric_surface(3*sin(x)*cos(t),3*sin(x)*sin(t),3*cos(x),t,0,2*%pi,x,0,%pi), point_type=filled_circle, point_size=2, color = black, points([[x0,y0,0]]) , color = green, enhanced3d = false, xu_grid = 20, explicit(0,x,-3,3,y,-3,3) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] ¿Es realmente sol[2] un mínimo local? Vemos que pasa si nos acercamos por el interior de la región. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ sol[2]; float(sol[2]); fmin:ev(f(x,y,z),%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ x0:rhs(sol[2][1]); y0:rhs(sol[2][2]); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Nos acercamos a sol[2] por el plano z=0. La ligadura es entonces x^2+y^2=9 [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ f(x,y,0); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ lig(x,y,0); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxdraw2d( line_type=solid, line_width=3, color =blue, xlabel="x", ylabel="f(x,y,0) por la frontera", explicit(f(x,-sqrt(9-x^2),0),x,x0-.2,x0+.2) , point_type=filled_circle, point_size=2, color = dark_green, points([[x0,fmin]]) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* Me acerco por las y con la x=x0 fija */ wxdraw2d( line_type=solid, line_width=3, xlabel="y", ylabel="f(x0,y,0), x fija", color =blue, explicit( f(x0,y,0) ,y,y0-.2,y0) , point_type=filled_circle, point_size=2, color = dark_green, points([ [y0,f(x0,y0,0)]]) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* Me acerco por las x con la y=y0 fija */ wxdraw2d( line_type=solid, line_width=3, xlabel="x", ylabel="f(x,y0,0), y fija", color =blue, explicit( f(x,y0,0) ,x,x0-.2,x0) , point_type=filled_circle, point_size=2, color = dark_green, points([ [x0,f(x0,y0,0)] ] ) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: subsect start ] Extremos en la región x^2+y^2+z^2<=9 y x>=0 [wxMaxima: subsect end ] */ /* [wxMaxima: comment start ] Imponiendo ahora que x>=0. Lo anterior se mantiene pero no tenemos máximo global pues este estaba en x<0. Luego el máximo ha de estar en la cara x=0. Estudiamos el problema de extremos si x=0. [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ kill(g)$ define(g(y,z),f(0,y,z)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* Extremos libres */ eq1:diff(g(y,z),z); eq2:diff(g(y,z),y); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol1:solve([eq1,eq2],[y,z]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ yy0:rhs(sol1[1][1]), float; zz0:rhs(sol1[1][2]), float; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ g(y,z); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ g(yy0,zz0); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(hes(y,z),hessian(g(y,z),[y,z])); /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] ¿Es un mínimo local de f? [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ print("f =",f(0,yy0,zz0) , "* Punto ", [0,yy0,zz0] )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* Restringido a la frontera x=0 */ wxdraw3d( xu_grid = 25, yv_grid = 25, view = [78,15], explicit(g(y,z),y,yy0-.1,yy0+.1,z,zz0-.1,zz0+.1), point_type=filled_circle, point_size = 2,color = red, points([[yy0,zz0,g(yy0,zz0)]]))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* nos acercamos por las "y" y es mínimo */ wxdraw2d( line_type=solid, line_width=3, xlabel="y", ylabel="f(0,y0,0) y=y0", color =blue, explicit( f(0,y,0) ,y,yy0-.5,yy0+.5), point_type=filled_circle, point_size=2, color = dark_green, points([ [yy0,f(0,yy0,0)] ] ), color=black,label([concat("Punto ", "[", 0,",",yy0,",",zz0,"]", ", f =", f(0,yy0,zz0) ) ,-2,-6.775] ) ) $ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* nos acercamos por las z y es mínimo*/ wxdraw2d( line_type=solid, line_width=3, xlabel="z", ylabel="f(0,yy0,z) y=y0", color =blue, explicit( f(0,yy0,z) ,z,zz0-.5,zz0+.5), point_type=filled_circle, point_size=2, color = dark_green, points([ [zz0,f(0,yy0,zz0)] ]), color=black,label([concat("Punto ", "[", 0,",",yy0,",",zz0,"]", ", f =", f(0,yy0,zz0) ) , 0,-6.775] ) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* nos acercamos por el interior las x>0, no es mínimo */ xx0:0$ wxdraw2d( line_type=solid, line_width=3, xlabel="x", ylabel="f(x,yy0,0) x=x0", color =blue, explicit( f(x,yy0,zz0) ,x,xx0,xx0+.5), point_type=filled_circle, point_size=2, color = dark_green, points([ [zz0,f(0,yy0,zz0)] ]), color=black,label([concat("Punto ", "[", 0,",",yy0,",",zz0,"]", ", f =", f(0,yy0,zz0) ) , 0.3,-7.1] ) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] Con x=0 y la ligadura de la frontera [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ lig(x,y,z); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ remfunction(L)$ define(L(y,z,l),g(y,z)+l*(lig(0,y,z))); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e1:diff(L(y,z,l),y); e2:diff(L(y,z,l),z); el:diff(L(y,z,l),l); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ solg:solve([e1,e2,el],[y,z,l]); nn:length(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ for kk:1 thru nn do print("f =",ev(f(0,y,z),solg[kk]) , "* Punto ", sol[kk] )$ /* [wxMaxima: input end ] */ /* [wxMaxima: comment start ] sol[1] maximo absoluto en la frontera y sol[2] mínimo absoluto en la frontera. Por Weiestrass sol[1] ha de ser el máximo absoluto de f en toda la región. [wxMaxima: comment end ] */ /* [wxMaxima: comment start ] ¿Es un mínimoo sol[2] un mínimo local? [wxMaxima: comment end ] */ /* [wxMaxima: input start ] */ xx0:0; yy0:ev(y,solg[2]); zz0:ev(z,solg[2]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* interior de la frontera x=0*/ wxdraw2d( line_type=solid, line_width=3, xlabel="x", ylabel="f(x,yy0,0) x=x0", color =blue, explicit( f(0,-sqrt(9-z^2),z) ,z,zz0-.5,zz0+.5), point_type=filled_circle, point_size=2, color = dark_green, points([ [zz0,f(0,yy0,zz0)] ]), color=black,label([concat("Punto ", "[", 0,",",yy0,",",zz0,"]", ", f =", f(0,yy0,zz0) ) , 0.,-5.85] ) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* Interior de la región x>0, "y" y "z" fijas */ wxdraw2d( line_type=solid, line_width=3, xlabel="x", ylabel="f(x,yy0,zz0)", color =blue, explicit( f(x,yy0,zz0) ,x,xx0,xx0+.5), point_type=filled_circle, point_size=2, color = dark_green, points([ [zz0,f(0,yy0,zz0)] ]), color=black,label([concat("Punto ", "[", 0,",",yy0,",",zz0,"]", ", f =", f(0,yy0,zz0) ) , 0.3,-6.1] ) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Ejemplo 6: Encontrar los puntos de mayor y menor distancia al origen de la curva definida por x²+y²−8y-6x−75=0 [wxMaxima: section end ] */ /* [wxMaxima: input start ] */ kill(all)$ define(f(x,y),x^2+y^2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(lig(x,y),(y^2−8*y+x^2−6*x−75)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxdraw2d( implicit(lig(x,y)=0 , x, -10,17, y, -10,17), xaxis=true, yaxis=true, point_type=filled_circle, point_size = 1,color = red, points([[0,0]]) ); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(L(x,y,l),f(x,y)+l*lig(x,y)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e1:diff(L(x,y,l),x); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e2:diff(L(x,y,l),y); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ el:diff(L(x,y,l),l); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol:solve([e1,e2,el],[x,y,l]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(f(x,y),sol[1]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(f(x,y),sol[2]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(hes(x,y,l),hessian(L(x,y,l),[x,y,l])); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ vec:matrix( [dx], [dy] ); vect:[dx,dy]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol[1]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ rhs(sol[1][3]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ M0:minor(hes(x,y,rhs(sol[1][3])),3,3); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kill(dx,dy)$ define(FQ0(dx,dy),expand(vect.M0.vec)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ jacobian([lig(x,y)],[x,y]);ev(%,sol[1]); %.vect; solve(%,dx); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ0(dx,dy),%[1]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol[2]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ rhs(sol[2][3]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ M1:minor(hes(x,y,rhs(sol[2][3])),3,3); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kill(dx,dy)$ define(FQ1(dx,dy),expand(vect.M1.vec)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ jacobian([lig(x,y)],[x,y]);ev(%,sol[2]); %.vect; solve(%,dx); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ1(dx,dy),%[1]); /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Ejemplo 7: Extremos de x+y si 4y^2+x^2-1=0 [wxMaxima: section end ] */ /* [wxMaxima: input start ] */ define(f(x,y),x+y); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(lig(x,y),(4*y^2+x^2-1)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(L(x,y,l),f(x,y)+l*lig(x,y)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e1:diff(L(x,y,l),x); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e2:diff(L(x,y,l),y); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ el:diff(L(x,y,l),l); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol:solve([e1,e2,el],[x,y,l]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(f(x,y),sol[1]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(f(x,y),sol[2]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(hes(x,y,l),hessian(L(x,y,l),[x,y,l])); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ vec:matrix( [dx], [dy] ); vect:[dx,dy]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol[1]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ rhs(sol[1][3]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ M0:minor(hes(x,y,rhs(sol[1][3])),3,3); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kill(dx,dy)$ define(FQ0(dx,dy),expand(vect.M0.vec)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ jacobian([lig(x,y)],[x,y]);ev(%,sol[1]); %.vect; solve(%,dx); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ0(dx,dy),%[1]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ rhs(sol[2][3]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ M1:minor(hes(x,y,rhs(sol[2][3])),3,3); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kill(dx,dy)$ define(FQ1(dx,dy),expand(vect.M1.vec)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ jacobian([lig(x,y)],[x,y]);ev(%,sol[2]); %.vect; solve(%,dx); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ1(dx,dy),%[1]); /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Ejemplo 8: Encontrar los puntos de x^2+2*y^2+4*z^2-9 más cercanos y alejados del punto (0,0,3) [wxMaxima: section end ] */ /* [wxMaxima: input start ] */ remfunction(f); define(f(x,y,z),(x)^2+y^2+(z-3)^2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(lig(x,y,z),x^2+2*y^2+4*z^2-9); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ draw3d(xlabel = "x", ylabel = "y", implicit(lig(x,y,z) , x, -4,4, y, -4,4,z,-4,4), xaxis=true, yaxis=true, point_type=filled_circle, point_size = 1,color = red, points([[0,0,3]]))$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(L(x,y,z,l),f(x,y,z)+l*lig(x,y,z)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e1:diff(L(x,y,z,l),x); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e2:diff(L(x,y,z,l),y); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e5:diff(L(x,y,z,l),z); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ el:diff(L(x,y,z,l),l); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ realonly:true$ sol:solve([e1,e2,e5,el],[x,y,z,l]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(hes(x,y,z,l),hessian(L(x,y,z,l),[x,y,z,l])); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ s1:sol[1][4];s2:sol[2][4];s3:sol[3][4];s4:sol[4][4]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ vect:[dx,dy,dz]; vec:matrix( [dx], [dy] ,[dz]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ k:1$ minor(hes(x,y,z,l),4,4)$ M1:ev(%,sol[k][4]); define(FQ1(dx,dy,dz), expand(vect.M1.vec)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ jacobian([lig(x,y,z)],[x,y,z]);ev(%,sol[k]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ %.vect; solve(%,dz); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ1(dx,dy,dy),%[1]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ draw3d(xlabel = "x", ylabel = "y", implicit( x^2+2*y^2+4*z^2-9=0 , x, -4,4, y, -4,4,z,-4,4), xaxis=true, yaxis=true, point_type=filled_circle, point_size = 1,color = red, points([[0,0,3]]), color = black, points([ [rhs(sol[k][1]),rhs(sol[k][2]),rhs(sol[k][3]) ] ]) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ k:2$ minor(hes(x,y,z,l),4,4)$ ev(%,sol[k][4]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ minor(hes(x,y,z,l),4,4)$ M1:ev(%,sol[k][4]); define(FQ1(dx,dy,dz), expand(vect.M1.vec)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ jacobian([lig(x,y,z)],[x,y,z]);ev(%,sol[k]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ %.vect; solve(%,dz); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ1(dx,dy,dy),%[1]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ draw3d(xlabel = "x", ylabel = "y", implicit( x^2+2*y^2+4*z^2-9=0 , x, -4,4, y, -4,4,z,-4,4), xaxis=true, yaxis=true, point_type=filled_circle, point_size = 1,color = red, points([[0,0,3]]), color = black, points([ [rhs(sol[k][1]),rhs(sol[k][2]),rhs(sol[k][3]) ] ]) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ k:3$ minor(hes(x,y,z,l),4,4)$ ev(%,sol[k][4]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ minor(hes(x,y,z,l),4,4)$ M1:ev(%,sol[k][4]); define(FQ1(dx,dy,dz), expand(vect.M1.vec)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ jacobian([lig(x,y,z)],[x,y,z]);ev(%,sol[k]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ %.vect; solve(%,dz); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ1(dx,dy,dy),%[1]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ draw3d(xlabel = "x", ylabel = "y", implicit( x^2+2*y^2+4*z^2-9=0 , x, -4,4, y, -4,4,z,-4,4), xaxis=true, yaxis=true, point_type=filled_circle, point_size = 1,color = red, points([[0,0,3]]), color = black, points([ [rhs(sol[k][1]),rhs(sol[k][2]),rhs(sol[k][3]) ] ]) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ k:4$ minor(hes(x,y,z,l),4,4)$ ev(%,sol[k][4]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ minor(hes(x,y,z,l),4,4)$ M1:ev(%,sol[k][4]); define(FQ1(dx,dy,dz), expand(vect.M1.vec)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ jacobian([lig(x,y,z)],[x,y,z]);ev(%,sol[k]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ %.vect; solve(%,dz); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ1(dx,dy,dy),%[1]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ draw3d(xlabel = "x", ylabel = "y", implicit( x^2+2*y^2+4*z^2-9=0 , x, -4,4, y, -4,4,z,-4,4), xaxis=true, yaxis=true, point_type=filled_circle, point_size = 1,color = red, points([[0,0,3]]), color = black, points([ [rhs(sol[k][1]),rhs(sol[k][2]),rhs(sol[k][3]) ] ]) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Ejemplo 9: Extremos de (x+y)^2+(1+z)^2+4 en la región x^2+y^2+z^2<=9 [wxMaxima: section end ] */ /* [wxMaxima: input start ] */ remfunction(f); define(f(x,y,z),(x+y)^2+(1+z)^2+4); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e1:diff(f(x,y,z),x); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e2:diff(f(x,y,z),y); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e5:diff(f(x,y,z),z); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol:solve([e1,e2,e5],[x,y,z]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(L(x,y,z,l),f(x,y,z)+l*(x^2+y^2+z^2-9)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e1:diff(L(x,y,z,l),x); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e2:diff(L(x,y,z,l),y); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e5:diff(L(x,y,z,l),z); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ el:diff(L(x,y,z,l),l); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol:solve([e1,e2,e5,el],[x,y,z,l]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ L(x,y,z,l); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(hes(x,y,z,l),hessian(L(x,y,z,l),[x,y,z,l])); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ vec:matrix( [dx], [dy], [dz] ); vect:[dx,dy,dz]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ M0:minor(hes(x,y,z,0),4,4); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kill(dx,dy,dz)$ define(FQ0(dx,dy,dz),expand(vect.M0.vec)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ FQ0(dx,dy,2*dx-2*dy);ratsimp(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ vect.M0.vec;expand(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ Mm2:minor(hes(x,y,z,-2),4,4); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kill(dx,dy,dz)$ define(FQm2(dx,dy,dz),vect.Mm2.vec);ratsimp(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ FQm2(dx,dy,-2*dx-2*dy); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ratsimp(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ M2:minor(hes(x,y,z,2),4,4); kill(dx,dy,dz)$ define(FQ2(dx,dy,dz),vect.M2.vec);ratsimp(%); FQ2(dx,dy,0);ratsimp(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ M2:minor(hes(x,y,z,-2/3),4,4); kill(dx,dy,dz)$ define(FQ2(dx,dy,dz),vect.M2.vec);ratsimp(%); FQ2(dx,dy,0);ratsimp(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ vec:matrix( [dx], [dy], [dz] ); vect:[dx,dy,dz]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ M0:minor(hes(x,y,z,l),4,4); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kill(dx,dy,dz)$ define(FQ0(dx,dy,dz),expand(vect.M0.vec)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ FQ0(dx,dy,2*dx-2*dy);ratsimp(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ vect.M0.vec;expand(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ Mm2:minor(hes(x,y,z,-2),4,4); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kill(dx,dy,dz)$ define(FQm2(dx,dy,dz),vect.Mm2.vec);ratsimp(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ FQm2(dx,dy,-2*dx-2*dy); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ratsimp(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ M2:minor(hes(x,y,z,2),4,4); kill(dx,dy,dz)$ define(FQ2(dx,dy,dz),vect.M2.vec);ratsimp(%); FQ2(dx,dy,0);ratsimp(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ M2:minor(hes(x,y,z,-2/3),4,4); kill(dx,dy,dz)$ define(FQ2(dx,dy,dz),vect.M2.vec);ratsimp(%); FQ2(dx,dy,0);ratsimp(%); /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Ejemplo 10: Extremos de f=x^2+y^2+z^2+x+y+z sobre x^2+y^2+z^2=4 [wxMaxima: section end ] */ /* [wxMaxima: input start ] */ remfunction(f); define(f(x,y,z),(x)^2+y^2+(z)^2+x+y+z); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e1:diff(f(x,y,z),x); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e2:diff(f(x,y,z),y); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e5:diff(f(x,y,z),z); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol:solve([e1,e2,e5],[x,y,z]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(lig(x,y,z),x^2+y^2+z^2-4); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(L(x,y,z,l),f(x,y,z)+l*lig(x,y,z)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e1:diff(L(x,y,z,l),x); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e2:diff(L(x,y,z,l),y); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e5:diff(L(x,y,z,l),z); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ el:diff(L(x,y,z,l),l); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol:solve([e1,e2,e5,el],[x,y,z,l]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kill(dx,dy,dz)$ vec:matrix( [dx], [dy], [dz] ); vect:[dx,dy,dz]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(hes(x,y,z,l),hessian(L(x,y,z,l),[x,y,z,l])); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ l1:rhs(sol[1][4]); M0:ratsimp(minor(hes(x,y,z,l1),4,4)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kill(dx,dy,dz)$ define(FQ0(dx,dy,dz),expand(vect.M0.vec)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ jacobian([lig(x,y,z)],[x,y,z]).vec; ev(%,sol[1]); solve(%,dz); difv:rhs(%[1]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ FQ0(dx,dy,difv);ratsimp(%); factor(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ l2:rhs(sol[2][4]); M0:ratsimp(minor(hes(x,y,z,l2),4,4)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kill(dx,dy,dz)$ define(FQ0(dx,dy,dz),expand(vect.M0.vec)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kill(dx,dy,dz)$ jacobian([lig(x,y,z)],[x,y,z]).vec; ev(%,sol[2]); solve(%,dz); difv:rhs(%[1]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ FQ0(dx,dy,difv);ratsimp(%); factor(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(g(x,y),f(x,y,1)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ eq1:diff(g(x,y),x); eq2:diff(g(x,y),y); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol1:solve([eq1,eq2],[x,y]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(hes(x,y),hessian(g(x,y),[x,y])); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ lig(x,y,z); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(L(x,y,l),g(x,y)+l*(lig(x,y,1))); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e1:diff(L(x,y,l),x); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e2:diff(L(x,y,l),y); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ el:diff(L(x,y,l),l); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol:solve([e1,e2,el],[x,y,l]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(hes(x,y,l),hessian(L(x,y,l),[x,y,l])); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kill(dx,dy)$ vec:matrix( [dx], [dy] ); vect:[dx,dy]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol[1]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ rhs(sol[1][3]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ M0:expand(minor(hes(x,y,rhs(sol[1][3])),3,3)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kill(dx,dy)$ define(FQ0(dx,dy),expand(vect.M0.vec)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ jacobian([lig(x,y,1)],[x,y]);ev(%,sol[1]); %.vect; solve(%,dx); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ0(dx,dy),%[1]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol[2]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ rhs(sol[2][3]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ M1:minor(hes(x,y,rhs(sol[2][3])),3,3); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kill(dx,dy)$ define(FQ1(dx,dy),expand(vect.M1.vec)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ jacobian([lig(x,y,1)],[x,y]);ev(%,sol[2]); %.vect; solve(%,dx); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ1(dx,dy),%[1]); /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Ejemplo 11: Extremos de f(x,y)=log(x²+y²) en (x-1)²+y²<= 4. [wxMaxima: section end ] */ /* [wxMaxima: input start ] */ kill(all); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(f(x,y),log(x^2+(y)^2)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e1:diff(f(x,y),x); e2:diff(f(x,y),y); sol:solve([e1,e2],[x,y]); /* MAL */ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* En la circunferencia */ x(u):=1+2*cos(u); y(u):=2*sin(u); wxdraw3d( xu_grid = 20, yv_grid = 20, view = [100,35], point_type=filled_circle, point_size = 2, surface_hide = true, color = blue, parametric_surface( x(u), y(u), log( x(u)^2+y(u)^2 ), u, 0, 2*%pi, v, -%pi, %pi )); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(lig(x,y),(x-1)^2+y^2-4); define(L(x,y,l),f(x,y)+l*lig(x,y)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e1:diff(L(x,y,l),x); e2:diff(L(x,y,l),y); el:diff(L(x,y,l),l); sol:solve([e1,e2,el],[x,y,l]); nn:length(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e1*y-e2*x,factor; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ for kk:1 thru nn do print("f =",ev(f(x,y),sol[kk]) , "* Punto ", sol[kk] )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(hes(x,y,l),hessian(L(x,y,l),[x,y,l]))$ vec:matrix( [dx], [dy] )$ vect:[dx,dy]$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ minor(hes(x,y,l),3,3)$ define(FQ0(dx,dy),expand(vect.%.vec)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ k:1$ sol[k]; jacobian([lig(x,y)],[x,y]); ev(%,sol[k]).vect; dlig:solve(%,dx); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ0(dx,dy),dlig); ev(%,sol[k])$ ratsimp(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ k:2$ sol[k]; jacobian([lig(x,y)],[x,y]); ev(%,sol[k]).vect; dlig:solve(%,dx); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ0(dx,dy),dlig); ev(%,sol[k])$ ratsimp(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ p1:makelist([rhs(sol[k][1]),rhs(sol[k][2]), f(rhs(sol[k][1]),rhs(sol[k][2])) ],k,1,1); p2:makelist([rhs(sol[k][1]),rhs(sol[k][2]), f(rhs(sol[k][1]),rhs(sol[k][2])) ],k,2,2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxdraw3d( xu_grid = 20, yv_grid = 20, view = [100,5], point_type=filled_circle, point_size = 2, surface_hide = true, color = blue, parametric_surface( x(u), y(u), log( x(u)^2+y(u)^2 ), u, 0, 2*%pi, v, -%pi, %pi ), color = red, points(p1), color = dark_green, points(p2) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* x=1 */; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f(1,y); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxdraw2d( color = brown, line_width = 3, explicit(f(1,y),y,-2,2) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f(1,2); float(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f(x(u),y(u))$ trigsimp(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(f(x(u),y(u)),u=%pi/2);float(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(f(x(u),y(u)),u=%pi/2-.01); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxdraw3d( xu_grid = 20, yv_grid = 20,view = [100,50], surface_hide = true, line_type=solid, line_width=3, parametric_surface( x(u), y(u), log( x(u)^2+y(u)^2 ), u, -%pi/2,%pi/2, v, 0, %pi ), point_type=filled_circle, point_size =2, color = dark_green, points(p2) , color =black , points([[1,0,f(1,0)]]) , color =red, points([[1,2,f(1,2)]]) ,points([[1,-2,f(1,-2)]]) , color =red, parametric_surface( 1, t, f(1,t), t, -2, 2, t, -2,2 ) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Ejemplo 12: Ejemplo con frontera "rara" [wxMaxima: section end ] */ /* [wxMaxima: input start ] */ define(f(x,y),(x-1)^2+y^2); define(lig(x,y),y^2-2*x); define(L(x,y,l),f(x,y)+l*(lig(x,y))); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e1:diff(L(x,y,l),x); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e2:diff(L(x,y,l),y); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ el:diff(L(x,y,l),l); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol:solve([e1,e2,el],[x,y,l]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(hes(x,y,l),hessian(L(x,y,l),[x,y])); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kill(dx,dy)$ vec:matrix( [dx], [dy] ); vect:[dx,dy]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol[1]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ rhs(sol[1][3]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ M0:hes(x,y,rhs(sol[1][3])); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kill(dx,dy)$ define(FQ0(dx,dy),expand(vect.M0.vec)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ plot2d([sqrt(2*x),sqrt(4-(x-2)^2)],[x,0,2]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f(x,-x), x=0;f(x,-x), x=0.01; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f(x,sqrt(2*x)), x=0;f(x,sqrt(2*x)), x=0.01; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f(1/2,-1/2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f(2,2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f(2,-2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f(4,0); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f(1.99,-1.99); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ f(x,sqrt(4-(x-2)^2)), x=2; f(x,sqrt(4-(x-2)^2)), x=2.01; /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Ejemplo 13: Extremos absolutos de f(x,y,z)=x^2+y^2+z^2-4*x+4*z sobre la región x^2+2*y^2+z^2<=8, z<=1 [wxMaxima: section end ] */ /* [wxMaxima: input start ] */ remfunction(f); define(f(x,y,z),(x)^2+y^2+(z)^2-4*x+4*z); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e1:diff(f(x,y,z),x); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e2:diff(f(x,y,z),y); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e5:diff(f(x,y,z),z); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol:solve([e1,e2,e5],[x,y,z]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ hessian(f(x,y,z),[x,y,z]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(lig(x,y,z),x^2+2*y^2+z^2-8); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(L(x,y,z,l),f(x,y,z)+l*lig(x,y,z)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e1:diff(L(x,y,z,l),x); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e2:diff(L(x,y,z,l),y); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e5:diff(L(x,y,z,l),z); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ el:diff(L(x,y,z,l),l); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol:solve([e1,e2,e5,el],[x,y,z,l]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kill(dx,dy,dz)$ vec:matrix( [dx], [dy], [dz] ); vect:[dx,dy,dz]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(hes(x,y,z,l),hessian(L(x,y,z,l),[x,y,z,l])); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ l1:rhs(sol[1][4]); M0:ratsimp(minor(hes(x,y,z,l1),4,4)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kill(dx,dy,dz)$ define(FQ0(dx,dy,dz),expand(vect.M0.vec)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ jacobian([lig(x,y,z)],[x,y,z]).vec; ev(%,sol[1]); solve(%,dx); difv:rhs(%[1]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ FQ0(difv,dy,dz);ratsimp(%); factor(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ l2:rhs(sol[2][4]); M0:ratsimp(minor(hes(x,y,z,l2),4,4)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kill(dx,dy,dz)$ define(FQ0(dx,dy,dz),expand(vect.M0.vec)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kill(dx,dy,dz)$ jacobian([lig(x,y,z)],[x,y,z]).vec; ev(%,sol[2]); solve(%,dx); difv:rhs(%[1]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ FQ0(difv,dy,dz);ratsimp(%); factor(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(L(x,y,l),g(x,y)+l*(lig(x,y,1))); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e1:diff(L(x,y,l),x); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e2:diff(L(x,y,l),y); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ el:diff(L(x,y,l),l); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol:solve([e1,e2,el],[x,y,l]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(hes(x,y,l),hessian(L(x,y,l),[x,y,l])); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kill(dx,dy)$ vec:matrix( [dx], [dy] ); vect:[dx,dy]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol[1]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ rhs(sol[1][3]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ M0:expand(minor(hes(x,y,rhs(sol[1][3])),3,3)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kill(dx,dy)$ define(FQ0(dx,dy),expand(vect.M0.vec)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ jacobian([lig(x,y,1)],[x,y]);ev(%,sol[1]); %.vect; solve(%,dx); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ0(dx,dy),%[1]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol[2]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ rhs(sol[2][3]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ M1:minor(hes(x,y,rhs(sol[2][3])),3,3); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kill(dx,dy)$ define(FQ1(dx,dy),expand(vect.M1.vec)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ jacobian([lig(x,y,1)],[x,y]);ev(%,sol[2]); %.vect; solve(%,dx); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ1(dx,dy),%[1]); /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Ejemplo 14: Sea la curva definida por el paraboloide z=x^2+y^2 y el plano x+y+z=12. Encontrar el punto más alto y el más bajo. [wxMaxima: section end ] */ /* [wxMaxima: input start ] */ kill(all)$ define(f(x,y,z),z); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(lig1(x,y,z),x+y+z-12); define(lig2(x,y,z),x^2+y^2-z); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ solve(lig1(x,y,z),z); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(lig2(x,y,z),%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ jacobian([lig1(x,y,z),lig2(x,y,z)],[x,y,z]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ rank(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxdraw3d(color=green, view = [80,22], x_voxel = 15, y_voxel = 15, z_voxel = 15, enhanced3d = false, color= cyan, implicit(x^2+y^2-z=0,x,-8,8,y,-8,8,z,-2,20), color= blue, implicit(z+y+x−12=0,x,-8,8,y,-8,8,z,6,20),surface_hide = true )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ x(u):=-1/2+5/sqrt(2)*cos(u); y(u):=-1/2+5/sqrt(2)*sin(u); wxdraw3d( xu_grid = 20, yv_grid = 20, view = [120,35], parametric_surface( x(u),y(u), -y(u)-x(u)+12, u, 0, 2*%pi, v, -%pi, %pi) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(L(x,y,z,l,m),f(x,y,z)+l*lig1(x,y,z)+m*lig2(x,y,z)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e1:diff(L(x,y,z,l,m),x); e2:diff(L(x,y,z,l,m),y); e3:diff(L(x,y,z,l,m),z); el:diff(L(x,y,z,l,m),l); em:diff(L(x,y,z,l,m),m); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ sol:solve([e1,e2,e3,el,em],[x,y,z,l,m]); nn:length(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ for kk:1 thru nn do print("f =",ev(f(x,y,z),sol[kk]) , "* Punto ", sol[kk] )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* Con el hessiano */; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(hes(x,y,z,l,m),hessian(L(x,y,z,l,m),[x,y,z,l,m])); vec:matrix( [dx], [dy], [dz] )$ vect:[dx,dy,dz]$ M0:minor(minor(hes(x,y,z,l,m),5,5),4,4); define(FQ0(dx,dy,dz),expand(vect.M0.vec)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* Distintas soluciones */ k:1$ sol[k]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ eql1:jacobian([lig1(x,y,z)],[x,y,z]).[dx,dy,dz]; eql2:jacobian([lig2(x,y,z)],[x,y,z]).[dx,dy,dz]; e1:ev(eql1,sol[k]); e2:ev(eql2,sol[k]); sollig:solve([e1,e2],[dx,dz])[1]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ0(dx,dy,dz),[sollig,sol[k]]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* Distintas soluciones */ k:2$ sol[k]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ eql1:jacobian([lig1(x,y,z)],[x,y,z]).[dx,dy,dz]; eql2:jacobian([lig2(x,y,z)],[x,y,z]).[dx,dy,dz]; e1:ev(eql1,sol[k]); e2:ev(eql2,sol[k]); sollig:solve([e1,e2],[dx,dz])[1]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ0(dx,dy,dz),[sollig,sol[k]]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ p1:makelist([rhs(sol[k][1]),rhs(sol[k][2]),rhs(sol[k][3]) ],k,1,1); p2:makelist([rhs(sol[k][1]),rhs(sol[k][2]),rhs(sol[k][3]) ],k,2,2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxdraw3d( xu_grid = 20, yv_grid = 20, view = [120,35], parametric_surface( x(u),y(u), -y(u)-x(u)+12, u, 0, 2*%pi, v, -%pi, %pi) , point_type=filled_circle, point_size = 1.5, color = black, points(p1), color = dark_green, points(p2))$ /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Ejemplo 15: Mayor y menor distancia al origen de la curva del Ejemplo 14 [wxMaxima: section end ] */ /* [wxMaxima: input start ] */ remfunction(f)$ define(f(x,y,z),x^2+y^2+z^2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(lig1(x,y,z),x+y+z-12); define(lig2(x,y,z),x^2+y^2-z); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ jacobian([lig1(x,y,z),lig2(x,y,z)],[x,y,z]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ rank(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ x(u):=-1/2+5/sqrt(2)*cos(u); y(u):=-1/2+5/sqrt(2)*sin(u); wxdraw3d( xu_grid = 20, yv_grid = 20, view = [120,35], parametric_surface( x(u),y(u), -y(u)-x(u)+12, u, 0, 2*%pi, v, -%pi, %pi), point_type=filled_circle, point_size = 1.5, color = red, points([[0,0,0]]) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(L(x,y,z,l,m),f(x,y,z)+l*lig1(x,y,z)+m*lig2(x,y,z)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e1:diff(L(x,y,z,l,m),x); e2:diff(L(x,y,z,l,m),y); e3:diff(L(x,y,z,l,m),z); el:diff(L(x,y,z,l,m),l); em:diff(L(x,y,z,l,m),m); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ realonly:true$ sol:solve([e1,e2,e3,el,em],[x,y,z,l,m]); nn:length(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ for kk:1 thru nn do print("f =",ev(f(x,y,z),sol[kk]) , "* Punto ", sol[kk] )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* Con el hessiano */; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(hes(x,y,z,l,m),hessian(L(x,y,z,l,m),[x,y,z,l,m]))$ vec:matrix( [dx], [dy], [dz] )$ vect:[dx,dy,dz]$ M0:minor(minor(hes(x,y,z,l,m),5,5),4,4); define(FQ0(dx,dy,dz),expand(vect.M0.vec)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* Distintas soluciones */ k:1$ sol[k]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ eql1:jacobian([lig1(x,y,z)],[x,y,z]).[dx,dy,dz]; eql2:jacobian([lig2(x,y,z)],[x,y,z]).[dx,dy,dz]; e1:ev(eql1,sol[k]); e2:ev(eql2,sol[k]); sollig:solve([e1,e2],[dx,dz])[1]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ0(dx,dy,dz),[sollig,sol[k]]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* Distintas soluciones */ k:2$ sol[k]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ eql1:jacobian([lig1(x,y,z)],[x,y,z]).[dx,dy,dz]; eql2:jacobian([lig2(x,y,z)],[x,y,z]).[dx,dy,dz]; e1:ev(eql1,sol[k]); e2:ev(eql2,sol[k]); sollig:solve([e1,e2],[dx,dz])[1]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ0(dx,dy,dz),[sollig,sol[k]]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ p1:makelist([rhs(sol[k][1]),rhs(sol[k][2]),rhs(sol[k][3]) ],k,1,1); p2:makelist([rhs(sol[k][1]),rhs(sol[k][2]),rhs(sol[k][3]) ],k,2,2); wxdraw3d( xu_grid = 20, yv_grid = 20, view = [80,60], parametric_surface( x(u),y(u), -y(u)-x(u)+12, u, 0, 2*%pi, v, -%pi, %pi) , point_type=filled_circle, point_size = 1.5, color = red, points([[0,0,0]]), color = black, points(p1), color = dark_green, points(p2))$ /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Ejemplo 16: Mayor y menor distancia al origen de la curva definida por las ecuaciones x²+y²-z²-xy-1=0 y x²+y²-1=0 [wxMaxima: section end ] */ /* [wxMaxima: input start ] */ kill(all)$ define(f(x,y,z),x^2+y^2+z^2); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(lig1(x,y,z),x^2+y^2-z^2-x*y-1); define(lig2(x,y,z),x^2+y^2-1); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ jacobian([lig1(x,y,z),lig2(x,y,z)],[x,y,z]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ rank(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxdraw3d(color=green, view = [77,237], x_voxel = 15, y_voxel = 15, z_voxel = 15, enhanced3d = false, color= blue, implicit(x^2+y^2-1=0,x,-8,8,y,-8,8,z,-12,12), color = cyan, implicit(lig1(x,y,z)=0,x,-8,8,y,-8,8,z,-12,12),color = red, point_type=filled_circle, point_size = 2,points([[0,0,0]]) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxdraw3d( xu_grid = 20, yv_grid = 20, view = [95,120], surface_hide = true, parametric_surface( cos(u), sin(u), sqrt(-sin(u)*cos(u)), u, %pi/2, %pi, v, %pi/2, %pi) , parametric_surface( cos(u), sin(u), -sqrt(-sin(u)*cos(u)), u, %pi/2, %pi, v, %pi/2, %pi), parametric_surface( cos(u), sin(u), sqrt(-sin(u)*cos(u)), u, 3*%pi/2, 2*%pi, v, 3*%pi/2, 2*%pi) , parametric_surface( cos(u), sin(u), -sqrt(-sin(u)*cos(u)), u, 3*%pi/2, 2*%pi, v, 3*%pi/2, 2*%pi), point_type=filled_circle, point_size = 1.5, color = red,points([[0,0,0]]) ); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(L(x,y,z,l,m),f(x,y,z)+l*lig1(x,y,z)+m*lig2(x,y,z)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e1:diff(L(x,y,z,l,m),x); e2:diff(L(x,y,z,l,m),y); e3:diff(L(x,y,z,l,m),z); el:diff(L(x,y,z,l,m),l); em:diff(L(x,y,z,l,m),m); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ realonly:true$ sol:solve([e1,e2,e3,el,em],[x,y,z,l,m])$ nn:length(%); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ for kk:1 thru nn do print("f =",ev(f(x,y,z),sol[kk]) , "* Punto ", sol[kk] )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* Con el hessiano */; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(hes(x,y,z,l,m),hessian(L(x,y,z,l,m),[x,y,z,l,m]))$ vec:matrix( [dx], [dy], [dz] )$ vect:[dx,dy,dz]$ M0:minor(minor(hes(x,y,z,l,m),5,5),4,4); define(FQ0(dx,dy,dz),expand(vect.M0.vec)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ eql1:jacobian([lig1(x,y,z)],[x,y,z]).[dx,dy,dz]; eql2:jacobian([lig2(x,y,z)],[x,y,z]).[dx,dy,dz]; difligy:solve([eql1,eql2],[dx,dz])[1]; difligx:solve([eql1,eql2],[dy,dz])[1]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* Distintas soluciones */ k:1$ sol[k]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e1:ev(eql1,sol[k]); e2:ev(eql2,sol[k]); sollig:solve([e1,e2],[dx,dy])[1]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ0(dx,dy,dz),[sollig,sol[k]]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* Distintas soluciones */ k:7$ sol[k]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ e1:ev(eql1,sol[k]); e2:ev(eql2,sol[k]); sollig:solve([e1,e2],[dx,dz])[1]; /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ ev(FQ0(dx,dy,dz),[sollig,sol[k]]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ p1:makelist([rhs(sol[k][1]),rhs(sol[k][2]),rhs(sol[k][3]) ],k,1,4); p2:makelist([rhs(sol[k][1]),rhs(sol[k][2]),rhs(sol[k][3]) ],k,5,8); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxdraw3d( xu_grid = 20, yv_grid = 20, view = [90,120], surface_hide = true, parametric_surface( cos(u), sin(u), sqrt(-sin(u)*cos(u)), u, %pi/2, %pi, v, %pi/2, %pi) , parametric_surface( cos(u), sin(u), -sqrt(-sin(u)*cos(u)), u, %pi/2, %pi, v, %pi/2, %pi), parametric_surface( cos(u), sin(u), sqrt(-sin(u)*cos(u)), u, 3*%pi/2, 2*%pi, v, 3*%pi/2, 2*%pi) , parametric_surface( cos(u), sin(u), -sqrt(-sin(u)*cos(u)), u, 3*%pi/2, 2*%pi, v, 3*%pi/2, 2*%pi), point_type=filled_circle, point_size = 1.5, color = red,points([[0,0,0]]), color = black, points(p1), color = dark_green, points(p2) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: section start ] Máxima y mínima distancia de (z-2)^2+y^2+4*x^2=1 al punto (-1,0,2) [wxMaxima: section end ] */ /* [wxMaxima: input start ] */ kill(all)$ px:-1$ py:0$ pz:2$ a:0$ b:0$ c:2$ /* b= 1 infinitas soluciones $*(z-c)^2*/ define(f(x,y,z),(x-px)^2+(y-py)^2+(z-pz)^2); define(lig(x,y,z),4*(x-a)^2+(y-b)^2+(z-c)^2-1); dd:1$ wxdraw3d(xlabel = "x", ylabel = "y", zlabel = "z", x_voxel = 10, y_voxel = 10, z_voxel = 10, color=cyan, implicit(lig(x,y,z) , x, a-dd,a+dd, y, b-dd,b+dd,z,c-dd,c+dd), xaxis=true, yaxis=true, point_type=filled_circle, point_size = 2,color = red, points([[px,py,pz]]),view=[54,334])$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(L(x,y,z,l),f(x,y,z)+l*lig(x,y,z)); e1:diff(L(x,y,z,l),x),factor; e2:diff(L(x,y,z,l),y),factor; e3:diff(L(x,y,z,l),z),factor; el:diff(L(x,y,z,l),l); realonly:true$ sol:solve([e1,e2,e3,el],[x,y,z,l]); nn:length(%)$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ for kk:1 thru nn do print("f =",ev(f(x,y,z),sol[kk]), ",", ev(float(f(x,y,z)),sol[kk]), "* Punto ", sol[kk] )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ define(hes(x,y,z,l),hessian(L(x,y,z,l),[x,y,z])); M0:hes(x,y,z,l); vect:[dx,dy,dz]$ vec:matrix( [dx], [dy] ,[dz])$ define(FQ0(dx,dy,dz),expand(vect.M0.vec)); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kk:1$sol[kk] ; jacobian([lig(x,y,z)],[x,y,z]); ev(%,sol[kk]); %.vect; sollig:solve(%,dx); ev(FQ0(dx,dy,dz),sollig); ev(%,sol[kk]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kk:2$sol[kk] ; jacobian([lig(x,y,z)],[x,y,z]);ev(%,sol[kk]); %.vect; sollig:solve(%,dx); ev(FQ0(dx,dy,dy),sollig); ev(%,sol[kk]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ kk:3$sol[kk] ; jacobian([lig(x,y,z)],[x,y,z]);ev(%,sol[kk]); %.vect; sollig:solve(%,dx); ev(FQ0(dx,dy,dy),sollig); ev(%,sol[kk]); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* CASO DE 4 PUNTOS */ pt1:makelist([rhs(sol[kk][1]),rhs(sol[kk][2]),rhs(sol[kk][3]) ],kk,1,1); pt2:makelist([rhs(sol[kk][1]),rhs(sol[kk][2]),rhs(sol[kk][3]) ],kk,2,2); pt3:makelist([rhs(sol[kk][1]),rhs(sol[kk][2]),rhs(sol[kk][3]) ],kk,3,3); pt4:makelist([rhs(sol[kk][1]),rhs(sol[kk][2]),rhs(sol[kk][3]) ],kk,4,4); /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ /* Lo que ocurre en realidad es que hay más de cuatro puntos ... */ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ x(u):=1/3$ y(u):=sqrt(5/9)*cos(u)$ z(u):=2+sqrt(5/9)*sin(u)$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxdraw3d(xlabel = "x", ylabel = "y",color = cyan, nticks= 50, view=[71,354], proportional_axes = xyz, x_voxel = 15, y_voxel = 15, z_voxel = 15, implicit( lig(x,y,z)=0 , x, a-dd,a+dd, y, b-dd,b+dd ,z,c-dd,c+dd), xaxis=true, yaxis=true, point_type=filled_circle, point_size = 1.5,color = red, points([[px,py,pz]]), color=dark_green, points(pt1), points(pt2) , color=blue, parametric_surface(x(u), y(u), z(u), u, 0, 2*%pi, v, -%pi, %pi), color=black, parametric_surface(-1+u/2, 0, 2 , u, 0, 3 , v, -%pi, %pi) )$ /* [wxMaxima: input end ] */ /* [wxMaxima: input start ] */ wxdraw3d(xlabel = "x", ylabel = "y",color = cyan, nticks= 50, view=[11,24], proportional_axes = xyz, x_voxel = 15, y_voxel = 15, z_voxel = 15, implicit( lig(x,y,z)=0 , x, a-dd,a+dd, y, b-dd,b+dd ,z,c-dd,c+dd), xaxis=true, yaxis=true, point_type=filled_circle, point_size = 1.5, color=dark_green, points(pt1), points(pt2) , color=blue, points(pt3), points(pt4) , color=blue, parametric_surface(x(u), y(u), z(u), u, 0, 2*%pi, v, -%pi, %pi), color=black, parametric_surface(-1+u/2, 0, 2 , u, 0, 3 , v, -%pi, %pi) , points_joined = true, points([[-1,0,2],pt3[1]]), color = red, points([[px,py,pz]]) )$ /* [wxMaxima: input end ] */ /* Old versions of Maxima abort on loading files that end in a comment. */ "Created with wxMaxima 23.08.0"$