|
Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
/*
* This file:
* http://anggtwu.net/MAXIMA/2024-2-C3-P1-Q2.mac.html
* http://anggtwu.net/MAXIMA/2024-2-C3-P1-Q2.mac
* (find-angg "MAXIMA/2024-2-C3-P1-Q2.mac")
* Author: Eduardo Ochs <eduardoochs@gmail.com>
*
* (defun e () (interactive) (find-angg "MAXIMA/2024-2-C3-P1-Q2.mac"))
*/
* (setq last-kbd-macro (kbd "C-a %M SPC C-a <down>"))
* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
load("/usr/share/emacs/site-lisp/maxima/emaxima.lisp")$
load("~/MAXIMA/barematrix1.mac")$
:lisp (setf (get '$display2d 'assign) nil)
display2d:'emaxima$
* (eepitch-maxima)
* (eepitch-kill)
* (eepitch-maxima)
hessian(x^3*y^4, [x,y]);
linel : 110;
linenum : 0;
** (eeks)
* (eeks 0.02 0.02)
gradef(W (x,y), W_x (x,y), W_y (x,y))$
gradef(W_x(x,y), W_xx(x,y), W_xy(x,y))$
gradef(W_y(x,y), W_xy(x,y), W_yy(x,y))$
dd(F) := [F,
diff(F,x), diff(F,y),
diff(F,x,2), diff(F,x,1,y,1), diff(F,y,2)]$
aa(o,x0y0) := at(o, [x=x0y0[1], y=x0y0[2]])$
mm(abcdef) := block([a,b,c,d,e,f],
[a,b,c,d,e,f]:abcdef,
[a,b*Dx,c*Dy,d*Dx^2/2,e*Dx*Dy,f*Dy^2/2])$
ss(abcdef) := block([a,b,c,d,e,f],
[a,b,c,d,e,f]:abcdef,
a+b+c+d+e+f)$
toM(abcdef) := block([a,b,c,d,e,f],
[a,b,c,d,e,f]:abcdef,
matrix([a,"",""], [b,c,""], [d,e,f]))$
D2 (F) := toM(dd(F));
D2at(x0y0,F) := toM(aa(dd(F),x0y0));
T2M (x0y0,F) := toM(mm(aa(dd(F),x0y0)));
T2 (x0y0,F) := ss(mm(aa(dd(F),x0y0)));
/* Alguns testes: */
dd(W(x,y));
toM(dd(W(x,y)));
toM([1,2,3,4,5,6]);
aa(dd(W(x,y)),[3,4]);
toM(aa(dd(W(x,y)),[3,4]));
mm(aa(dd(W(x,y)),[3,4]));
toM(mm(aa(dd(W(x,y)),[3,4])));
ss(mm(aa(dd(W(x,y)),[3,4])));
D2 (W(x,y));
D2at([3,4],W(x,y));
T2M ([3,4],W(x,y));
T2 ([3,4],W(x,y));
F : x*y*(6 - 2*x - y);
F : expand(F);
P1 : [0,6];
P2 : [1,2];
P3 : [3,0];
P4 : [0,0];
/* (2a) */
D2(W(x,y));
F;
D2F : D2(F);
/* (2b) */
[P1, D2F, D2FP1:D2at(P1,F)];
[P2, D2F, D2FP2:D2at(P2,F)];
[P3, D2F, D2FP3:D2at(P3,F)];
[P4, D2F, D2FP4:D2at(P4,F)];
/* (2c) */
TM2([x0,y0],W(x,y));
[P1, D2FP1, T2M(P1,F), T2(P1,F)];
[P2, D2FP2, T2M(P2,F), T2(P2,F)];
[P3, D2FP3, T2M(P3,F), T2(P3,F)];
[P4, D2FP4, T2M(P4,F), T2(P4,F)];
/* (2d) */
grad(F) := [diff(F,x),diff(F,y)]$
H(F) := hessian(F, [x,y])$
detH(F) := determinant(H(F))$
crit(F) := [F, grad(F), H(F), detH(F)]$
crit(F) := matrix([F, grad(F)], [H(F), detH(F)])$
crit(W(x,y));
aa(crit(F), P1);
aa(crit(F), P2);
aa(crit(F), P3);
aa(crit(F), P4);
/* definicao da funcao G */
P2;
T2(P2,F);
G__ : T2(P2,F);
G_ : subst([Dx=x-1,Dy=y-2], T2(P2,F));
G : expand(G_);
/* definicao dos conjuntos B e C */
inC_(x,y) := y <= 6 - 2*x;
inC (x,y,o) := if inC_(x,y) then o else "";
numsB(expr) :=
apply(matrix,
makelist(makelist(ev(expr), x,0,3),
y, seqby(6,0,-1)))$
numsC(expr) :=
apply(matrix,
makelist(makelist(inC(x,y,ev(expr)), x,0,3),
y, seqby(6,0,-1)))$
numsB([x,y]);
numsC([x,y]);
/* (2e) */
F;
[numsC( x *y),
numsC( x^2*y),
numsC( x *y^2)];
[numsC( 6*x *y),
numsC(-2*x^2*y),
numsC( -x *y^2),
numsC(F)];
/* (2f) */
G__;
G_;
Dx : x-1;
Dy : y-2;
[numsC(Dx^2),
numsC(Dx*Dy),
numsC(Dy^2)];
[numsC(4),
numsC(-4*Dx^2),
numsC(-2*Dx*Dy),
numsC( -Dy^2)];
numsC(G);
/* (2g) */
grad(F);
Fx : diff(F,x);
-4*x*y + 6*y - y^2;
[numsC(-4*x*y),
numsC(6*y),
numsC(-y^2),
numsC(Fx)];
Fy : diff(F,y);
-2*x*y + 6*x - 2*x^2;
[numsC(-2*x*y),
numsC(6*x),
numsC(-2*x^2),
numsC(Fy)];
numsC(grad(F));
*
** (c3m242p1p 5 "questao-2" "(2g)")
** (c3m242p1a "questao-2" "g)")
** (find-myqdraw "myqdraw3.mac")
** (find-myqdraw "myqdraw3.mac" "myimp")
load_myqdraw()$
[topdf_a,topdf_b,topdf_c,topdf_n] : ["~/LATEX/", "2024-2-C3/", "P1-Q2-v2", 0];
myqdrawp_to_new_pdf(); myps(s):=ps(s/5);
myqdrawp_to_screen (); myps(s):=ps(s);
[xmin,ymin, xmax,ymax] : [-1,-1, 4,7]$
level(zz,color) := myimp1(F=zz, lc(color), lk(z=zz))$
levels() := [level( 3.95, gray),
level( 3.90, gray),
level( 3.85, gray),
level( 3, red),
level( 2, orange),
level( 1, gold),
level( 0, forest_green),
level(-1, blue)]$
** As curvas de nível da F, sem os vetores gradientes:
level(zz,color) := myimp1(F=zz, lc(color), lk(z=zz))$
F_levels : myqdrawp(xyrange(), levels());
** As curvas de nível da G, sem os vetores gradientes:
level(zz,color) := myimp1(G=zz, lc(color), lk(z=zz))$
G_levels : myqdrawp(xyrange(), levels());
** Os conjuntos B e C:
B : create_list([x,y], y,seqby(6,0,-1), x,seq(0,3));
eq1 : y = 6 - 2*x;
eq2 : solve(eq1,x);
subst(eq2, x);
define(xmaxC(y), subst(eq2, x));
C : create_list([x,y], y,seqby(6,0,-1), x,seq(0,xmaxC(y)));
atxy(oo,xy) := aa(oo,xy);
** O gradiente da F nos pontos de C:
** (find-myqdraw "myqdraw3.mac" "myPv")
define(v_at (xy), atxy(grad(F)/10,xy))$
define(Pv_at(xy), myPv(xy,v_at(xy),[myps(1)],hl(0.15)))$
Pv_at([1,3]);
grads_at_C : makelist(Pv_at(xy), xy, C)$
F_grads : myqdrawp(xyrange(), grads_at_C);
** O gradiente da F nos pontos de C e as curvas de nível:
level(zz,color) := myimp1(F=zz, lc(color), lk(z=zz))$
F_all : myqdrawp(xyrange(), levels(), grads_at_C);
matrix([F_levels, G_levels, F_grads, F_all]);