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); # παράγωγος πεπλεγμένης συνάρτησης