# Kétváltozós függvények

/*
Itt vannak a jelek, amiket tudsz másolni, ha nem találod a gépeden, hogy hol lehet beírni:
Műveleti jelek: 
Összeadás: +
Kivonás: - 
Szorzás: *
Osztás: /
Hatványozás: ^
Relációjelek: < >
Zárójel: ()
Vessző: ,
Pont: .
Pontos vessző: ; 
Kettőspont: :
Dollárjel: $
Gyökvonás: sqrt()
n-edik gyök: x^(1/n)
log() függvény ln() függvényt jelent, log_2-t csak azonosság segítségével lehet felírni
Szürke betűszínnel szerepelnek a megjegyzések, csak azt kell kitölteni, ahova oda van írva, több sorhoz nem kell hozzányúlni
Ha beírtad 3-féleképpen tudod futtatni:
1) felül vannak zöld nyilak, a jobbra mutató nyílra kattints rá, és lefuttatja, fontos, hogy bele legyél kattintva a tömbbe
2) Shift+Enter-rel is le tudod futtatni, itt is fontos, hogy bele legyél kattintva a tömbbe
3) Ha van a billentyűzeteted jobb szélén enter, akkor annak a megnyomásával is tudod futtatni, 
itt is bele kell, hogy legyél kattintva a tömbbe
Sorok végén vagy pontosvessző vagy dollárjel van, pontosvesszőnél kiírja annak a sornak az eredményét, dollárjelnél elrejti
Állandók beírása: 
pi: %pi
e: %e
i: %i  (komplex szám képzetes egység)
*/

## Parciális deriválás

kill(all)$
ratprint: false$
fpprintprec: 5$
f(x,y):=y*log(2*x+3*y)$ /*Ezt töltsd ki*/
a:x=3$ /*Ezt töltsd ki*/
b:y=7$/*Ezt töltsd ki*/
"Elsőrendű parciális deriváltak:";
fx:diff(f(x,y),x,1);
fy:diff(f(x,y),y,1);
"Másodrendű parciális deriváltak:";
fxx:diff(f(x,y),x,2);
fyy:diff(f(x,y),y,2);
fxy:diff(fx,y,1);
fyx:diff(fy,x,1);
"Elsőrendű parciális deriváltak értékei:";
fxérték:at(fx,[a,b]);
fyérték:at(fy,[a,b]);
"Másodrendű parciális deriváltak értékei:";
fyyérték:at(fxx,[a,b]);
fyyérték:at(fyy,[a,b]);
fxyérték:at(fxy,[a,b]);
fyxérték:at(fyx,[a,b]);

## Lokális szélsőérték 1 megoldás

kill(all)$
ratprint: false$
fpprintprec: 5$
realonly:true$
f(x,y):=2*x^2+2*y^2+2*x*y-2*x+2*y+17$ /*Ezt töltsd ki*/
"Elsőrendű parciális deriváltak:";
fx:diff(f(x,y),x,1);
fy:diff(f(x,y),y,1);
"Egyenletrendszer:"$
e1:fx=0$
e2:fy=0$
"Egyenletrendszer megoldásai:";
egyenletmegoldás:algsys([e1, e2], [x,y])$
P1segéd:matrix([x,y])$
P1pont:subst(egyenletmegoldás[1],P1segéd);
"Másodrendű parciális deriváltak:";
fxx:diff(f(x,y),x,2);
fyy:diff(f(x,y),y,2);
fxy:diff(fx,y,1);
fyx:diff(fy,x,1);
fmatrix:matrix([fxx,fxy],[fyx,fyy]);
fmatrixP1:subst(egyenletmegoldás[1],fmatrix);
"fxx*fyy-fxy*fyx kiszámítása:";
P1:determinant(fmatrixP1);
if P1<0 then "P1 pont nyeregpont" else if fmatrixP1[1,1]>0 then "P1 pont lokális minimum" else "P1 pont lokális maximum";
P1z:subst(egyenletmegoldás[1],f(x,y))$
P1koordináta:matrix([P1pont[1,1],P1pont[1,2],P1z])$
wxplot3d(f(x,y), [x,-10,10], [y,-10,10])$

## Lokális szélsőérték 2 megoldás

