# Kedvenc Matematikai Kísérleteim

## Alapok

## Halmazok

### Halmazelméleti alapfogalmak  2.1.26 Feladat

### Relációk

### Descartes-szorzat és reláció

kill(all);

p:[a,b]; p[1]; p[2];

A:{a,b}; B:{c,d,e}; cartesian_product(A,B); 
cartesian_product(A,A,B);

A lambda egy (névtelen) függvényt ad meg.  Első változója
a függvény változóinek listája, a második a kifejezés, amely
a függvény értékét adja.

subset(%,lambda([x],is(x[1]=x[2])));

### Megjegyzés

is({x,y}={y,x});

is({{x},{x,y}}={{y},{x,y}});

### Binér relációk

kill(all);

A:{1,3}; B:powerset(A); 

C:cartesian_product(B,B);

D:subset(%,lambda([x],subsetp(x[1],x[2])));

diagrel(X):=map(lambda([x],[x,x]),X)$

diagrel(A);

binrelp(R):=block([x],
    for x in R do if not listp(x) or lengh(x)#2
    then return(false),true)$

binrelp(D);

Az előző függvény azt vizsgálja meg, hogy a
bemenete kettő hosszú listákat tartalmaz-e?
Ha igen, az eredmény true. Ilyenfajta függvények
nagyon hasznosak, ha függvényeinket
és programjainkat ,,majombiztossá'' akarjuk
tenni.  Tulajdonképpen a binrelp sem
,,majombiztosra'' van megírva, mert első dolga
az kellene legyen, hogy megvizsgálja,
egy bemenetet kapott-e, és az halmaz-e?
Természetesen ez a ,,majombiztos'' stílus
lényegesen meghosszabbítja és nehezen
olvashatóbbá teszi a programokat, ezért
mellőzzük. Ha azonban nem szemléltetésre,
hanem ,,üzemi'' használatra szánt
programokat akarunk írni, akkor a ,,majombiztos''
stílus az ajánlatos, mert egyébként
nem megfelelő bemenet kellemetlen
meglepetéseket és hosszadalmas hibakeresést
eredményezhet.

A binrelp függvényt úgy is meg lehetne írni,
hogy változó számú bemenettel dolgozzon.
Ha második X és harmadik Y bemenetet is
kap, amelyek halmazok, azt is megvizsgálja,
hogy R egy X és Y közötti reláció-e?

### Relációk gráfja

### Feladat

load("implicit_plot")$

(1)

implicit_plot(y=x,[x,-4,4],[y,-4,4])$

implicit_plot(y=x^2,[x,-4,4],[y,-4,4])$

implicit_plot(y=x^3,[x,-4,4],[y,-4,4])$

implicit_plot(y=x^4,[x,-4,4],[y,-4,4])$

implicit_plot(y=x^5,[x,-4,4],[y,-4,4])$

implicit_plot(y=x^6,[x,-4,4],[y,-4,4])$

implicit_plot(y=x^(-1),[x,-4,4],[y,-4,4])$

implicit_plot(y=x^(-2),[x,-4,4],[y,-4,4])$

implicit_plot(y=x^(-3),[x,-4,4],[y,-4,4])$

implicit_plot(y=x^(-4),[x,-4,4],[y,-4,4])$

(2)

implicit_plot(y^2=x,[x,-4,4],[y,-4,4])$

implicit_plot(yi^3=x,[x,-4,4],[y,-4,4])$

implicit_plot(y^4=x,[x,-4,4],[y,-4,4])$

implicit_plot(y^5=x,[x,-4, 4],[y,-4,4])$

(3)

implicit_plot(y^2=x^3,[x,-4,4],[y,-4,4])$

(4)

implicit_plot(y^2=x,[x,-4,4],[y,-4,4])$

implicit_plot(y^2=x^3,[x,-4,4],[y,-4,4])$

implicit_plot(y^3=x,[x,-4,4],[y,-4,4])$

implicit_plot(y^3=x^2,[x,-4,4],[y,-4,4])$

implicit_plot(y^3=x^4,[x,-4,4],[y,-4,4])$

implicit_plot(y^4=x^2,[x,-4,4],[y,-4,4])$

implicit_plot(y^4=x^3,[x,-4,4],[y,-4,4])$

(5)

implicit_plot(x*y=1+x^2,[x,-8,8],[y,-8,8])$

