Mάθημα 6 : παράγωγος
( Προσαρμογή του άρθρου "Εννοια παραγώγου" Ι.Γαλιδάκη)
Παράγωγος
Ξεκινάμε με την έννοια της παραγώγου όπως αυτή παρουσιάζεται στον ορισμό. Ας πάρουμε για παράδειγμα μία απλή συνάρτηση, την x^3.
> f:=x->x^3;
Ας δούμε τώρα την κλίση της ευθείας που ενώνει δύο σημεία P=(x, f(x)) και Q=(x+h, f(x+h)) κοντά στο σημείο που μας ενδιαφέρει.
> q:=(f(x+h)-f(x))/h;
H παράγωγος τώρα στο σημείο x0, θα είναι ίση με το όριο της έκφρασης q, όταν το h τείνει στο 0.
> limit(q,h=0);
Ας δούμε μία λίγο πιο πολύπλοκη συνάρτηση.
> f:=x->x^5-3*x^3+x-2;
> q:=(f(x+h)-f(x))/h;
> limit(q,h=0);
Ας δούμε τώρα μία συνάρτηση που έχει πρόβλημα στο 0.
> f:=x->abs(x);
> q:=(f(x+h)-f(x))/h;
> subs(x=0,q);
> r:=abs(h)/h;
> limit(r,h=0);
Και το όριο είναι απροσδιόριστο, επειδή τα δεξιά και αριστερά όρια είναι διαφορετικά.
> limit(r,h=0, left);
> limit(r,h=0,right);
Η Maple όμως μπορεί να θεωρήσει και την παράγωγο μίας συνάρτησης απ' ευθείας αν μπορεί να την υπολογίσει.
> f:=x->x^5-3*x^3+x-2;
> plot([f(x),D(f)(x)],x=-5..5);
> f:=x->sin(1/x);
> D(f);
> plot([f(x),D(f)(x)],x=1..10);
Aς δούμε τώρα ένα κλασσικό παράδειγμα, όπου νομίζουμε ότι το πρόγραμμα κάνει λάθος, ενώ στην ουσία κάνουμε εμείς λάθος. Ας υποθέσουμε ότι.
> f:=x->x^2*sin(1/x);
Θέλουμε λοιπόν να βρούμε την παράγωγο στο 0. Ξεκινάμε με τον ορισμό.
> q:=(f(x+h)-f(x))/h;
Ζητάμε τώρα το όριο όταν το h->0.
> limit(%,h=0);
>
Και τωρα ζητάμε το όριο όταν το x->0.
> limit(%,x=0);
>
Το αποτέλεσμα είναι φυσικά... λάθος! Η συνάρτηση έχει παράγωγο 0 στο 0. Ας δούμε το γράφημα. Βλέπουμε πως η συνάρτήσεις x^2 και -x^2 "πιέζουν" από πάνω και κάτω την sin(1/x) και αυτή αναγκάζεται να σταθεροποιήσει την παράγωγό της στο 0.
> plot({f(x),x^2,-x^2},x=-0.2..0.2);
Πού είναι λοιπόν το λάθος; Απλά, ζητήσαμε από το πρόγραμμα να μας βρεί ΠΡΩΤΑ το όριο για h->0, και ΕΠΕΙΤΑ για x->0. Mα, αν βρούμε πρώτα το όριο h->0 για x<>0, αυτή θα είναι η παράγωγος για x<>0. Kαι η παράγωγος για x=0 πρέπει πρώτα να οριστεί στο 0! Ας δούμε λοιπόν τον σωστό τρόπο, λαμβάνοντας υπ' όψιν ότι f(0)=0!!
> q:=(f(h)-0)/h;
> limit(%,h=0);
Η Maple μπορεί χρησιμοποιώντας τον τελεστή "D" να υπολογίσει και παραγώγους τάξης ανώτερης του 1. Για παράδειγμα:
> f:=x->sin(x)+3*cos(3*x^2)*x^2;
Παράγωγοι ανώτερης τάξης
Πρώτα η πρώτη παράγωγος.
> D(f);
Για να υπολογίσουμε ανώτερες παραγώγους, εφαρμόζουμε τον τελεστή "D" μαζί με τον τελεστή "@@" ακολουθούμενο από τον δείκτη τάξης.
> (D@@2)(f);
> (D@@4)(f);
H τέταρτη παράγωγος, φυσικά, παρουσιάζει πολύ μεγάλη διακύμανση.
> plot([f(x),(D@@3)(f)(x)],x=-5..5,y=-40..40);
Kαι μερικές παράγωγοι ανώτερης τάξης, ορισμένων στοιχειωδών συναρτήσεων.
> a=2; f:=x->a^x;
> (D@@2)(f);
> (D@@3)(f);
> (D@@4)(f);
> a:=3.4; f:=x->x^a;
> g:=x->((D@@2)(f))(x);
> plot(g,-3..3 );
Παράγωγος αντιστρόφου συνάρτησης
Για να δούμε τι γίνεται με την παράγωγο της αντίστροφης συνάρτησης, όταν αυτή υπάρχει. Ας δούμε την συνάρτηση x^2.
> f:=x->x^2;
Η συνάρτηση unapply, απλά υποχρεώνει την απεικόνιση x->y όπως ακριβώς γίνεται με τον τελεστή ->. Παρατηρήστε ότι ο ορισμός της αντιστροφης γίνεται όπως ακριβώς θα θέλαμε. Μέσω της (πιθανής) επίλυσης της εξίσωσης x=f(y). H συνάρτηση "RootOf" δεν είναι τίποτε το ιδιαίτερο. Απλά είναι ένας τρόπος συμβολικής διαχείρισης των ριζών μίας εξίσωσης.
> finv:=unapply(-RootOf(x=f(y),y),x); #επιστρέφει την αρνητική ρίζα (βγάλε το -)
> plot([f,finv], 0..5,0..5, scaling=CONSTRAINED);
> finv(x);
> D(finv);
Εδώ παρατηρήστε ότι ουσιαστικα, το αποτέλεσμα συμφωνεί με τον τύπο παραγώγου του αντιστρόφου, που είναι 1/f'(f^(-1)(x)). Ένα πιο δύσκολο παράδειγμα.
> f:=x->cos(x)+arccosh(x);
> finv:=unapply(RootOf(x=f(y),y),x);
> D(finv);
Παράγωγος έκφρασης
> y(x):= exp(-0.6*x^2 ); plot(y(x),x=-3..3, 0..1.1);
> yd(x):= diff(y(x),x);
> plot(yd(x),x=-3..3);
Περισσότερες παράγωγοι με την βοήθεια του $:
> yd3(x):= diff(y(x),x,x,x); yd3r(x):=diff(y(x),x$3);
> F:= x^2+w^2-1 =0; implicitdiff( F ,w,x); # παράγωγος πεπλεγμένης συνάρτησης