> restart; > #1. feladat > f:=tan(x/2-3)/(10-x^2); tan(x/2 - 3) f := ------------ 2 10 - x > #1.a.) > T2:=convert(taylor(f, x=1, 3), polynom); T2 := -1/9 tan(5/2) 2 / + (1/18 + 1/18 tan(5/2) - 2/81 tan(5/2)) (x - 1) + | \ 2 13 -1/36 tan(5/2) (1 + tan(5/2) ) - --- tan(5/2) + 1/81 729 2\ 2 + 1/81 tan(5/2) | (x - 1) / > plot([f,T2], x=0..2, color=[red,green]); > #1.b) > hiba:=evalf(abs(subs(x=1.2, f-T2))); hiba := 0.000412484652 > #Látszik: már ez kisebb 0.001-nél. Ha 0.00001-nél kellene kisebbnek > lennie: > n:=4; > Tn:=convert(taylor(f, x=1, n+1), polynom): > hiba:=evalf(abs(subs(x=1.2, f-Tn))); n := 4 -5 hiba := 0.5976197832 10 > #Tehát a módosított feladathoz n=4 jó, n=3 még nem. > #1.c) > fv:=diff(f,x): > felszin:=evalf( Pi*(subs(x=0, f)^2+subs(x=2, f)^2) + > 2*Pi*int(f*sqrt(1+fv^2), x=0..2) ); felszin := 1.906197874 > evalf(felszin, 5); 1.9062 > > #2. feladat > g:=x*y*exp(-x^2+x*y-3*y^2); 2 2 g := x y exp(-x + x y - 3 y ) > plot3d(g, x=-5..5, y=-5..5, shading=zhue, axes=boxed, > style=patchcontour, numpoints=10000); > plot3d(g, x=-2..2, y=-2..2, shading=zhue, axes=boxed, > style=patchcontour, numpoints=10000); > #Az ábrák alapján 2 lok. min. és 2 lok. max. hely van. > gx:=diff(g,x); gy:=diff(g,y); 2 2 gx := y exp(-x + x y - 3 y ) 2 2 + x y (-2 x + y) exp(-x + x y - 3 y ) 2 2 2 2 gy := x exp(-x + x y - 3 y ) + x y (x - 6 y) exp(-x + x y - 3 y ) > solve({gx,gy},{x,y}); 2 4 {x = 0, y = 0}, {y = RootOf(1 - 12 _Z + 33 _Z ), x = 2 4 3 33 RootOf(1 - 12 _Z + 33 _Z ) 2 4 - 6 RootOf(1 - 12 _Z + 33 _Z )} > #az y értékek: > evalf(allvalues(RootOf(1-12*_Z^2+33*_Z^4))); -0.4840501730, 0.4840501730, -0.3596272981, 0.3596272981 > #az x értékek: > evalf(allvalues(33*RootOf(1-12*_Z^2+33*_Z^4)^3-6*RootOf(1-12*_Z^2+33*_ > Z^4))); -0.838399494, 0.838399494, 0.622892753, -0.622892753 > #Tehát 5 stac. pont van a számítások szerint, összhangban a rajzzal. > (A (0,0) nyeregpont.) > #2.b.) > gxx:=diff(g,x,x): gxy:=diff(g,x,y): gyy:=diff(g,y,y): > d1:=gxx: d2:=gxx*gyy-(gxy)^2: > #Lok. max. az ábra alapján [0,2]X[0,2]-n: > fsolve({gx,gy},{x,y}, x=0..2,y=0..2); {x = 0.8383994930, y = 0.4840501729} > evalf(subs(%, [d1,d2])); [-0.5109864230, 0.7610322082] > #Tehát a Hesse-mátrix nagatív definit, így a pont lok. max. hely. > #Lok. max. az ábra alapján [0,2]X[-2,0]-n: > fsolve({gx,gy},{x,y}, x=0..2,y=-2..0); {x = 0.6228927525, y = -0.3596272983} > evalf(subs(%, [d1,d2])); [0.3772120809, 0.4200757186] > #Tehát a Hesse-mátrix pozitív definit, így a pont lok. min. hely. > #Nyeregpont az ábra alapján (0,0)-ban: > fsolve({gx,gy},{x,y}, x=-0.1..0.1,y=-0.1..0.1); {x = 0., y = 0.} > evalf(subs(%, [d1,d2])); [0., -1.] > #Ez tényleg indefinit, tehát (0,0) nyeregpont. > > #3. feladat > with(linalg): Warning, the protected names norm and trace have been redefined and unprotected > A:=matrix(3,3, [1,2,3, 3,0,-1, 5,1,8]); [1 2 3] [ ] A := [3 0 -1] [ ] [5 1 8] > B:=matrix(2,3, [10,20,-3, 3,-2,7]); [10 20 -3] B := [ ] [ 3 -2 7] > C:=matrix(3,1, [-1,3,8]); [-1] [ ] C := [ 3] [ ] [ 8] > evalm(B&*A+5*B); [105 117 -29] [ ] [ 47 3 102] > evalm(A&*C); [ 29] [ ] [-11] [ ] [ 62] > evalm(inverse(A)); [-1 13 ] [-- -- 1/24] [48 48 ] [ ] [29 -5 ] [-- 7/48 -- ] [48 24 ] [ ] [-1 -3 ] [-- -- 1/8 ] [16 16 ] > #A sajátértékei, sajátvektorai ellenőrzéssel: > ev:=eigenvectors(A): > lambda1:=evalf(ev[1][1]); -8 lambda1 := 9.726371930 - 0.1 10 I > lambda2:=evalf(ev[2][1]); -9 lambda2 := -2.614172526 + 0.3 10 I > lambda3:=evalf(ev[3][1]); -9 lambda3 := 1.887800596 + 0.3 10 I > v1:=op(evalf(ev[1][3])); [ -8 v1 := [1., 0.010067585 + 0.1167378045 10 I, -8 ] 2.902078919 - 0.10 10 I] > v2:=op(evalf(ev[2][3])); [ -9 v2 := [1., -1.281600203 + 0.4344431585 10 I, -9 ] -0.3503240395 - 0.14 10 I] > v3:=op(evalf(ev[3][3])); [ -9 v3 := [1., 2.214389760 + 0.2029131122 10 I, -10 ] -1.180326309 + 0.1 10 I] > # Megjegyzés. Látszik, hogy az I-k kerekítési hibák a komplex > számokkal való > # számolási hibák miatt. Eltüntethetők az evalc-vel, pl.: > evalc(ev[3][1]); 1/2 1/2 2 439 -13 cos(1/3 arctan(--------)) + 3 21 1/2 1/2 1/2 2 439 + 3 13 sin(1/3 arctan(--------)) 21 > lambda3:=evalf(evalc(ev[3][1])); lambda3 := 1.887800597 > #Egy ellenőrzés, pl. a második párosé: > evalf(evalm(A&*v2-lambda2*v2)); [ -8 -9 -8 [0.2 10 + 0.1488863170 10 I, 0. + 0.1660189430 10 I, -8 -9 ] 0.17 10 - 0.9464437833 10 I]