(6)

implicit_plot(x*y=1+x^3,[x,-8,8],[y,-8,8])$

(7)

implicit_plot(y*x^2=1+x^3,[x,-4,4],[y,-4,4])$

(8)

implicit_plot(y*(1+x^2)=1,[x,-4,4],[y,-4,4])$

(9)

implicit_plot(y*(1+x^2)=2*x,[x,-4,4],[y,-4,4])$

(10)

implicit_plot(y*(1-x^2)=1,[x,-4,4],[y,-4,4])$

(11)

implicit_plot(y*(1-x^2)=x,[x,-4,4],[y,-4,4])$

(12)

implicit_plot(y^2=-x-2,[x,-8,8],[y,-8,8])$

(13)

implicit_plot(4*y^2+x^2=100,[x,-10,10],[y,-5,5])$

  2.1.26 Feladat

(14)

implicit_plot(y^2=x^2-1,[x,-4,4],[y,-4,4])$

(15)

implicit_plot(y^2*(1+x)=1-x,[x,-4,4],[y,-4,4])$

(16)

implicit_plot(y^2=x^2*(100-x^2),[x,-4,4],[y,-4,4])$

(17)

implicit_plot(y^2*(10-x)=x^3,[x,-4,4], [y,-4,4])$

(18)

n:1;
implicit_plot(abs(y)^n+abs(x)^n=1,
    [x,-1,1],[y,-1,1],same -->  :step;_xy)$

n:2;
implicit_plot(abs(y)^n+abs(x)^n=1,
    [x,-1,1],[y,-1,1],same_xy)$

n:3;
implicit_plot(abs(y)^n+ab -->   :step;s(x)^n=1,
    [x,implicit_plot(x^3+y^3=3*x*y,
    [x,-4,4],[y,-4,4],same_xy)$-1,1],[y,-1,1],same_xy)$

n:4;
implicit_plot(abs(y)^n+abs(x)^n=1,
    [x,-1,1],[y,-1,1],same_xy)$

n:5;
implicit_plot(abs(y)^n+abs(x)^n=1,
    [x,-1,1],[y,-1,1],same_xy)$

n:1/2; -->  :step;
implicit_plot(abs(y)^n+abs(x)^n=1,
    [x,-1,1],[y,-1,1],same_xy)$

n:1/3;
implicit_plot(abs(y)^n+abs(x)^n=1,
    [x,-1,1],[y,-1,1],same_xy)$

n:1/4;
implicit_plot(abs(y)^n+abs(x)^n=1,
    [x,-1,1],[y,-1,1],same_xy)$

implicit_plot(max(abs(y),abs(x))=1,
    [x,-1,1],[y,-1,1],same_xy)$

(20)

implicit_plot(xy=floor(x),
    [x,-4,4],[y,-4,4],same_xy)$

### Feladat

(1)

plot2d([parametric,1-t,1-t^2,[t,-4,4]])$

(2)

plot2d([parametric,t+1/t,t+1/t^2,[t,-4,4]])$

(3)

plot2d([parametric,10*cos(t),sin(t),
        [t,-4,4]])$

(4)

plot2d([parametric,5*cos(t)^2,3*sin(t)^2,[t,-4,4]])$

(5)

plot2d([parametric,2*(t-sin(t)),2*(1-cos(t)),
            [t,-8,8]],same_xy)$

### Feladat

(1)

implicit_plot(x^3+y^3=3*x*y,
    [x,-4,4],[y,-4,4],same_xy)$

r:3*sin(t)*cos(t)/(sin(t)^3+cos(t)^3);

plot2d([parametric,r*cos(t),r*sin(t),
        [t,0,%pi/2]],same_xy)$

(2)

implicit_plot(x^2+y^2=x^4+y^4,
    [x,-2,2],[y,-2,2],same_xy)$

r:(sin(t)^4+cos(t)^4)^(-1/2);

plot2d([parametric,r*cos(t),r*sin(t),
        [t,-4,4]],same_xy)$

(3)

implicit_plot(x^2*y^2=x^3-y^3,
    [x,-4,4],[y,-4,4],same_xy)$

r:(cos(t)^3-sin(t)^3)/(sin(t)^2*cos(t)^2);

plot2d([parametric,r*cos(t),r*sin(t),
        [t,0.2,1]],same_xy)$

(4)

