Μάθημα 3 : Συναρτήσεις

> x := 3;

x := 3

> cos(x); tan(x);

cos(3)

tan(3)

> evalf(%);

-.1425465431

> y := { cos(x), sin(x), abs(1-x), ln(x), sqrt(x), tan(x), sinh(x), exp(x), power(x,5)};

y := {2, cos(3), tan(3), sin(3), ln(3), sinh(3), ex...

> evalf(y);

{2., -.1425465431, 1.732050808, 243., 20.08553692, ...

Αυτές είναι οι προκαθορισμένες, γνωστές συναρτήσεις. Μπορεί κανείς να ορίσει δικές του:

> f := x->x^2; g:= x-> 1/(1+x^2);

f := proc (x) options operator, arrow; x^2 end proc...

g := proc (x) options operator, arrow; 1/(1+x^2) en...

> plot([f, g], -2..2, color=[black,blue], style=[line,line], thickness = [2,4]);

[Maple Plot]

> myEqua := {f(z)-g(z)=0};

myEqua := {z^2-1/(1+z^2) = 0}

> solve( myEqua,{x} );

Error, (in solve) a constant is invalid as a variable, 3

> mySolutions := solve( myEqua,{z} ); # δεν αναγνώριζε το x σαν μεταβλητή

mySolutions := {z = -1/2*sqrt(-2+2*sqrt(5))}, {z = ...

> mySolutions[3];

{z = -1/2*sqrt(-2-2*sqrt(5))}

> type(%,realcons); # δεν είναι πραγματική

false

> subs( mySolutions[1] , myEqua ); # επαλήθευση της εξίσωσης από την πρώτη λύση που βρήκε

{-1/2+1/2*sqrt(5)-1/(1/2+1/2*sqrt(5)) = 0}

Δύο ακόμη συναρτήσεις.

> ff:=w->(w^2+3*w)/(w^4+w+1);

ff := proc (w) options operator, arrow; (w^2+3*w)/(...

> plot(ff,-infinity..infinity);

[Maple Plot]

> plot( arctan, -infinity..infinity ); #από τις συναρτήσεις που έχει έτοιμες η Maple

[Maple Plot]

> # ?inifcns; # βγάλτε το πρώτο # και εκτελέστε για να δείτε τις έτοιμες προς χρήση συναρτήσεις

Eξετάζω την σύνθεση συναρτήσεων φ(φ(φ...φ(x))...).

> myfun:= x->cos(x); myfun5:= myfun@@5;

myfun := cos

myfun5 := `@@`(cos,5)

> myfun(Pi); myfun5(Pi);

-1

`@@`(cos,4)(1)

> myBigFun := (N,x)->(myfun@@N)(x);

myBigFun := proc (N, x) options operator, arrow; `@...

Η επόμενη ακολουθία αριθμών είναι η {xN = cos(cos(....cos(0)...)) (N φορές) }. Τι παρατηρείς?

> seq( evalf(myBigFun(N,0)) , N=1..65 ); # αντικατάστησε το 0 με οτιδήποτε, αύξησε το Ν

1., .5403023059, .8575532158, .6542897905, .7934803...
1., .5403023059, .8575532158, .6542897905, .7934803...
1., .5403023059, .8575532158, .6542897905, .7934803...
1., .5403023059, .8575532158, .6542897905, .7934803...
1., .5403023059, .8575532158, .6542897905, .7934803...
1., .5403023059, .8575532158, .6542897905, .7934803...
1., .5403023059, .8575532158, .6542897905, .7934803...

> myId:= x->x; myFun:= x->cos(x);

myId := proc (x) options operator, arrow; x end pro...

myFun := cos

> plot([myId, myFun], -3..3, color=[green,blue], style=[line,line], thickness = [2,4]);

>

[Maple Plot]

> solve( myId(x)-myFun(x)=0, x );

Error, (in solve) a constant is invalid as a variable, 3

> solve( (myId-myFun)(x)=0, x );

Error, (in solve) a constant is invalid as a variable, 3

> allvalues(%);

[Maple Plot]

Τι συμπέρασμα βγαίνει απ' αυτό και τα προηγούμενα? Τι παριστάνει το μυστήριο 0.7390851332 ; Πως να πάρω ενδείξεις αν είναι ρητός ή άρρητος;

Συναρτήσεις που ορίζονται από πολυώνυμα:

> restart;

> myPol:= x-> x^4-6*x^3-2*x^2-x-5; # πολυωνιμική συνάρτηση

myPol := proc (x) options operator, arrow; x^4-6*x^...

> ekfrasi := x^4-6*x^3-2*x^2-x-5; # πολυωνιμική παράσταση

ekfrasi := x^4-6*x^3-2*x^2-x-5

> plot(ekfrasi, -4..7); # δεν αναγνωρίζει σαν συνάρτηση

Plotting error, empty plot

> plot(myPol, -4..7);

[Maple Plot]

Σε αντίθεση με τις συναρτήσεις, πολυωνυμικές εκφράσεις μπορούμε να τις διερευνήσουμε ως προς τον βαθμό, συντελεστές κτλ.

> deg:= degree(ekfrasi,x);

deg := 4

> coeffs(ekfrasi,x); # δίνει τους συντελεστές αλλά χωρίς διάταξη

-5, -6, -2, -1, 1

> seq( coeff( ekfrasi, x, i ), i=0..deg ); # κατ' αύξουσα διάταξη

-5, -1, -2, -6, 1

> solve(ekfrasi, x);

RootOf(_Z^4-6*_Z^3-2*_Z^2-_Z-5,index = 1), RootOf(_...
RootOf(_Z^4-6*_Z^3-2*_Z^2-_Z-5,index = 1), RootOf(_...

> solve( myPol(x)=0, x );

RootOf(_Z^4-6*_Z^3-2*_Z^2-_Z-5,index = 1), RootOf(_...
RootOf(_Z^4-6*_Z^3-2*_Z^2-_Z-5,index = 1), RootOf(_...

> fsolve(ekfrasi, x); fsolve( myPol(x)=0, x ); # πραγματικές (αριθμητικές) ρίζες

-.9438047762, 6.358708896

-.9438047762, 6.358708896

> fsolve(ekfrasi, x, complex ); # όλες οι ρίζες πραγματικές + μιγαδικές

-.9438047762, .2925479401-.8646140396*I, .292547940...

Στις εκφράσεις γίνονται αντικαταστάσεις μεταβλητής, τυπικές και αριθμητικές

> subs(x=t,ekfrasi);

t^4-6*t^3-2*t^2-t-5

> subs(x=1, ekfrasi);

-13

> subs( x=1, myPol ); #όμως σε συναρτήσεις

myPol

> subs( x=t, myPol );

myPol

> ekfr2:= x*(x-2)+m; #ομως αν σε συνάρτηση υπάρχει παράμετρος, γίνεται αντικατάσταση

ekfr2 := x*(x-2)+m

> fun2:= x->ekfr2(x);

fun2 := x*(x-2)+m

> m:=-1;

m := -1

> ekfr2;

x*(x-2)-1

> fun2;

x*(x-2)-1

> plot(fun2(x), x=-2..2); # ομως αποτυγχάνει η ...

[Maple Plot]

> plot(fun2, -2..2); #δεν γίνεται όταν η συνάρτηση ορίζεται μέσω έκφρασης

Plotting error, empty plot

Χρειάζεται λοιπόν διάκριση του πότε έχω μιά συνάρτηση και πότε μιά αλγεβρική παράσταση (έκφραση) με κάποιες σταθερές και κάποιες μεταβλητές.

> expand(ekfrasi^2);

25-12*x^7+32*x^6+22*x^5+x^8+64*x^3+21*x^2+10*x+6*x^...

> degree(%);

8

> expand(myPol^2);

myPol^2

> degree(%);

2

> eval(ekfrasi(t));

x(t)^4-6*x(t)^3-2*x(t)^2-x(t)-5

> eval(myPol(t));

t^4-6*t^3-2*t^2-t-5

> evalf(ekfrasi(1));

x(1)^4-6.*x(1)^3-2.*x(1)^2-1.*x(1)-5.

> evalf(myPol(1));

-13.

Μετατροπή μιάς έκφρασης σε συνάρτηση:

> polFun:= unapply( ekfrasi, x );

polFun := proc (x) options operator, arrow; x^4-6*x...

> evalf(polFun(1));

-13.

Ο κανόνας λοιπόν είναι να κάνω απλοποιήσεις, πράξεις, παραγοντοποιήσεις αλγεβρικές με εκφράσεις και όταν θέλω την αντίστοιχη συνάρτηση (π.χ. για να κάνω το γράφημα) να εφαρμόζω την "unapply", όπως προηγουμένως, και να ορίζω την αντίστοιχη πολυωνυμική συνάρτηση.

> aa:=3; bb:=-5;

aa := 3

bb := -5

> cladotiSynartisi := x->piecewise( x<=0,-x^2, 0<x and x<=2, aa*x^2+bb*x, 4-x^2/2 );

cladotiSynartisi := proc (x) options operator, arro...

> plot( cladotiSynartisi, -2..4);

[Maple Plot]

Εντολή που ορίζει μιά κλαδωτή συνάρτηση. Δηλαδή, συνάρτηση που δίνεται από διαφορετικούς τύπους σε διαφορετικά διαστήματα.