kill(all)$
ratprint: false$
fpprintprec: 5$
realonly:true$
f(x,y):=2*x^2+2*y^2+2*x*y-2*x+2*y+17$ /*Ezt töltsd ki*/
"Elsőrendű parciális deriváltak:";
fx:diff(f(x,y),x,1);
fy:diff(f(x,y),y,1);
"Egyenletrendszer:"$
e1:fx=0$
e2:fy=0$
"Egyenletrendszer megoldásai:";
egyenletmegoldás:algsys([e1, e2], [x,y])$
P1segéd:matrix([x,y])$
P1pont:subst(egyenletmegoldás[1],P1segéd);
P2segéd:matrix([x,y])$
P2pont:subst(egyenletmegoldás[2],P2segéd);
"Másodrendű parciális deriváltak:";
fxx:diff(f(x,y),x,2);
fyy:diff(f(x,y),y,2);
fxy:diff(fx,y,1);
fyx:diff(fy,x,1);
fmatrix:matrix([fxx,fxy],[fyx,fyy]);
fmatrixP1:subst(egyenletmegoldás[1],fmatrix);
fmatrixP2 :subst(egyenletmegoldás[2],fmatrix);
"fxx*fyy-fxy*fyx kiszámítása:";
P1:determinant(fmatrixP1);
P2:determinant(fmatrixP2);
if P1<0 then "P1 pont nyeregpont" else if fmatrixP1[1,1]>0 then "P1 pont lokális minimum" else "P1 pont lokális maximum";
if P2<0 then "P2 pont nyeregpont" else if fmatrixP2[1,1]>0 then "P2 pont lokális minimum" else "P2 pont lokális maximum";
P1z:subst(egyenletmegoldás[1],f(x,y))$
P2z:subst(egyenletmegoldás[2],f(x,y))$
P1koordináta:matrix([P1pont[1,1],P1pont[1,2],P1z])$
P2koordináta:matrix([P2pont[1,1],P2pont[1,2],P2z])$
wxplot3d(f(x,y), [x,-10,10], [y,-10,10])$

## Lokális szélsőérték 3 megoldás

kill(all)$
ratprint: false$
fpprintprec: 5$
realonly:true$
f(x,y):=11-3*x*y^2+9*x^2-6*x^3-3*y^2$ /*Ezt töltsd ki*/
"Elsőrendű parciális deriváltak:";
fx:diff(f(x,y),x,1);
fy:diff(f(x,y),y,1);
"Egyenletrendszer:";
e1:fx=0$
e2:fy=0$
"Egyenletrendszer megoldásai:";
egyenletmegoldás:algsys([e1, e2], [x,y])$
P1segéd:matrix([x,y])$
P1pont:subst(egyenletmegoldás[1],P1segéd);
P2segéd:matrix([x,y])$
P2pont:subst(egyenletmegoldás[2],P2segéd);
P3segéd:matrix([x,y])$
P3pont:subst(egyenletmegoldás[3],P3segéd);
"Másodrendű parciális deriváltak:";
fxx:diff(f(x,y),x,2);
fyy:diff(f(x,y),y,2);
fxy:diff(fx,y,1);
fyx:diff(fy,x,1);
fmatrix:matrix([fxx,fxy],[fyx,fyy]);
fmatrixP1:subst(egyenletmegoldás[1],fmatrix);
fmatrixP2 :subst(egyenletmegoldás[2],fmatrix);
fmatrixP3 :subst(egyenletmegoldás[3],fmatrix);
"fxx*fyy-fxy*fyx kiszámítása:";
P1:determinant(fmatrixP1);
P2:determinant(fmatrixP2);
P3:determinant(fmatrixP3);
if P1<0 then "P1 pont nyeregpont" else if fmatrixP1[1,1]>0 then "P1 pont lokális minimum" else "P1 pont lokális maximum";
if P2<0 then "P2 pont nyeregpont" else if fmatrixP2[1,1]>0 then "P2 pont lokális minimum" else "P2 pont lokális maximum";
if P3<0 then "P3 pont nyeregpont" else if fmatrixP3[1,1]>0 then "P3 pont lokális minimum" else "P3 pont lokális maximum";
P1z:subst(egyenletmegoldás[1],f(x,y))$
P2z:subst(egyenletmegoldás[2],f(x,y))$
P3z:subst(egyenletmegoldás[3],f(x,y))$
P1koordináta:matrix([P1pont[1,1],P1pont[1,2],P1z])$
P2koordináta:matrix([P2pont[1,1],P2pont[1,2],P2z])$
P3koordináta:matrix([P3pont[1,1],P3pont[1,2],P3z])$
wxplot3d(f(x,y), [x,-10,10], [y,-10,10])$

## Kétváltozós integrálás

kill(all)$
ratprint: false$
fpprintprec: 5$
realonly:true$
f(x,y):=x^3+y^2+5*x*y$ /*Ezt töltsd ki*/
/*Úgy töltsd ki, hogy "a" és "b" a belső integrál határai ("a" a kisebb "b" a nagyobb ), c és d pedig a külső integrál határai ("c" a kisebb "d" a nagyobb)*/
a:1$  /*Ezt töltsd ki*/
b:2$  /*Ezt töltsd ki*/
c:3$  /*Ezt töltsd ki*/
d:4$  /*Ezt töltsd ki*/
eredmény:integrate(integrate(f(x,y), x, a, b),y,c,d);
eredményérték:float(eredmény);