implicit_plot(x^(2/3)+y^(2/3)=1,
    [x,-1,1],[y,-1,1],same_xy)$

r:(sin(t)^(2/3)+cos(t)^(2/3))^(-3/2);

plot2d([parametric,r*cos(t),r*sin(t),
        [t,-4,4]],same_xy)$

### Feladat

implicit_plot(x^y=y^x,
    [x,0,5],[y,0,5],same_xy)$

x^(1/x)=y^(1/y); y/x=log(y)/log(x);

Vagy x=y vagy ha x<y, akkor x=(1+1/t)^t és y=(1+1/t)^(t+1).

plot2d([[parametric,t,t,[t,0,5]],
    [parametric,(1+1/t)^t,(1+1/t)^(t+1),[t,1,5]],
    [parametric,(1+1/t)^(t+1),(1+1/t)^t,[t,1,5]]]
    ,same_xy)$

### Értelmezési tartomány, értékkészlet

kill(all);

R:{[1,a],[2,b],[3,d],[2,d],[4,a]};

dmn(X):=map(lambda([x],x[1]),X)$

dmn(R);

rng(X):=map(lambda([x],x[2]),X)$

rng(R);

### Feladat

### Feladat

### Kiterjesztés, leszűkítés

restrict(R,X):=subset(R,lambda([x],
        elementp(x[1],X)))$

R; restrict(R,{1,2,4});

### Inverz

relinv(R):=map(lambda([x],[x[2],x[1]]),R)$

S:relinv(R);

dmn(R); rng(R); dmn(S); rng(S);

### Halmaz képe és inverz képe

mapset(R,A):=rng(restrict(R,A))$

mapset(R,{1,2}); mapset(R,{4}); 
mapset(R,{5});

invmapset(R,B):=rng(restrict(relinv(R),B))$

invmapset(R,{a,b});

### Feladat

### Feladat

### Feladat

### Feladat

### Feladat

### Kompozíció

relcomp(R,S):=block([r,s,T],
    T:{},for s in S do for r in R do 
      if s[2]=r[1] then T:adjoin([s[1],r[2]],T),
    T)$

S:{[xx,1],[yy,3],[zz,5]}; relcomp(R,S);

R; S:{[aa,1],[aa,2],[bb,3],[cc,4],[dd,5]};

rng(relcomp(R,S)); rng(R);

T:{[xx,aa],[xx,cc]}; relcomp(R,relcomp(S,T)); 
relcomp(relcomp(R,S),T);

relinv(relcomp(R,S)); 
relcomp(relinv(S),relinv(R));

### Feladat

### Állítás

diagrel(X):=map(lambda([x],[x,x]),X)$

R; IX:diagrel({1,2,3,4,5});
relcomp(R,IX); IY:diagrel({a,b,c,d,e}); 
relcomp(IY,R);

### Állítás

### Rendezés

transitivep(R):=block([r,s],
  for r in R do for s in R do 
    if r[2]=s[1] and not elementp([r[1],s[2]],R) 
    then return(false),
true)$

Az alábbi reláció az "osztója" reláció.

X:{1,2,3,4,5,6}; XX:cartesian_product(X,X)$
D:subset(XX,lambda([x],is(mod(x[2],x[1])=0)));
transitivep(D);

trichotomp(R,X):=block([r,x,y,XX],
  r:true,XX:listify(X),
  for x in XX do for y in XX do
    if ((is(x=y) and elementp([x,y],R)) or
    (elementp([x,y],R) and elementp([y,x],R)) or
    (x#y and not elementp([x,y],R) and 
      not elementp([y,x],R)) )
     then (r:false, return(false)),return(r)
)$

D; trichotomp(D,X);

D:setdifference(D,diagrel(X));

transitivep(D);

trichotomp(D,X);

### Példa

### Feladat

### Feladat

### Intervallumok

### Legkisebb és legnagyobb elem

### Példák

### Korlátok

### Feladat

X:{1,2,4}; D:{[1,2],[2,4],[1,4]};
transitivep(D); trichotomp(D,X);

### Feladat

### Feladat

### Feladat

### Jólrendezés

### Példa

### Feladat

### Feladat

### Feladat

### Feladat

### Ekvivalenciareláció, osztályozás

### Példa

S:{1,2,3,4,5}; 

equiv_classes(S,lambda([x,y],oddp(x)=oddp(y)));

### Feladat