)read z9.input -- Uwaga: Część lini od podwójnego minusa do końca to komentarz. -- Zadanie 1 -- Funkcja sprawdzająca czy pochodna cząstkowa po y nie znika, -- długa wersja. rozw1p(f, p) == print(message("funkcja f =")$OutputForm) print(f) print(message("wartość f w p")$OutputForm) print(eval(f, [x, y], p)) print(message("D(f, y) =")$OutputForm) print(D(f, y)) print(message("wartość D(f, y) w p")$OutputForm) print(eval(D(f, y), [x, y], p)) Type: Void -- Funkcja sprawdzająca czy pochodna cząstkowa po y nie znika, -- krótka wersja, wypisuje wartość w punkcie i wartość pochodnej. rozw1(f, p) == [eval(f, [x, y], p), eval(D(f, y), [x, y], p)] Type: Void -- Punkt a f := x^4*y + x*y^3 -10 3 4 (3) x y + x y - 10 Type: Polynomial(Integer) rozw1p(f, [1, 2]) Compiling function rozw1p with type (Polynomial(Integer), List( PositiveInteger)) -> Void funkcja f = 3 4 x y + x y - 10 wartość f w p 0 D(f, y) = 2 4 3 x y + x wartość D(f, y) w p 13 Type: Void rozw1(f, [1, 2]) Compiling function rozw1 with type (Polynomial(Integer), List( PositiveInteger)) -> List(Polynomial(Integer)) (5) [0, 13] Type: List(Polynomial(Integer)) -- Punkt b f := x^y - y^x x y (6) - y + x Type: Expression(Integer) rozw1(f, [2, 4]) Compiling function rozw1 with type (Expression(Integer), List( PositiveInteger)) -> List(Expression(Integer)) (7) [0, 16 log(2) - 8] Type: List(Expression(Integer)) rozw1(f, [3, 3]) (8) [0, 27 log(3) - 27] Type: List(Expression(Integer)) -- punkt nie na krzywej rozw1(f, [2, 5]) (9) [7, 32 log(2) - 10] Type: List(Expression(Integer)) -- Punkt c f := x^2 + y^2 - 2*x*y 2 2 (10) y - 2 x y + x Type: Polynomial(Integer) -- pochodne są zerowe rozw1(f, [1, 1]) (11) [0, 0] Type: List(Polynomial(Integer)) rozw1(f, [0, 0]) Compiling function rozw1 with type (Polynomial(Integer), List( NonNegativeInteger)) -> List(Polynomial(Integer)) (12) [0, 0] Type: List(Polynomial(Integer)) -- rozkładamy na czynniki, wielomian jest kwadratem factor(f) 2 (13) (y - x) Type: Factored(Polynomial(Integer)) -- badamy czynnik f := y - x (14) y - x Type: Polynomial(Integer) rozw1(f, [1, 1]) (15) [0, 1] Type: List(Polynomial(Integer)) rozw1(f, [0, 0]) (16) [0, 1] Type: List(Polynomial(Integer)) -- Punkt d f := x^4 + y^4 - 2*x^2*y^2 4 2 2 4 (17) y - 2 x y + x Type: Polynomial(Integer) -- pochodne są zerowe rozw1(f, [1, 1]) (18) [0, 0] Type: List(Polynomial(Integer)) rozw1(f, [0, 0]) (19) [0, 0] Type: List(Polynomial(Integer)) -- rozkładamy na czynniki, wielomian jest kwadratem produktu funkcji -- liniowych factor(f) 2 2 (20) (y - x) (y + x) Type: Factored(Polynomial(Integer)) -- badamy produkt f := (y - x)*(y + x) 2 2 (21) y - x Type: Polynomial(Integer) rozw1(f, [1, 1]) (22) [0, 2] Type: List(Polynomial(Integer)) -- tu dalej pochodna jest zerowa rozw1(f, [0, 0]) (23) [0, 0] Type: List(Polynomial(Integer)) -- Punkt e f := x^2 + y^2 - 2*x 2 2 (24) y + x - 2 x Type: Polynomial(Integer) rozw1(f, [1, 1]) (25) [0, 2] Type: List(Polynomial(Integer)) -- tu pochodna jest zerowa rozw1(f, [0, 0]) (26) [0, 0] Type: List(Polynomial(Integer)) -- Punkt f f := x^2 +y^2 - x -2*x*y 2 2 (27) y - 2 x y + x - x Type: Polynomial(Integer) rozw1(f, [1, 0]) (28) [0, - 2] Type: List(Polynomial(Integer)) -- tu pochodna zerowa rozw1(f, [0, 0]) (29) [0, 0] Type: List(Polynomial(Integer)) -- Punkt g f := x^3 - y^3 + x - y 3 3 (30) - y - y + x + x Type: Polynomial(Integer) -- wychodzi wynik który nie ma zer rozw1(f, [p, p]) Compiling function rozw1 with type (Polynomial(Integer), List( Variable(p))) -> List(Polynomial(Integer)) 2 (31) [0, - 3 p - 1] Type: List(Polynomial(Integer)) -- Punkt h f := x^4 + y^4 - 2*x*y 4 4 (32) y - 2 x y + x Type: Polynomial(Integer) rozw1(f, [1, 1]) (33) [0, 2] Type: List(Polynomial(Integer)) -- tu pochodna zerowa rozw1(f, [0, 0]) (34) [0, 0] Type: List(Polynomial(Integer)) -- Zadanie 2 -- obliczamy gradient jako listę pochodnych cząstkowych df(f) == [D(f, x), D(f, y), D(f, z)] Type: Void -- funkcja z punktu a f := x^2*z + y*z^2 - 2 2 2 (36) y z + x z - 2 Type: Polynomial(Integer) -- wartość funkcji w punkcie eval(f, [x, y, z], [sqrt(2), 0, 1]) (37) 0 Type: Polynomial(AlgebraicNumber) -- sprawdzamy obliczanie gradientu df(f) Compiling function df with type Polynomial(Integer) -> List( Polynomial(Integer)) 2 2 (38) [2 x z, z , 2 y z + x ] Type: List(Polynomial(Integer)) -- obliczamy warość gradientu w punkcie p edf(f, p) == [eval(fi, [x, y, z], p) for fi in df(f)] Type: Void -- wartość gradientu w p edf(f, [sqrt(2), 0, 1]) Compiling function edf with type (Polynomial(Integer), List( AlgebraicNumber)) -> List(Polynomial(AlgebraicNumber)) +-+ (40) [2 \|2 , 1, 2] Type: List(Polynomial(AlgebraicNumber)) -- pomocnicza funkcja obliczająca wyraz wolny w równaniu płaszczyzny -- stycznej c(l, p) == l(1)*p(1) + l(2)*p(2) + l(3)*p(3) Type: Void w(f, p) == -c(edf(f, p), p) Type: Void -- obliczamy wyraz wolny w(f, [sqrt(2), 0, 1]) Compiling function c with type (List(Polynomial(AlgebraicNumber)), List(AlgebraicNumber)) -> Polynomial(AlgebraicNumber) Compiling function w with type (Polynomial(Integer), List( AlgebraicNumber)) -> Polynomial(AlgebraicNumber) (43) - 6 Type: Polynomial(AlgebraicNumber) -- Punkt b, A = (0, 1, 1) f := exp(x*z) - y*z x z (44) %e - y z Type: Expression(Integer) p := [0, 1, 1] (45) [0, 1, 1] Type: List(NonNegativeInteger) edf(f, p) Compiling function df with type Expression(Integer) -> List( Expression(Integer)) Compiling function edf with type (Expression(Integer), List( NonNegativeInteger)) -> List(Expression(Integer)) (46) [1, - 1, - 1] Type: List(Expression(Integer)) w(f, p) Compiling function c with type (List(Expression(Integer)), List( NonNegativeInteger)) -> Expression(Integer) Compiling function w with type (Expression(Integer), List( NonNegativeInteger)) -> Expression(Integer) (47) 2 Type: Expression(Integer) -- B = (1, e, 1) p := [1, %e, 1] (48) [1, %e, 1] Type: List(Expression(Integer)) edf(f, p) Compiling function edf with type (Expression(Integer), List( Expression(Integer))) -> List(Expression(Integer)) (49) [%e, - 1, 0] Type: List(Expression(Integer)) w(f, p) Compiling function c with type (List(Expression(Integer)), List( Expression(Integer))) -> Expression(Integer) Compiling function w with type (Expression(Integer), List(Expression (Integer))) -> Expression(Integer) (50) 0 Type: Expression(Integer) -- Punkt c, A = (0, 0, 0) f := x^2 + y^3 + z^4 - x - z 4 3 2 (51) z - z + y + x - x Type: Polynomial(Integer) p := [0, 0, 0] (52) [0, 0, 0] Type: List(NonNegativeInteger) eval(f, [x, y, z], p) (53) 0 Type: Polynomial(Integer) edf(f, p) Compiling function edf with type (Polynomial(Integer), List( NonNegativeInteger)) -> List(Polynomial(Integer)) (54) [- 1, 0, - 1] Type: List(Polynomial(Integer)) w(f, p) Compiling function c with type (List(Polynomial(Integer)), List( NonNegativeInteger)) -> Polynomial(Integer) Compiling function w with type (Polynomial(Integer), List( NonNegativeInteger)) -> Polynomial(Integer) (55) 0 Type: Polynomial(Integer) -- B = (1, 0, 0) p := [1, 0, 0] (56) [1, 0, 0] Type: List(NonNegativeInteger) eval(f, [x, y, z], p) (57) 0 Type: Polynomial(Integer) edf(f, p) (58) [1, 0, - 1] Type: List(Polynomial(Integer)) w(f, p) (59) - 1 Type: Polynomial(Integer) -- C = (1, 0, 1) p := [1, 0, 1] (60) [1, 0, 1] Type: List(NonNegativeInteger) eval(f, [x, y, z], p) (61) 0 Type: Polynomial(Integer) edf(f, p) (62) [1, 0, 3] Type: List(Polynomial(Integer)) w(f, p) (63) - 4 Type: Polynomial(Integer) -- Zadanie 3, wzór na pochodną dy(f) == -D(f, x)/D(f, y) Type: Void d2y(f) == (-D(f, y)^2*D(f, x, 2) - D(f, x)^2*D(f, y, 2) + _ 2*D(f, y)*D(f, x)*D(f, [x ,y]))/D(f, y)^3 Type: Void -- punkt a f := x*exp(y) - y + 1 y (66) x %e - y + 1 Type: Expression(Integer) dy(f) Compiling function dy with type Expression(Integer) -> Expression( Integer) y %e (67) - --------- y x %e - 1 Type: Expression(Integer) d2y(f) Compiling function d2y with type Expression(Integer) -> Expression( Integer) y 3 y 2 x (%e ) - 2 (%e ) (68) ----------------------------------- 3 y 3 2 y 2 y x (%e ) - 3 x (%e ) + 3 x %e - 1 Type: Expression(Integer) -- punkt b f := x^2 + y^2 - 3*x*y 2 2 (69) y - 3 x y + x Type: Polynomial(Integer) dy(f) Compiling function dy with type Polynomial(Integer) -> Fraction( Polynomial(Integer)) 3 y - 2 x (70) --------- 2 y - 3 x Type: Fraction(Polynomial(Integer)) d2y(f) Compiling function d2y with type Polynomial(Integer) -> Fraction( Polynomial(Integer)) 2 2 10 y - 30 x y + 10 x (71) ------------------------------- 3 2 2 3 8 y - 36 x y + 54 x y - 27 x Type: Fraction(Polynomial(Integer)) -- punkt c f := x - y + exp(x) - exp(y) y x (72) - %e + %e - y + x Type: Expression(Integer) dy(f) x %e + 1 (73) ------- y %e + 1 Type: Expression(Integer) -- porównujemy z jawnym rozwiązaniem eval(%, y = x) (74) 1 Type: Expression(Integer) d2y(f) x y 2 x 2 y x %e (%e ) + (- (%e ) - 1)%e + %e (75) ----------------------------------- y 3 y 2 y (%e ) + 3 (%e ) + 3 %e + 1 Type: Expression(Integer) -- porównujemy z jawnym rozwiązaniem eval(%, y = x) (76) 0 Type: Expression(Integer) -- Zadanie 4, wyznaczamy punkty podejrzane metodą mnożników Lagrange'a -- Punkt a f := x^2 + y^2 + 4*y - x*y - 2*x 2 2 (77) y + (- x + 4)y + x - 2 x Type: Polynomial(Integer) dfx := D(f, x) (78) - y + 2 x - 2 Type: Polynomial(Integer) dfy := D(f, y) (79) 2 y - x + 4 Type: Polynomial(Integer) -- gradient y to [0, 1], stąd 1 w ostatnim równaniu eqs := [f, -l*dfx, 1 - l*dfy] (80) 2 2 [y + (- x + 4)y + x - 2 x, l y - 2 l x + 2 l, - 2 l y + l x - 4 l + 1] Type: List(Polynomial(Integer)) solve(eqs) 2 (81) [[y = 8 l - 2, x = 4 l, 12 l - 1 = 0]] Type: List(List(Equation(Fraction(Polynomial(Integer))))) -- Punkt b f := x^3 + y^3 - 12*x*y 3 3 (82) y - 12 x y + x Type: Polynomial(Integer) dfx := D(f, x) 2 (83) - 12 y + 3 x Type: Polynomial(Integer) dfy := D(f, y) 2 (84) 3 y - 12 x Type: Polynomial(Integer) eqs := [f, -l*dfx, 1 - l*dfy] 3 3 2 2 (85) [y - 12 x y + x , 12 l y - 3 l x , - 3 l y + 12 l x + 1] Type: List(Polynomial(Integer)) solve(eqs) 2 3 (86) [[y = 384 l, x = 18432 l , 221184 l - 1 = 0]] Type: List(List(Equation(Fraction(Polynomial(Integer))))) -- punkt c f := (1/2)*log(x^2 + y^2) - atan(y/x) 2 2 y log(y + x ) - 2 atan(-) x (87) ------------------------ 2 Type: Expression(Integer) dfx := D(f, x) y + x (88) ------- 2 2 y + x Type: Expression(Integer) dfy := D(f, y) y - x (89) ------- 2 2 y + x Type: Expression(Integer) eqs := [f, -l*dfx, 1 - l*dfy] 2 2 y log(y + x ) - 2 atan(-) 2 2 x - l y - l x y - l y + x + l x (90) [------------------------, -----------, -------------------] 2 2 2 2 2 y + x y + x Type: List(Expression(Integer)) -- zauważamy że y = -x i podstawiamy za y [eval(fi, [y = -x]) for fi in eqs] 2 2 log(2 x ) + %pi x + l (91) [-----------------, 0, -----] 4 x Type: List(Expression(Integer)) solve(%(1), x) +-----+ +-----+ | 2 | 2 |----- |----- | %pi | %pi | --- | --- | 2 | 2 \|%e \|%e (92) [x = - --------, x = --------] 2 2 Type: List(Equation(Expression(Integer))) -- Zadanie 5 f := x^4 + y^4 - 9*x*y 4 4 (93) y - 9 x y + x Type: Polynomial(Integer) dfx := D(f, x) 3 (94) - 9 y + 4 x Type: Polynomial(Integer) dfy := D(f, y) 3 (95) 4 y - 9 x Type: Polynomial(Integer) eqs := [f, -l*dfx, 1 - l*dfy] 4 4 3 3 (96) [y - 9 x y + x , 9 l y - 4 l x , - 4 l y + 9 l x + 1] Type: List(Polynomial(Integer)) solve(eqs) 5 7 129140163 l 94143178827 l 8 (97) [[y = ------------, x = --------------, 847288609443 l - 1 = 0]] 2 2 Type: List(List(Equation(Fraction(Polynomial(Integer)))))